cubevis 0.5.12__tar.gz → 0.5.13__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 (163) hide show
  1. {cubevis-0.5.12 → cubevis-0.5.13}/PKG-INFO +1 -1
  2. cubevis-0.5.13/cubevis/private/casatasks/__init__.py +30 -0
  3. {cubevis-0.5.12 → cubevis-0.5.13}/pyproject.toml +1 -1
  4. cubevis-0.5.12/cubevis/private/__java__/xml-casa-assembly-1.86.jar +0 -0
  5. cubevis-0.5.12/cubevis/private/casatasks/__init__.py +0 -140
  6. {cubevis-0.5.12 → cubevis-0.5.13}/LICENSE +0 -0
  7. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/LICENSE.rst +0 -0
  8. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/20px/fast-backward.svg +0 -0
  9. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/20px/fast-forward.svg +0 -0
  10. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/20px/step-backward.svg +0 -0
  11. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/20px/step-forward.svg +0 -0
  12. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/add-chan.png +0 -0
  13. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/add-chan.svg +0 -0
  14. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/add-cube.png +0 -0
  15. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/add-cube.svg +0 -0
  16. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/drag.png +0 -0
  17. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/drag.svg +0 -0
  18. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/mask-selected.png +0 -0
  19. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/mask.png +0 -0
  20. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/mask.svg +0 -0
  21. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/new-layer-sm-selected.png +0 -0
  22. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/new-layer-sm-selected.svg +0 -0
  23. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/new-layer-sm.png +0 -0
  24. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/new-layer-sm.svg +0 -0
  25. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/reset.png +0 -0
  26. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/reset.svg +0 -0
  27. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/sub-chan.png +0 -0
  28. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/sub-chan.svg +0 -0
  29. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/sub-cube.png +0 -0
  30. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/sub-cube.svg +0 -0
  31. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/zoom-to-fit.png +0 -0
  32. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__icons__/zoom-to-fit.svg +0 -0
  33. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__init__.py +0 -0
  34. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__js__/bokeh-3.6.1.min.js +0 -0
  35. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__js__/bokeh-tables-3.6.1.min.js +0 -0
  36. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__js__/bokeh-widgets-3.6.1.min.js +0 -0
  37. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__js__/casalib.min.js +0 -0
  38. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/__js__/cubevisjs.min.js +0 -0
  39. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/__init__.py +0 -0
  40. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/annotations/__init__.py +0 -0
  41. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/annotations/_ev_poly_annotation.py +0 -0
  42. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/components/__init__.py +0 -0
  43. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/format/__init__.py +0 -0
  44. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/format/_time_ticks.py +0 -0
  45. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/format/_wcs_ticks.py +0 -0
  46. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/models/__init__.py +0 -0
  47. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/models/_edit_span.py +0 -0
  48. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/models/_ev_text_input.py +0 -0
  49. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/models/_tip.py +0 -0
  50. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/models/_tip_button.py +0 -0
  51. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/sources/__init__.py +0 -0
  52. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/sources/_data_pipe.py +0 -0
  53. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/sources/_image_data_source.py +0 -0
  54. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/sources/_image_pipe.py +0 -0
  55. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/sources/_spectra_data_source.py +0 -0
  56. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/sources/_updatable_data_source.py +0 -0
  57. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/__init__.py +0 -0
  58. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/_initialize.py +0 -0
  59. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/_javascript.py +0 -0
  60. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/_palette.py +0 -0
  61. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/_session.py +0 -0
  62. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/bokeh-2.4.1.min.js +0 -0
  63. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/bokeh-gl-2.4.1.min.js +0 -0
  64. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/bokeh-tables-2.4.1.min.js +0 -0
  65. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/bokeh-widgets-2.4.1.min.js +0 -0
  66. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/casaguijs-v0.0.4.0-b2.4.min.js +0 -0
  67. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/casaguijs-v0.0.5.0-b2.4.min.js +0 -0
  68. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/casaguijs-v0.0.6.0-b2.4.min.js +0 -0
  69. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/state/js/casalib-v0.0.1.min.js +0 -0
  70. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/tools/__init__.py +0 -0
  71. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/tools/_cbreset_tool.py +0 -0
  72. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/tools/_drag_tool.py +0 -0
  73. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/utils/__init__.py +0 -0
  74. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/utils/_axes_labels.py +0 -0
  75. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/bokeh/utils/_svg_icon.py +0 -0
  76. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/__init__.py +0 -0
  77. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/casaimage/__init__.py +0 -0
  78. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/__init__.py +0 -0
  79. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/_ms_data.py +0 -0
  80. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/__init__.py +0 -0
  81. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_concat.py +0 -0
  82. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_coords.py +0 -0
  83. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_data.py +0 -0
  84. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_io.py +0 -0
  85. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_raster_data.py +0 -0
  86. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_select.py +0 -0
  87. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_ps_stats.py +0 -0
  88. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/data/measurement_set/processing_set/_xds_data.py +0 -0
  89. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/__init__.py +0 -0
  90. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/__init__.py +0 -0
  91. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/_ms_plot.py +0 -0
  92. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/_ms_plot_constants.py +0 -0
  93. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/_ms_plot_selectors.py +0 -0
  94. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/_raster_plot.py +0 -0
  95. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/_raster_plot_inputs.py +0 -0
  96. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/plot/ms_plot/_xds_plot_axes.py +0 -0
  97. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/_gclean.py +0 -0
  98. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/__init__.py +0 -0
  99. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_createmask.py +0 -0
  100. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_createregion.py +0 -0
  101. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_interactiveclean.mustache +0 -0
  102. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_interactiveclean.py +0 -0
  103. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_interactiveclean_wrappers.py +0 -0
  104. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_ms_raster.py +0 -0
  105. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_plotants.py +0 -0
  106. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/apps/_plotbandpass.py +0 -0
  107. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/casashell/createmask.py +0 -0
  108. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/casashell/iclean.py +0 -0
  109. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/casatasks/createmask.py +0 -0
  110. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/casatasks/createregion.py +0 -0
  111. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/private/casatasks/iclean.py +0 -0
  112. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/readme.rst +0 -0
  113. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/remote/__init__.py +0 -0
  114. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/remote/_gclean.py +0 -0
  115. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/remote/_local.py +0 -0
  116. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/remote/_remote_kernel.py +0 -0
  117. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/toolbox/__init__.py +0 -0
  118. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/toolbox/_app_context.py +0 -0
  119. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/toolbox/_cube.py +0 -0
  120. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/toolbox/_region_list.py +0 -0
  121. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_ResourceManager.py +0 -0
  122. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/__init__.py +0 -0
  123. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_contextmgrchain.py +0 -0
  124. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_conversion.py +0 -0
  125. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_copydoc.py +0 -0
  126. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_docenum.py +0 -0
  127. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_import_protected_module.py +0 -0
  128. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_logging.py +0 -0
  129. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_pkgs.py +0 -0
  130. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_regions.py +0 -0
  131. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_static.py +0 -0
  132. {cubevis-0.5.12 → cubevis-0.5.13}/cubevis/utils/_tiles.py +0 -0
  133. {cubevis-0.5.12 → cubevis-0.5.13}/readme.rst +0 -0
  134. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/alma-many-chan/alma-many-chan.py +0 -0
  135. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/basic-websockets-demo/client.html +0 -0
  136. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/basic-websockets-demo/client.py +0 -0
  137. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/basic-websockets-demo/server.py +0 -0
  138. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/createmask-demo/run-createmask.py +0 -0
  139. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/createregion-demo/run-createregion.py +0 -0
  140. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/cubemask-demo/image-slider-spectra-done-stats.py +0 -0
  141. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/cubemask-demo/image-slider-spectra-done.py +0 -0
  142. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/cubemask-demo/image-slider-spectra.py +0 -0
  143. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/cubemask-demo/image-slider.py +0 -0
  144. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/cubemask-demo/image.py +0 -0
  145. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-demo/m100_interactive.py +0 -0
  146. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-demo/mask0-iclean.py +0 -0
  147. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-demo/run-gclean.py +0 -0
  148. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-demo/run-iclean-obj.py +0 -0
  149. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-demo/run-iclean.py +0 -0
  150. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-demo/vla-sim-jet-iclean.py +0 -0
  151. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-first-look/run-fl-cont.py +0 -0
  152. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-first-look/run-fl-line.py +0 -0
  153. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-outlier/run-iclean.py +0 -0
  154. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-outlier/test_outlier.txt +0 -0
  155. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/iclean-remote/iclean_remote_webserver.py +0 -0
  156. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/large-cube/run-largecube.py +0 -0
  157. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/svg-test.py +0 -0
  158. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/updatable-data-source/direct-plot.py +0 -0
  159. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/updatable-data-source/simple-update.py +0 -0
  160. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/updatable-data-source/updated-plot.py +0 -0
  161. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/uranus-demo/uranus-iclean.py +0 -0
  162. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/websocket-reconnect/client.html +0 -0
  163. {cubevis-0.5.12 → cubevis-0.5.13}/tests/manual/websocket-reconnect/server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cubevis
3
- Version: 0.5.12
3
+ Version: 0.5.13
4
4
  Summary: visualization toolkit and apps for casa
5
5
  License: LGPL
6
6
  Author-email: Darrell Schiebel <darrell@schiebel.us>,Pam Harris <pharris@nrao.edu>
@@ -0,0 +1,30 @@
1
+ ########################################################################
2
+ #
3
+ # Copyright (C) 2025
4
+ # Associated Universities, Inc. Washington DC, USA.
5
+ #
6
+ # This script is free software; you can redistribute it and/or modify it
7
+ # under the terms of the GNU Library General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or (at your
9
+ # option) any later version.
10
+ #
11
+ # This library is distributed in the hope that it will be useful, but WITHOUT
12
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14
+ # License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Library General Public License
17
+ # along with this library; if not, write to the Free Software Foundation,
18
+ # Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
19
+ #
20
+ # Correspondence concerning AIPS++ should be adressed as follows:
21
+ # Internet email: casa-feedback@nrao.edu.
22
+ # Postal address: AIPS++ Project Office
23
+ # National Radio Astronomy Observatory
24
+ # 520 Edgemont Road
25
+ # Charlottesville, VA 22903-2475 USA
26
+ #
27
+ ########################################################################
28
+ '''casatask equivalent bindings'''
29
+
30
+ from .iclean import iclean
@@ -16,7 +16,7 @@ dependencies = [
16
16
  ]
17
17
  requires-python = ">=3.10"
18
18
  readme = "readme.rst"
19
- version = "0.5.12"
19
+ version = "0.5.13"
20
20
 
21
21
  [project.license]
22
22
  text = "LGPL"
@@ -1,140 +0,0 @@
1
- ########################################################################
2
- #
3
- # Copyright (C) 2024
4
- # Associated Universities, Inc. Washington DC, USA.
5
- #
6
- # This script is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Library General Public License as published by
8
- # the Free Software Foundation; either version 2 of the License, or (at your
9
- # option) any later version.
10
- #
11
- # This library is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14
- # License for more details.
15
- #
16
- # You should have received a copy of the GNU Library General Public License
17
- # along with this library; if not, write to the Free Software Foundation,
18
- # Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
19
- #
20
- # Correspondence concerning AIPS++ should be adressed as follows:
21
- # Internet email: casa-feedback@nrao.edu.
22
- # Postal address: AIPS++ Project Office
23
- # National Radio Astronomy Observatory
24
- # 520 Edgemont Road
25
- # Charlottesville, VA 22903-2475 USA
26
- #
27
- ########################################################################
28
- '''casatasks provides on-the-fly creation of inp/go wrappers for tasks
29
- https://bayesianbrad.github.io/posts/2017_loader-finder-python.html
30
- '''
31
-
32
- from importlib.abc import Loader as _Loader, MetaPathFinder as _MetaPathFinder
33
-
34
- import subprocess
35
- import re
36
- import os
37
- import sys
38
-
39
- class CasaTasks_Loader(_Loader):
40
-
41
- def __init__( self, java, jarpath, args, templ, xml ):
42
- self.__java = java
43
- self.__jarpath = jarpath
44
- self.__args = args
45
- self.__templ = templ
46
- self.__xml = xml
47
-
48
- def create_module(self, spec):
49
- return None
50
-
51
- def exec_module(self, module):
52
- python_source = subprocess.run( [ self.__java, '-jar', self.__jarpath ] + self.__args + [self.__templ, self.__xml], stdout=subprocess.PIPE ).stdout.decode('utf-8')
53
- exec( python_source, module.__dict__ )
54
-
55
-
56
- class CasaTasks_Finder(_MetaPathFinder):
57
-
58
- def __init__( self ):
59
- super(CasaTasks_Finder, self).__init__( )
60
- self.__java = None
61
- self.__source_dir = os.path.dirname(__file__)
62
- self.__jarpath = None
63
- self.__jarfile_name = "xml-casa-assembly-1.86.jar"
64
- self.__task_xml_files = None
65
-
66
- def __which( self, program ):
67
- def is_exe(fpath):
68
- return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
69
-
70
- fpath, fname = os.path.split(program)
71
- if fpath:
72
- if is_exe(program):
73
- return os.path.realpath(program)
74
- else:
75
- os.environ.get("PATH", "")
76
- for path in os.environ.get("PATH", "").split(os.pathsep):
77
- exe_file = os.path.join(path, program)
78
- if is_exe(exe_file):
79
- return os.path.realpath(exe_file)
80
- return None
81
-
82
- def __find_parameters( self, taskname ):
83
- templ = os.path.join( self.__source_dir, f'''{taskname}.mustache''' )
84
- if os.path.isfile(templ):
85
- ### <TASK>.mustache exists -------------------------------------------------------------------------------------------------------------
86
- with open(templ) as f:
87
- header = [ (m.group(1), m.group(2), m.group(0)) for m in [ re.match( "^\#+\s*TASK XML\s*>\s*(\S+)(.*)", next(f) ) for _ in range(5) ] if m ]
88
- if len(header) == 1:
89
- ### <TASK>.mustache has processing specification line --------------------------------------------------------------------------
90
- task = os.path.splitext(header[0][0])[0]
91
- if task in self.__task_xml_files:
92
- ### <TASK>.mustache has processing specification line and includes valid CASA task name ------------------------------------
93
- return templ, self.__task_xml_files[task], header[0][1].split( )
94
- elif taskname in self.__task_xml_files:
95
- ### <TASK>.mustache has processing specification line and <TASK> is a valid CASA task --------------------------------------
96
- return templ, self.__task_xml_files[taskname], header[0][1].split( )
97
- elif taskname in self.__task_xml_files:
98
- ### <TASK>.mustache does not have a processing specification line but <TASK> is a valid CASA task-------------------------------
99
- return templ, self.__task_xml_files[taskname], [ ]
100
-
101
- if taskname in self.__task_xml_files:
102
- ### <TASK>.mustache does not exist but <TASK> is a valid CASA task ---------------------------------------------------------------------
103
- templ = os.path.join( self.__source_dir, f'''generic.mustache''' )
104
- if os.path.isfile(templ):
105
- ### <TASK> is a valid CASA task and generic.mustache exists ------------------------------------------------------------------------
106
- with open(templ) as f:
107
- header = [ (m.group(1), m.group(2), m.group(0)) for m in [ re.match( "^\#+\s*TASK XML\s*>\s*(\S+)(.*)", next(f) ) for _ in range(5) ] if m ]
108
- if len(header) == 1:
109
- ### <TASK> is a valid CASA task, generic.mustache exists and has a processing specification line ---------------------------
110
- return templ, self.__task_xml_files[taskname], header[0][1].split( )
111
- else:
112
- ### <TASK> is a valid CASA task, generic.mustache exists but does not have a processing specification line -----------------
113
- return templ, self.__task_xml_files[taskname], [ ]
114
-
115
- return None, None, [ ]
116
-
117
- def find_spec(self, fullname, path, target = None):
118
-
119
- if fullname.startswith('cubevis.private.casatasks.'):
120
- if self.__java is None:
121
- self.__java = self.__which( "java" )
122
- if self.__jarpath is None:
123
- p = os.path.join( os.path.dirname(os.path.dirname(__file__)), "__java__", self.__jarfile_name )
124
- if os.path.isfile(p):
125
- self.__jarpath = p
126
- if self.__task_xml_files is None:
127
- try:
128
- from casatasks import xml_interface_defs
129
- self.__task_xml_files = { k:v for (k,v) in xml_interface_defs( ).items( ) if os.path.isfile(v) }
130
- except: pass
131
-
132
- module = fullname.split(sep='.')[-1]
133
- templ, xml, args = self.__find_parameters( fullname.split(sep='.')[-1] )
134
- if templ is not None and xml is not None:
135
- from importlib.machinery import ModuleSpec
136
- return ModuleSpec( fullname, CasaTasks_Loader( self.__java, self.__jarpath, args, templ, xml ) )
137
-
138
- return None
139
-
140
- sys.meta_path.append(CasaTasks_Finder( ))
File without changes
File without changes
File without changes
File without changes
File without changes