scipion-pyworkflow 3.9.2__tar.gz → 3.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 (168) hide show
  1. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/CHANGES.txt +5 -0
  2. {scipion_pyworkflow-3.9.2/scipion_pyworkflow.egg-info → scipion_pyworkflow-3.10.1}/PKG-INFO +1 -1
  3. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/constants.py +1 -1
  4. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/executor.py +10 -10
  5. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/protocol.py +20 -9
  6. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/path.py +3 -2
  7. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/utils.py +3 -1
  8. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1/scipion_pyworkflow.egg-info}/PKG-INFO +1 -1
  9. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/LICENSE.txt +0 -0
  10. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/MANIFEST.in +0 -0
  11. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/README.rst +0 -0
  12. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/__init__.py +0 -0
  13. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/__init__.py +0 -0
  14. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_manager.py +0 -0
  15. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_plot.py +0 -0
  16. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_project.py +0 -0
  17. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_protocol_list.py +0 -0
  18. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_protocol_run.py +0 -0
  19. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_run_tests.py +0 -0
  20. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_schedule_run.py +0 -0
  21. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_sleep.py +0 -0
  22. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_sync_data.py +0 -0
  23. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/apps/pw_viewer.py +0 -0
  24. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/config.py +0 -0
  25. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/exceptions.py +0 -0
  26. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/__init__.py +0 -0
  27. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/browser.py +0 -0
  28. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/canvas.py +0 -0
  29. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/dialog.py +0 -0
  30. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/form.py +0 -0
  31. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/graph.py +0 -0
  32. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/graph_layout.py +0 -0
  33. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/gui.py +0 -0
  34. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/matplotlib_image.py +0 -0
  35. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/plotter.py +0 -0
  36. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/__init__.py +0 -0
  37. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/base.py +0 -0
  38. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/constants.py +0 -0
  39. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/labels.py +0 -0
  40. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/project.py +0 -0
  41. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/searchprotocol.py +0 -0
  42. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/searchrun.py +0 -0
  43. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/steps.py +0 -0
  44. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/utils.py +0 -0
  45. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/variables.py +0 -0
  46. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/viewdata.py +0 -0
  47. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/viewprojects.py +0 -0
  48. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/viewprotocols.py +0 -0
  49. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/project/viewprotocols_extra.py +0 -0
  50. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/text.py +0 -0
  51. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/tooltip.py +0 -0
  52. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/tree.py +0 -0
  53. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/gui/widgets.py +0 -0
  54. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/mapper/__init__.py +0 -0
  55. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/mapper/mapper.py +0 -0
  56. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/mapper/sqlite.py +0 -0
  57. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/mapper/sqlite_db.py +0 -0
  58. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/object.py +0 -0
  59. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/plugin.py +0 -0
  60. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/__init__.py +0 -0
  61. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/config.py +0 -0
  62. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/manager.py +0 -0
  63. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/project.py +0 -0
  64. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/clean_projects.py +0 -0
  65. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/config.py +0 -0
  66. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/create.py +0 -0
  67. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/edit_workflow.py +0 -0
  68. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/fix_links.py +0 -0
  69. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/load.py +0 -0
  70. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/refresh.py +0 -0
  71. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/schedule.py +0 -0
  72. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/stack2volume.py +0 -0
  73. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/project/scripts/stop.py +0 -0
  74. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/__init__.py +0 -0
  75. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/bibtex.py +0 -0
  76. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/constants.py +0 -0
  77. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/hosts.py +0 -0
  78. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/launch.py +0 -0
  79. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/package.py +0 -0
  80. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/protocol/params.py +0 -0
  81. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/Imagej.png +0 -0
  82. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/chimera.png +0 -0
  83. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/fa-exclamation-triangle_alert.png +0 -0
  84. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/fa-info-circle_alert.png +0 -0
  85. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/fa-search.png +0 -0
  86. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/fa-times-circle_alert.png +0 -0
  87. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/file_vol.png +0 -0
  88. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/loading.gif +0 -0
  89. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/no-image128.png +0 -0
  90. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_bn.png +0 -0
  91. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_icon.png +0 -0
  92. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_icon.svg +0 -0
  93. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_icon_proj.png +0 -0
  94. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_icon_projs.png +0 -0
  95. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_icon_prot.png +0 -0
  96. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_logo.png +0 -0
  97. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_logo_normal.png +0 -0
  98. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/scipion_logo_small.png +0 -0
  99. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/arrowDown.png +0 -0
  100. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/arrowUp.png +0 -0
  101. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/background_section.png +0 -0
  102. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/colRowModeOff.png +0 -0
  103. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/colRowModeOn.png +0 -0
  104. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/delete.png +0 -0
  105. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/doc_icon.png +0 -0
  106. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/download_icon.png +0 -0
  107. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/enabled_gallery.png +0 -0
  108. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/galleryViewOff.png +0 -0
  109. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/galleryViewOn.png +0 -0
  110. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/goto.png +0 -0
  111. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/menu.png +0 -0
  112. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/separator.png +0 -0
  113. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/tableViewOff.png +0 -0
  114. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/tableViewOn.png +0 -0
  115. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  116. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  117. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  118. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/volumeOff.png +0 -0
  119. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/showj/volumeOn.png +0 -0
  120. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/sprites.png +0 -0
  121. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/sprites.xcf +0 -0
  122. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/resources/wait.gif +0 -0
  123. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/template.py +0 -0
  124. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/tests/__init__.py +0 -0
  125. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/tests/test_utils.py +0 -0
  126. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/tests/tests.py +0 -0
  127. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/__init__.py +0 -0
  128. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/dataset.py +0 -0
  129. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/echo.py +0 -0
  130. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/graph.py +0 -0
  131. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/log.py +0 -0
  132. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/process.py +0 -0
  133. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/profiler.py +0 -0
  134. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/progressbar.py +0 -0
  135. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/properties.py +0 -0
  136. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/reflection.py +0 -0
  137. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/utils/which.py +0 -0
  138. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/viewer.py +0 -0
  139. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/webservices/__init__.py +0 -0
  140. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/webservices/config.py +0 -0
  141. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/webservices/notifier.py +0 -0
  142. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/webservices/repository.py +0 -0
  143. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/webservices/workflowhub.py +0 -0
  144. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflow/wizard.py +0 -0
  145. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/__init__.py +0 -0
  146. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/bibtex.py +0 -0
  147. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/objects.py +0 -0
  148. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/protocols.py +0 -0
  149. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/__init__.py +0 -0
  150. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_canvas.py +0 -0
  151. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_domain.py +0 -0
  152. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_logs.py +0 -0
  153. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_mappers.py +0 -0
  154. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_object.py +0 -0
  155. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_project.py +0 -0
  156. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_protocol_execution.py +0 -0
  157. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_protocol_export.py +0 -0
  158. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_protocol_output.py +0 -0
  159. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_streaming.py +0 -0
  160. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/pyworkflowtests/tests/test_utils.py +0 -0
  161. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/requirements.txt +0 -0
  162. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/scipion_pyworkflow.egg-info/SOURCES.txt +0 -0
  163. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/scipion_pyworkflow.egg-info/dependency_links.txt +0 -0
  164. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/scipion_pyworkflow.egg-info/entry_points.txt +0 -0
  165. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/scipion_pyworkflow.egg-info/requires.txt +0 -0
  166. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/scipion_pyworkflow.egg-info/top_level.txt +0 -0
  167. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/setup.cfg +0 -0
  168. {scipion_pyworkflow-3.9.2 → scipion_pyworkflow-3.10.1}/setup.py +0 -0
@@ -1,3 +1,8 @@
1
+ V3.10.1: hotfix: Avoid double Gpu assignment in scipion parallelize protocols with concurrent GPU steps
2
+ V3.10.0
3
+ developers:
4
+ - stepsExecutionMode = STEPS_SERIAL at class level. Should a class attribute for future versions. Now both approaches are valid.
5
+
1
6
  V3.9.2 - hotfix: rescue commented methods: Protocol._insertRunJobStep and Protocol._insertCopyFileStep
2
7
  V3.9.1 - hotfix: loading related objects (CTF - Mics in particle extraction)
3
8
  V3.9.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scipion-pyworkflow
3
- Version: 3.9.2
3
+ Version: 3.10.1
4
4
  Summary: Simple workflow platform used in scientific applications, initially developed within the Scipion framework for image processing in Electron Microscopy.
5
5
  Home-page: https://github.com/scipion-em/scipion-pyworkflow
6
6
  Author: J.M. De la Rosa Trevin, Roberto Marabini, Grigory Sharov, Josue Gomez Blanco, Pablo Conesa, Yunior Fonseca Reyna
@@ -43,7 +43,7 @@ VERSION_1 = '1.0.0'
43
43
  VERSION_1_1 = '1.1.0'
44
44
  VERSION_1_2 = '1.2.0'
45
45
  VERSION_2_0 = '2.0.0'
46
- VERSION_3_0 = '3.9.2'
46
+ VERSION_3_0 = '3.10.1'
47
47
 
48
48
  # For a new release, define a new constant and assign it to LAST_VERSION
49
49
  # The existing one has to be added to OLD_VERSIONS list.
@@ -144,9 +144,9 @@ class StepExecutor:
144
144
 
145
145
  class StepThread(threading.Thread):
146
146
  """ Thread to run Steps in parallel. """
147
- def __init__(self, thId, step, lock):
147
+ def __init__(self, step, lock):
148
148
  threading.Thread.__init__(self)
149
- self.thId = thId
149
+ self.thId = step.getObjId()
150
150
  self.step = step
151
151
  self.lock = lock
152
152
 
@@ -262,7 +262,7 @@ class ThreadStepExecutor(StepExecutor):
262
262
  return []
263
263
  else:
264
264
  return gpus
265
- def getFreeGpuSlot(self, nodeId=None):
265
+ def getFreeGpuSlot(self, stepId=None):
266
266
  """ Returns a free gpu slot available or None. If node is passed it also reserves it for that node
267
267
 
268
268
  :param node: node to make the reserve of Gpus
@@ -272,10 +272,10 @@ class ThreadStepExecutor(StepExecutor):
272
272
  if node < 0:
273
273
  gpus = self.gpuDict[node]
274
274
 
275
- if nodeId is not None:
275
+ if stepId is not None:
276
276
  self.gpuDict.pop(node)
277
- self.gpuDict[nodeId] = gpus
278
- logger.info("GPUs %s assigned to thread %s" % (gpus, nodeId))
277
+ self.gpuDict[stepId] = gpus
278
+ logger.info("GPUs %s assigned to step %s" % (gpus, stepId))
279
279
  else:
280
280
  logger.info("Free gpu slot found at %s" % node)
281
281
  return gpus
@@ -288,14 +288,14 @@ class ThreadStepExecutor(StepExecutor):
288
288
  if gpus is not None:
289
289
  self.gpuDict.pop(node)
290
290
  self.gpuDict[-node-1] = gpus
291
- logger.info("GPUs %s freed from thread %s" % (gpus, node))
291
+ logger.info("GPUs %s freed from step %s" % (gpus, node))
292
292
  else:
293
- logger.debug("node %s not found in GPU slots" % node)
293
+ logger.debug("step id %s not found in GPU slots" % node)
294
294
 
295
295
  def _isStepRunnable(self, step):
296
296
  """ Overwrite this method to check GPUs availability"""
297
297
 
298
- if self.gpuList and step.needsGPU() and self.getFreeGpuSlot() is None:
298
+ if self.gpuList and step.needsGPU() and self.getFreeGpuSlot(step.getObjId()) is None:
299
299
  logger.info("Can't run step %s. Needs gpus and there are no free gpu slots" % step)
300
300
  return False
301
301
 
@@ -361,7 +361,7 @@ class ThreadStepExecutor(StepExecutor):
361
361
  node = freeNodes.pop(0) # take an available node
362
362
  runningSteps[node] = step
363
363
  logger.debug("Running step %s on node %s" % (step, node))
364
- t = StepThread(node, step, sharedLock)
364
+ t = StepThread(step, sharedLock)
365
365
  # won't keep process up if main thread ends
366
366
  t.daemon = True
367
367
  t.start()
@@ -358,6 +358,22 @@ class Protocol(Step):
358
358
  _package = None
359
359
  _plugin = None
360
360
 
361
+ # Maybe this property can be inferred from the
362
+ # prerequisites of steps, but is easier to keep it
363
+ stepsExecutionMode = STEPS_SERIAL
364
+
365
+ @classmethod
366
+ def modeSerial(cls):
367
+ """ Returns true if steps are run one after another"""
368
+ # Maybe this property can be inferred from the
369
+ # prerequisites of steps, but is easier to keep it
370
+ return cls.stepsExecutionMode == STEPS_SERIAL
371
+
372
+ @classmethod
373
+ def modeParallel(cls):
374
+ """ Returns true if steps are run in parallel"""
375
+ return not cls.modeSerial()
376
+
361
377
  def __init__(self, **kwargs):
362
378
  Step.__init__(self, **kwargs)
363
379
  self._size = None
@@ -410,9 +426,6 @@ class Protocol(Step):
410
426
  if not hasattr(self, 'hostFullName'):
411
427
  self.hostFullName = String()
412
428
 
413
- # Maybe this property can be inferred from the
414
- # prerequisites of steps, but is easier to keep it
415
- self.stepsExecutionMode = STEPS_SERIAL
416
429
 
417
430
  # Run mode
418
431
  self.runMode = Integer(kwargs.get('runMode', MODE_RESUME))
@@ -1315,7 +1328,7 @@ class Protocol(Step):
1315
1328
  prot_id=self.getObjId(),
1316
1329
  prot_name=self.getClassName(),
1317
1330
  step_id=step._index))
1318
- if step.isFailed() and self.stepsExecutionMode == STEPS_PARALLEL:
1331
+ if step.isFailed() and self.modeParallel():
1319
1332
  # In parallel mode the executor will exit to close
1320
1333
  # all working threads, so we need to close
1321
1334
  self._endRun()
@@ -2433,7 +2446,7 @@ def runProtocolMain(projectPath, protDbPath, protId):
2433
2446
  executor = None
2434
2447
  nThreads = max(protocol.numberOfThreads.get(), 1)
2435
2448
 
2436
- if protocol.stepsExecutionMode == STEPS_PARALLEL and nThreads > 1:
2449
+ if protocol.modeParallel() and nThreads > 1:
2437
2450
  if protocol.useQueueForSteps():
2438
2451
  executor = QueueStepExecutor(hostConfig,
2439
2452
  protocol.getSubmitDict(),
@@ -2451,6 +2464,7 @@ def runProtocolMain(projectPath, protDbPath, protId):
2451
2464
  executor = StepExecutor(hostConfig,
2452
2465
  gpuList=protocol.getGpuList())
2453
2466
 
2467
+ logger.info("Running protocol using the %s executor." % executor)
2454
2468
  protocol.setStepsExecutor(executor)
2455
2469
  # Finally run the protocol
2456
2470
  protocol.run()
@@ -2529,10 +2543,7 @@ class ProtStreamingBase(Protocol):
2529
2543
  Minimum number of threads is 3 and should run in parallel mode.
2530
2544
  """
2531
2545
 
2532
- def __init__(self, **kwargs):
2533
-
2534
- super().__init__()
2535
- self.stepsExecutionMode = STEPS_PARALLEL
2546
+ stepsExecutionMode = STEPS_PARALLEL
2536
2547
  def _insertAllSteps(self):
2537
2548
  # Insert the step that generates the steps
2538
2549
  self._insertFunctionStep(self.resumableStepGeneratorStep, str(datetime.now()), needsGPU=False)
@@ -292,10 +292,11 @@ def createAbsLink(source, dest):
292
292
  """ Creates a link to a given file path"""
293
293
  if os.path.islink(dest):
294
294
  os.remove(dest)
295
-
295
+
296
296
  if os.path.exists(dest):
297
297
  raise Exception('Destination %s os.path.exists and is not a link' % dest)
298
-
298
+
299
+ source = os.path.abspath(source)
299
300
  os.symlink(source, dest)
300
301
 
301
302
 
@@ -498,7 +498,9 @@ class LazyDict(object):
498
498
  def parseBibTex(bibtexStr):
499
499
  """ Parse a bibtex file and return a dictionary. """
500
500
 
501
- return bibtexparser.loads(bibtexStr).entries_dict
501
+ return bibtexparser.loads(bibtexStr,
502
+ parser=bibtexparser.bparser.BibTexParser(common_strings=True)
503
+ ).entries_dict
502
504
 
503
505
 
504
506
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scipion-pyworkflow
3
- Version: 3.9.2
3
+ Version: 3.10.1
4
4
  Summary: Simple workflow platform used in scientific applications, initially developed within the Scipion framework for image processing in Electron Microscopy.
5
5
  Home-page: https://github.com/scipion-em/scipion-pyworkflow
6
6
  Author: J.M. De la Rosa Trevin, Roberto Marabini, Grigory Sharov, Josue Gomez Blanco, Pablo Conesa, Yunior Fonseca Reyna