pyobs-core 2.0.0.dev97__tar.gz → 2.0.0.dev99__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 (449) hide show
  1. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/PKG-INFO +1 -1
  2. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/circle.py +8 -8
  3. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/crosshair.py +8 -8
  4. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/text.py +8 -8
  5. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/dotnet.py +7 -7
  6. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/calibration.py +5 -5
  7. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/daophot.py +9 -9
  8. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/pysep.py +9 -9
  9. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/simpledisk.py +6 -6
  10. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/addfitsheaders.py +6 -6
  11. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/download.py +6 -6
  12. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/flip.py +4 -4
  13. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/grayscale.py +8 -8
  14. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/httpserver.py +9 -9
  15. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/normalize.py +6 -6
  16. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/save.py +12 -11
  17. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/saveimage.py +9 -9
  18. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/smooth.py +12 -12
  19. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/softbin.py +6 -6
  20. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/addmask.py +6 -6
  21. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/catalogcircularmask.py +6 -6
  22. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/circularmask.py +6 -6
  23. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/createfilename.py +11 -11
  24. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/imagesourcefilter.py +6 -6
  25. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/removebackground.py +7 -7
  26. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/astrometry.py +6 -6
  27. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/brighteststar.py +6 -6
  28. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/brighteststar_guiding.py +9 -8
  29. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/dummyoffsets.py +7 -7
  30. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/dummyskyoffsets.py +10 -10
  31. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/fitsheader.py +7 -6
  32. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/pixeloffsets.py +8 -8
  33. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/projected.py +6 -6
  34. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/spilled_light.py +9 -10
  35. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/autoguiding.py +1 -1
  36. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/dummyguiding.py +1 -1
  37. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/scienceframeguiding.py +1 -1
  38. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/object.py +6 -1
  39. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/observation.py +6 -0
  40. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/dataprovider.py +1 -1
  41. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/task.py +1 -1
  42. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/config.py +1 -1
  43. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/fits.py +2 -2
  44. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/grid.py +1 -0
  45. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/gridnode.py +2 -0
  46. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/pipeline.py +1 -0
  47. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/time.py +4 -0
  48. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/__init__.py +3 -2
  49. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/httpfile.py +2 -2
  50. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/vfs.py +1 -1
  51. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyproject.toml +1 -1
  52. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/.gitignore +0 -0
  53. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/LICENSE +0 -0
  54. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/__init__.py +0 -0
  55. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/application.py +0 -0
  56. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/background_task.py +0 -0
  57. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/__init__.py +0 -0
  58. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/_cli.py +0 -0
  59. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/pyobs.py +0 -0
  60. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/pyobsd.py +0 -0
  61. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/pyobsw.py +0 -0
  62. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/__init__.py +0 -0
  63. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/comm.py +0 -0
  64. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/commlogging.py +0 -0
  65. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/dummy/__init__.py +0 -0
  66. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/dummy/dummycomm.py +0 -0
  67. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/local/__init__.py +0 -0
  68. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/local/localcomm.py +0 -0
  69. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/local/localnetwork.py +0 -0
  70. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/proxy.py +0 -0
  71. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/__init__.py +0 -0
  72. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/rpc.py +0 -0
  73. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/serializer.py +0 -0
  74. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
  75. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009/binding.py +0 -0
  76. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
  77. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
  78. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
  79. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
  80. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
  81. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xmppclient.py +0 -0
  82. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xmppcomm.py +0 -0
  83. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/__init__.py +0 -0
  84. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/badweather.py +0 -0
  85. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/event.py +0 -0
  86. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/exposurestatuschanged.py +0 -0
  87. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/filterchanged.py +0 -0
  88. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/focusfound.py +0 -0
  89. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/goodweather.py +0 -0
  90. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/log.py +0 -0
  91. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/modechanged.py +0 -0
  92. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/moduleclosed.py +0 -0
  93. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/moduleopened.py +0 -0
  94. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/motionstatuschanged.py +0 -0
  95. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/move.py +0 -0
  96. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/newimage.py +0 -0
  97. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/newspectrum.py +0 -0
  98. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/offsets.py +0 -0
  99. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/roofclosing.py +0 -0
  100. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/roofopened.py +0 -0
  101. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/taskfailed.py +0 -0
  102. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/taskfinished.py +0 -0
  103. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/taskstarted.py +0 -0
  104. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/testevent.py +0 -0
  105. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/__init__.py +0 -0
  106. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/image.py +0 -0
  107. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/__init__.py +0 -0
  108. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/altazoffsets.py +0 -0
  109. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/exptime.py +0 -0
  110. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/genericoffset.py +0 -0
  111. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/onskydistance.py +0 -0
  112. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/pixeloffsets.py +0 -0
  113. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/radecoffsets.py +0 -0
  114. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/skyoffsets.py +0 -0
  115. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processor.py +0 -0
  116. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/__init__.py +0 -0
  117. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/_daobackgroundremover.py +0 -0
  118. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/__init__.py +0 -0
  119. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/_pillow.py +0 -0
  120. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/__init__.py +0 -0
  121. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
  122. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
  123. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
  124. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
  125. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/astrometry.py +0 -0
  126. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/__init__.py +0 -0
  127. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
  128. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
  129. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/__init__.py +0 -0
  130. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
  131. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/_source_catalog.py +0 -0
  132. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/sourcedetection.py +0 -0
  133. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/exptime/__init__.py +0 -0
  134. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/exptime/exptime.py +0 -0
  135. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/exptime/star.py +0 -0
  136. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/__init__.py +0 -0
  137. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/__init__.py +0 -0
  138. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/modules/__init__.py +0 -0
  139. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
  140. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/__init__.py +0 -0
  141. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/offsets.py +0 -0
  142. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/__init__.py +0 -0
  143. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
  144. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
  145. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
  146. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
  147. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/photometry.py +0 -0
  148. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/photutil.py +0 -0
  149. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/pysep.py +0 -0
  150. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/wcs/__init__.py +0 -0
  151. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
  152. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAbortable.py +0 -0
  153. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAcquisition.py +0 -0
  154. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAutoFocus.py +0 -0
  155. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAutoGuiding.py +0 -0
  156. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAutonomous.py +0 -0
  157. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IBinning.py +0 -0
  158. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ICalibrate.py +0 -0
  159. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ICamera.py +0 -0
  160. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IConfig.py +0 -0
  161. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ICooling.py +0 -0
  162. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IData.py +0 -0
  163. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IDataSequence.py +0 -0
  164. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IDome.py +0 -0
  165. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IExposure.py +0 -0
  166. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IExposureTime.py +0 -0
  167. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFilters.py +0 -0
  168. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
  169. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
  170. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFlatField.py +0 -0
  171. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFocusModel.py +0 -0
  172. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFocuser.py +0 -0
  173. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IGain.py +0 -0
  174. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IImageFormat.py +0 -0
  175. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IImageType.py +0 -0
  176. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IMode.py +0 -0
  177. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IModule.py +0 -0
  178. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IMotion.py +0 -0
  179. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IMultiFiber.py +0 -0
  180. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
  181. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
  182. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingAltAz.py +0 -0
  183. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingBody.py +0 -0
  184. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
  185. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
  186. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
  187. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
  188. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingRaDec.py +0 -0
  189. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingSeries.py +0 -0
  190. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IReady.py +0 -0
  191. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRoof.py +0 -0
  192. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRotation.py +0 -0
  193. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRunnable.py +0 -0
  194. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRunning.py +0 -0
  195. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IScriptRunner.py +0 -0
  196. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ISpectrograph.py +0 -0
  197. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IStartStop.py +0 -0
  198. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IStructuredConfig.py +0 -0
  199. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ISyncTarget.py +0 -0
  200. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITelescope.py +0 -0
  201. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITemperatures.py +0 -0
  202. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITrackingMode.py +0 -0
  203. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITrackingRate.py +0 -0
  204. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IVideo.py +0 -0
  205. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IWeather.py +0 -0
  206. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IWindow.py +0 -0
  207. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/__init__.py +0 -0
  208. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/interface.py +0 -0
  209. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/__init__.py +0 -0
  210. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/camerasettings.py +0 -0
  211. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/fitsheader.py +0 -0
  212. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/fitsnamespace.py +0 -0
  213. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/follow.py +0 -0
  214. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/motionstatus.py +0 -0
  215. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/pipeline.py +0 -0
  216. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/waitformotion.py +0 -0
  217. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/weatheraware.py +0 -0
  218. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/__init__.py +0 -0
  219. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/__init__.py +0 -0
  220. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/adaptive.py +0 -0
  221. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/basecamera.py +0 -0
  222. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/basespectrograph.py +0 -0
  223. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/basevideo.py +0 -0
  224. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/dummycamera.py +0 -0
  225. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/dummyspectrograph.py +0 -0
  226. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/dummyvideo.py +0 -0
  227. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/pipelinecamera.py +0 -0
  228. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/__init__.py +0 -0
  229. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/flatfield.py +0 -0
  230. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/pointing.py +0 -0
  231. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/scheduler.py +0 -0
  232. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/__init__.py +0 -0
  233. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/dummyautofocus.py +0 -0
  234. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/focusmodel.py +0 -0
  235. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/focusseries.py +0 -0
  236. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/__init__.py +0 -0
  237. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/imagewatcher.py +0 -0
  238. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/imagewriter.py +0 -0
  239. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/pipeline.py +0 -0
  240. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/seeing.py +0 -0
  241. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/module.py +0 -0
  242. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/__init__.py +0 -0
  243. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/_base.py +0 -0
  244. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/_baseguiding.py +0 -0
  245. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/acquisition.py +0 -0
  246. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/dummyacquisition.py +0 -0
  247. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
  248. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
  249. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
  250. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
  251. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
  252. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/__init__.py +0 -0
  253. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/mastermind.py +0 -0
  254. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/pointing.py +0 -0
  255. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/scheduler.py +0 -0
  256. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/scriptrunner.py +0 -0
  257. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/__init__.py +0 -0
  258. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/basedome.py +0 -0
  259. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/baseroof.py +0 -0
  260. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/dummyroof.py +0 -0
  261. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/__init__.py +0 -0
  262. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
  263. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/basetelescope.py +0 -0
  264. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
  265. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
  266. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
  267. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/test/__init__.py +0 -0
  268. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/test/standalone.py +0 -0
  269. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/__init__.py +0 -0
  270. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/dummymode.py +0 -0
  271. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/fluentlogger.py +0 -0
  272. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/httpfilecache.py +0 -0
  273. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/kiosk.py +0 -0
  274. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/matrix.py +0 -0
  275. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/stellarium.py +0 -0
  276. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/telegram.py +0 -0
  277. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/trigger.py +0 -0
  278. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/__init__.py +0 -0
  279. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/mockweather.py +0 -0
  280. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/weather.py +0 -0
  281. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/weather_api.py +0 -0
  282. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/weather_state.py +0 -0
  283. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/py.typed +0 -0
  284. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/__init__.py +0 -0
  285. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/__init__.py +0 -0
  286. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/_executor.py +0 -0
  287. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
  288. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
  289. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
  290. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
  291. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
  292. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
  293. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
  294. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
  295. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
  296. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
  297. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
  298. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/constant.py +0 -0
  299. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/follow.py +0 -0
  300. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/interval.py +0 -0
  301. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/merit.py +0 -0
  302. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
  303. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/random.py +0 -0
  304. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
  305. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/transit.py +0 -0
  306. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
  307. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
  308. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
  309. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
  310. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
  311. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
  312. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
  313. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
  314. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
  315. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
  316. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/target.py +0 -0
  317. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
  318. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/__init__.py +0 -0
  319. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
  320. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
  321. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
  322. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
  323. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/__init__.py +0 -0
  324. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/cases.py +0 -0
  325. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/conditional.py +0 -0
  326. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/parallel.py +0 -0
  327. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/selector.py +0 -0
  328. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/sequential.py +0 -0
  329. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/exceptions.py +0 -0
  330. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
  331. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
  332. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
  333. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
  334. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/script.py +0 -0
  335. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/__init__.py +0 -0
  336. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
  337. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
  338. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/log.py +0 -0
  339. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/__init__.py +0 -0
  340. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
  341. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
  342. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
  343. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/__init__.py +0 -0
  344. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/_portal.py +0 -0
  345. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
  346. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
  347. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/configdb.py +0 -0
  348. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
  349. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
  350. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
  351. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
  352. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
  353. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
  354. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/task.py +0 -0
  355. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
  356. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
  357. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/memory/__init__.py +0 -0
  358. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
  359. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
  360. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/observationarchive.py +0 -0
  361. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/portal/__init__.py +0 -0
  362. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/portal/observationarchive.py +0 -0
  363. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/portal/taskarchive.py +0 -0
  364. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/taskarchive.py +0 -0
  365. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/taskrunner.py +0 -0
  366. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/__init__.py +0 -0
  367. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/__init__.py +0 -0
  368. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/archive.py +0 -0
  369. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/local_archive.py +0 -0
  370. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
  371. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/exptime/__init__.py +0 -0
  372. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/exptime/exptime.py +0 -0
  373. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
  374. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
  375. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
  376. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
  377. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
  378. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
  379. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
  380. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
  381. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
  382. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
  383. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
  384. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
  385. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/__init__.py +0 -0
  386. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/average.py +0 -0
  387. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/cache.py +0 -0
  388. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/config_schema.py +0 -0
  389. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/coordinates.py +0 -0
  390. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/curvefit.py +0 -0
  391. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/enums.py +0 -0
  392. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/exceptions.py +0 -0
  393. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/__init__.py +0 -0
  394. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/base.py +0 -0
  395. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/photometry.py +0 -0
  396. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/projection.py +0 -0
  397. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/__init__.py +0 -0
  398. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/filters.py +0 -0
  399. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/__init__.py +0 -0
  400. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/__init__.py +0 -0
  401. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/binningwidget.py +0 -0
  402. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
  403. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/exposewidget.py +0 -0
  404. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
  405. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
  406. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
  407. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
  408. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/http.py +0 -0
  409. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/influxdb.py +0 -0
  410. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logger.py +0 -0
  411. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logging/__init__.py +0 -0
  412. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logging/context.py +0 -0
  413. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logging/resolvableerror.py +0 -0
  414. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/modulegui.py +0 -0
  415. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/__init__.py +0 -0
  416. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
  417. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/applyoffsets.py +0 -0
  418. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
  419. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/parallel.py +0 -0
  420. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/__init__.py +0 -0
  421. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/pipeline.py +0 -0
  422. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/progress.py +0 -0
  423. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/reduction.py +0 -0
  424. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/reduction_base.py +0 -0
  425. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/__init__.py +0 -0
  426. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/csv.py +0 -0
  427. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/http.py +0 -0
  428. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/log.py +0 -0
  429. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/multi.py +0 -0
  430. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/publisher.py +0 -0
  431. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/serialization.py +0 -0
  432. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/shellcommand.py +0 -0
  433. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/threads/__init__.py +0 -0
  434. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/threads/lockwithabort.py +0 -0
  435. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/units.py +0 -0
  436. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/versions.py +0 -0
  437. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/version.py +0 -0
  438. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/archivefile.py +0 -0
  439. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/bufferedfile.py +0 -0
  440. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/file.py +0 -0
  441. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/filelists/__init__.py +0 -0
  442. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/filelists/filelist.py +0 -0
  443. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/filelists/testing.py +0 -0
  444. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/localfile.py +0 -0
  445. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/memfile.py +0 -0
  446. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/sftpfile.py +0 -0
  447. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/smbfile.py +0 -0
  448. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/sshfile.py +0 -0
  449. {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/tempfile.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pyobs-core
3
- Version: 2.0.0.dev97
3
+ Version: 2.0.0.dev99
4
4
  Summary: robotic telescope software
5
5
  Author-email: Tim-Oliver Husser <thusser@uni-goettingen.de>
6
6
  License-Expression: MIT
@@ -16,7 +16,7 @@ class Circle(ImageProcessor):
16
16
  This processor uses Pillow to render a circle on a
17
17
  :class:`pyobs.images.Image`. The center coordinates ``(x, y)`` and the ``radius``
18
18
  can be provided as numbers or strings that are resolved by
19
- :class:`pyobs.utils.image.PillowHelper`. If ``wcs=True``, the center coordinates
19
+ the internal ``PillowHelper``. If ``wcs=True``, the center coordinates
20
20
  are interpreted in world coordinates (e.g., sky coordinates) and converted to
21
21
  pixel coordinates using the image’s WCS, if available.
22
22
 
@@ -37,9 +37,9 @@ class Circle(ImageProcessor):
37
37
  :param kwargs: Additional keyword arguments forwarded to
38
38
  :class:`pyobs.images.processor.ImageProcessor`.
39
39
 
40
- Behavior
41
- --------
42
- - Converts the input image to a Pillow image using :class:`pyobs.utils.image.PillowHelper`.
40
+ Circle behavior
41
+ ---------------
42
+ - Converts the input image to a Pillow image using the internal ``PillowHelper``.
43
43
  - Resolves ``x``, ``y`` via ``PillowHelper.position(image, x, y, wcs)`` and ``radius`` via
44
44
  ``PillowHelper.value(image, radius)``.
45
45
  - Converts ``fill`` and ``outline`` to Pillow-compatible color values via
@@ -49,13 +49,13 @@ class Circle(ImageProcessor):
49
49
  ``PillowHelper.to_image(image, im)``.
50
50
  - If both ``fill`` and ``outline`` are ``None``, the rendered output will be unchanged.
51
51
 
52
- Input/Output
53
- ------------
52
+ Circle input/output
53
+ -------------------
54
54
  - Input: :class:`pyobs.images.Image`
55
55
  - Output: :class:`pyobs.images.Image` (copied) with the circle drawn onto the pixel data.
56
56
 
57
- Configuration (YAML)
58
- --------------------
57
+ Circle configuration (YAML)
58
+ ---------------------------
59
59
  Draw a red outlined circle:
60
60
 
61
61
  .. code-block:: yaml
@@ -34,9 +34,9 @@ class Crosshair(ImageProcessor):
34
34
  :param kwargs: Additional keyword arguments forwarded to
35
35
  :class:`pyobs.images.processor.ImageProcessor`.
36
36
 
37
- Behavior
38
- --------
39
- - Converts the input to a Pillow image via :class:`pyobs.utils.image.PillowHelper.from_image`.
37
+ Crosshair behavior
38
+ ------------------
39
+ - Converts the input to a Pillow image via ``PillowHelper.from_image``.
40
40
  - Resolves the center position with ``PillowHelper.position(image, x, y, wcs)`` and the color
41
41
  with ``PillowHelper.color(color)``.
42
42
  - Draws:
@@ -47,13 +47,13 @@ class Crosshair(ImageProcessor):
47
47
  - Converts the Pillow image back to a :class:`pyobs.images.Image` via
48
48
  ``PillowHelper.to_image(image, im)``.
49
49
 
50
- Input/Output
51
- ------------
50
+ Crosshair input/output
51
+ ----------------------
52
52
  - Input: :class:`pyobs.images.Image`
53
53
  - Output: :class:`pyobs.images.Image` (copied) with the crosshair drawn onto the pixel data.
54
54
 
55
- Configuration (YAML)
56
- --------------------
55
+ Crosshair configuration (YAML)
56
+ ------------------------------
57
57
  Pixel coordinates:
58
58
 
59
59
  .. code-block:: yaml
@@ -80,7 +80,7 @@ class Crosshair(ImageProcessor):
80
80
  - When ``wcs=True``, only ``x`` and ``y`` are interpreted in world coordinates; ``radius``
81
81
  is treated as a pixel length.
82
82
  - Color representation and supported coordinate/value formats depend on
83
- :class:`pyobs.utils.image.PillowHelper`.
83
+ the internal ``PillowHelper``.
84
84
  - The line width scales with radius and is not independently configurable.
85
85
  """
86
86
 
@@ -44,9 +44,9 @@ class Text(ImageProcessor):
44
44
  :param kwargs: Additional keyword arguments forwarded to
45
45
  :class:`pyobs.images.processor.ImageProcessor`.
46
46
 
47
- Behavior
48
- --------
49
- - Converts the input image to a Pillow image via :class:`pyobs.utils.image.PillowHelper.from_image`.
47
+ Text behavior
48
+ -------------
49
+ - Converts the input image to a Pillow image via ``PillowHelper.from_image``.
50
50
  - Resolves the position with ``PillowHelper.position(image, x, y, wcs)`` and the fill color with
51
51
  ``PillowHelper.color(fill)``.
52
52
  - Attempts to format ``text`` using ``self._text.format(**image.header)``; if a placeholder key
@@ -57,13 +57,13 @@ class Text(ImageProcessor):
57
57
  - Converts the Pillow image back to a :class:`pyobs.images.Image` with
58
58
  ``PillowHelper.to_image(image, im)``.
59
59
 
60
- Input/Output
61
- ------------
60
+ Text input/output
61
+ -----------------
62
62
  - Input: :class:`pyobs.images.Image`
63
63
  - Output: :class:`pyobs.images.Image` (copied) with the text drawn onto the pixel data.
64
64
 
65
- Configuration (YAML)
66
- --------------------
65
+ Text configuration (YAML)
66
+ -------------------------
67
67
  Draw static text in pixel coordinates:
68
68
 
69
69
  .. code-block:: yaml
@@ -112,7 +112,7 @@ class Text(ImageProcessor):
112
112
  -----
113
113
  - Header-based formatting uses Python’s ``str.format`` mechanism with ``image.header`` as
114
114
  the source of values. Missing keys are ignored and the unformatted text is used.
115
- - Color representation and supported value formats depend on :class:`pyobs.utils.image.PillowHelper`.
115
+ - Color representation and supported value formats depend on the internal ``PillowHelper``.
116
116
  - The ``anchor`` option controls how the text is positioned relative to ``(x, y)``; refer to
117
117
  Pillow’s documentation for the available anchor codes.
118
118
  - If no font is provided, Pillow’s default font is used. When a TrueType font is specified,
@@ -19,8 +19,8 @@ class AstrometryDotNet(Astrometry):
19
19
  This processor submits sources extracted from a
20
20
  :class:`pyobs.images.Image` to an astrometry.net service, obtains a WCS solution,
21
21
  and writes it back to the image’s FITS header. The solver endpoint is configured
22
- via ``url`` and the request content is built by
23
- :class:`pyobs.images.processors.astrometry._DotNetRequestBuilder`.
22
+ via ``url`` and the request content is built by the internal ``_DotNetRequestBuilder``
23
+ helper.
24
24
 
25
25
  :param str url: Base URL of the astrometry.net service endpoint.
26
26
  :param int source_count: Number of detected sources to include in the request
@@ -45,14 +45,14 @@ class AstrometryDotNet(Astrometry):
45
45
 
46
46
  Behavior
47
47
  --------
48
- - Constructs a request from the input image using
49
- :class:`pyobs.images.processors.astrometry._DotNetRequestBuilder(source_count, radius)`.
50
- - Logs request metadata via :class:`pyobs.images.processors.astrometry._RequestLogger`.
48
+ - Constructs a request from the input image using the internal
49
+ ``_DotNetRequestBuilder(source_count, radius)``.
50
+ - Logs request metadata via the internal ``_RequestLogger``.
51
51
  - Sends the request to the configured service with ``request.send(url, timeout)``.
52
52
  - On success, receives solver output and writes the resulting WCS into a copy of
53
- the input image using :class:`pyobs.images.processors.astrometry._ResponseImageWriter`.
53
+ the input image using the internal ``_ResponseImageWriter``.
54
54
  - Logs the outcome, including WCS information, and returns the result image.
55
- - On failure, raises the underlying :class:`pyobs.images.exceptions.ImageError`. When run as
55
+ - On failure, raises the underlying :class:`~pyobs.utils.exceptions.ImageError`. When run as
56
56
  a pipeline step with ``on_error="error"``, the pipeline calls ``handle_error``, which sets
57
57
  ``WCSERR=1`` in the FITS header, logs a warning, and returns the original image unchanged.
58
58
 
@@ -22,15 +22,15 @@ class Calibration(ImageProcessor):
22
22
  This processor locates appropriate master calibration frames
23
23
  (bias, dark, flat) based on the input image metadata, applies calibration to the
24
24
  image, and annotates the FITS header with provenance and reduction information.
25
- Calibration frames are looked up via an :class:`pyobs.archive.Archive` and are
25
+ Calibration frames are looked up via an :class:`~pyobs.robotic.utils.archive.Archive` and are
26
26
  cached in a class-wide cache to reduce repeated lookups. If required calibration
27
27
  frames cannot be found, the original image is returned unchanged.
28
28
 
29
29
  :param dict | Archive archive: Archive configuration or an already constructed
30
- :class:`pyobs.archive.Archive` instance used to
30
+ :class:`~pyobs.robotic.utils.archive.Archive` instance used to
31
31
  locate master calibration frames. If a dictionary
32
32
  is provided, it is instantiated via
33
- :func:`pyobs.utils.classes.get_object`.
33
+ :func:`~pyobs.object.get_object`.
34
34
  :param int max_cache_size: Maximum number of master frames kept in the shared
35
35
  calibration cache. Default: ``20``.
36
36
  :param bool require_bias: If ``True``, a master bias must be found; otherwise
@@ -60,7 +60,7 @@ class Calibration(ImageProcessor):
60
60
  and ``DATE-OBS`` must be present.
61
61
  - Attempts to retrieve required masters (bias, dark, flat) from a class-wide cache.
62
62
  On cache miss, queries the configured archive via
63
- :meth:`pyobs.pipeline.Pipeline.find_master`, matching:
63
+ :meth:`~pyobs.utils.pipeline.Pipeline.find_master`, matching:
64
64
 
65
65
  - Instrument: exact value of ``INSTRUME``.
66
66
  - Binning: string formatted as ``"{XBINNING}x{XBINNING}"`` (square binning assumed).
@@ -69,7 +69,7 @@ class Calibration(ImageProcessor):
69
69
 
70
70
  - If any required master is missing, logs a warning and returns the original image
71
71
  unchanged.
72
- - Applies calibration using :class:`pyobs.images.processors.calibration._CCDDataCalibrator`
72
+ - Applies calibration using the internal ``_CCDDataCalibrator`` helper
73
73
  with the found master frames (``None`` for any non-required step to be skipped).
74
74
  - Copies provenance into the output FITS header:
75
75
 
@@ -47,12 +47,12 @@ class DaophotSourceDetection(SourceDetection):
47
47
  :param kwargs: Additional keyword arguments forwarded to
48
48
  :class:`pyobs.images.processors.detection.SourceDetection`.
49
49
 
50
- Behavior
51
- --------
50
+ Daophot Source Detection behavior
51
+ ---------------------------------
52
52
  - If the input image has no data (``image.safe_data is None``), a warning is logged
53
53
  and the image is returned unchanged.
54
54
  - Background is estimated and subtracted using
55
- :class:`pyobs.images.processors.detection._DaoBackgroundRemover`
55
+ the internal ``_DaoBackgroundRemover`` helper
56
56
  with the configured ``bkg_sigma``, ``bkg_box_size``, and ``bkg_filter_size``.
57
57
  - Robust statistics are computed on the background-corrected data via
58
58
  :func:`astropy.stats.sigma_clipped_stats` (with ``sigma=3.0``) to obtain
@@ -63,18 +63,18 @@ class DaophotSourceDetection(SourceDetection):
63
63
  - DAOStarFinder execution is offloaded to a thread executor to avoid blocking
64
64
  the event loop.
65
65
  - The resulting :class:`astropy.table.Table` is converted to a pyobs
66
- :class:`pyobs.images.catalog._SourceCatalog`, FITS 1-based origin convention is
66
+ the internal ``_SourceCatalog`` helper, FITS 1-based origin convention is
67
67
  applied to coordinates, and the catalog is attached to the image with the keys
68
68
  ``["x", "y", "flux", "peak"]``.
69
69
 
70
- Input/Output
71
- ------------
70
+ Daophot Source Detection input/output
71
+ -------------------------------------
72
72
  - Input: :class:`pyobs.images.Image` with 2D pixel data.
73
73
  - Output: :class:`pyobs.images.Image` with a source catalog attached. Pixel data
74
74
  are unchanged; catalog entries typically include positions and flux measures.
75
75
 
76
- Configuration (YAML)
77
- --------------------
76
+ Daophot Source Detection configuration (YAML)
77
+ ---------------------------------------------
78
78
  Minimal example:
79
79
 
80
80
  .. code-block:: yaml
@@ -101,7 +101,7 @@ class DaophotSourceDetection(SourceDetection):
101
101
  noise; very low values may increase false positives.
102
102
  - The background remover’s exact behavior (e.g., clipping strategy, box tiling,
103
103
  and filtering) is defined by
104
- :class:`pyobs.images.processors.detection._DaoBackgroundRemover`.
104
+ the internal ``_DaoBackgroundRemover`` helper.
105
105
  - Very bright/saturated sources or artifacts (cosmic rays, bleed trails) may
106
106
  produce spurious detections; consider pre-masking if necessary.
107
107
  """
@@ -49,8 +49,8 @@ class SepSourceDetection(SourceDetection):
49
49
  :param kwargs: Additional keyword arguments forwarded to
50
50
  :class:`pyobs.images.processors.detection.SourceDetection`.
51
51
 
52
- Behavior
53
- --------
52
+ Sep Source Detection behavior
53
+ -----------------------------
54
54
  - If the input image has no data (``image.safe_data is None``), a warning is logged
55
55
  and the image is returned unchanged.
56
56
  - A mask is obtained from ``image.mask`` if available; otherwise a zero-valued
@@ -64,9 +64,9 @@ class SepSourceDetection(SourceDetection):
64
64
  ``deblend_nthresh=self.deblend_nthresh``, ``deblend_cont=self.deblend_cont``,
65
65
  ``clean=self.clean``, ``clean_param=self.clean_param``, and the computed mask.
66
66
  Extraction is offloaded to a thread executor to avoid blocking the event loop.
67
- - The resulting array is converted to a pyobs :class:`_SourceCatalog`, initial
67
+ - The resulting array is converted using the internal ``_SourceCatalog`` helper, initial
68
68
  detection flags are filtered, and additional SEP-based measurements are computed
69
- via :class:`PySepStatsCalculator`. The detector gain is taken from the FITS
69
+ via ``PySepStatsCalculator``. The detector gain is taken from the FITS
70
70
  header key ``DET-GAIN`` if present; otherwise gain-dependent metrics may be
71
71
  limited or use defaults.
72
72
  - Post-processing includes filtering by detection flags, wrapping rotation angles
@@ -76,14 +76,14 @@ class SepSourceDetection(SourceDetection):
76
76
  ``["x", "y", "peak", "flux", "fwhm", "a", "b", "theta", "ellipticity", "tnpix", "kronrad", "fluxrad25",
77
77
  "fluxrad50", "fluxrad75", "xwin", "ywin"]``.
78
78
 
79
- Input/Output
80
- ------------
79
+ Sep Source Detection input/output
80
+ ---------------------------------
81
81
  - Input: :class:`pyobs.images.Image` with 2D pixel data; optional mask and header.
82
82
  - Output: :class:`pyobs.images.Image` with a source catalog attached. Pixel data
83
83
  are unchanged; the FITS header may be read for gain (``DET-GAIN``).
84
84
 
85
- Configuration (YAML)
86
- --------------------
85
+ Sep Source Detection configuration (YAML)
86
+ -----------------------------------------
87
87
  Minimal example:
88
88
 
89
89
  .. code-block:: yaml
@@ -113,7 +113,7 @@ class SepSourceDetection(SourceDetection):
113
113
  - Background parameters (``bw``, ``bh``, ``fw``, ``fh``) are fixed in this wrapper;
114
114
  adjust here if you need finer control for highly structured backgrounds.
115
115
  - If ``DET-GAIN`` is absent, gain-dependent uncertainties and radii may be limited
116
- or use defaults in :class:`PySepStatsCalculator`.
116
+ or use defaults in ``PySepStatsCalculator``.
117
117
  """
118
118
 
119
119
  __module__ = "pyobs.images.processors.detection"
@@ -33,8 +33,8 @@ class SimpleDisk(ImageProcessor):
33
33
  :param kwargs: Additional keyword arguments forwarded to
34
34
  :class:`pyobs.images.processor.ImageProcessor`.
35
35
 
36
- Behavior
37
- --------
36
+ Simple Disk behavior
37
+ --------------------
38
38
  - Chooses the image plane: uses the first channel (``image.data[0, :, :]``) if the
39
39
  image is color, otherwise uses the full 2D array.
40
40
  - Creates a binary mask with ``mask = data > threshold``.
@@ -49,14 +49,14 @@ class SimpleDisk(ImageProcessor):
49
49
  - ``keyword_x`` = x (column index, zero-based)
50
50
  - ``keyword_radius`` = radius (float, pixels)
51
51
 
52
- Input/Output
53
- ------------
52
+ Simple Disk input/output
53
+ ------------------------
54
54
  - Input: :class:`pyobs.images.Image`
55
55
  - Output: :class:`pyobs.images.Image` (copied) with new FITS header entries for
56
56
  center coordinates and radius; pixel data are unchanged.
57
57
 
58
- Configuration (YAML)
59
- --------------------
58
+ Simple Disk configuration (YAML)
59
+ --------------------------------
60
60
  Basic detection with a custom threshold:
61
61
 
62
62
  .. code-block:: yaml
@@ -43,8 +43,8 @@ class AddFitsHeaders(ImageProcessor):
43
43
  Whether to overwrite existing keywords when they already exist in the header.
44
44
  Default: ``True``.
45
45
 
46
- Behavior
47
- --------
46
+ Add Fits Headers behavior
47
+ -------------------------
48
48
  - For each specified header card, the processor will add the keyword and value
49
49
  to the image's FITS header. If the keyword is already present:
50
50
 
@@ -56,13 +56,13 @@ class AddFitsHeaders(ImageProcessor):
56
56
  - FITS keyword names should follow FITS conventions (typically up to 8 ASCII
57
57
  characters, uppercase) to ensure compatibility with FITS tools.
58
58
 
59
- Input/Output
60
- ------------
59
+ Add Fits Headers input/output
60
+ -----------------------------
61
61
  - Input: :class:`pyobs.images.Image`
62
62
  - Output: :class:`pyobs.images.Image` with updated FITS headers.
63
63
 
64
- Configuration (YAML)
65
- --------------------
64
+ Add Fits Headers configuration (YAML)
65
+ -------------------------------------
66
66
  Simple mapping:
67
67
 
68
68
  .. code-block:: yaml
@@ -71,8 +71,8 @@ class Download(ImageProcessor):
71
71
  :param kwargs:
72
72
  Additional keyword arguments forwarded to :class:`pyobs.images.processor.ImageProcessor`.
73
73
 
74
- Behavior
75
- --------
74
+ Download behavior
75
+ -----------------
76
76
  - Performs an HTTP GET request to ``url`` using :class:`aiohttp.ClientSession`.
77
77
  - If the URL ends with ``.fits``, the image is constructed with :meth:`pyobs.images.Image.from_bytes`,
78
78
  preserving existing FITS headers.
@@ -82,13 +82,13 @@ class Download(ImageProcessor):
82
82
  - The processor sets ``DATE-OBS`` to the current ISO timestamp and ``EXPTIME`` to ``0`` in the header.
83
83
  - The input parameter ``image`` to ``__call__`` is ignored (no-op); a new image object is returned.
84
84
 
85
- Input/Output
86
- ------------
85
+ Download input/output
86
+ ---------------------
87
87
  - Input: :class:`pyobs.images.Image` (ignored).
88
88
  - Output: :class:`pyobs.images.Image` constructed from the downloaded bytes.
89
89
 
90
- Configuration (YAML)
91
- --------------------
90
+ Download configuration (YAML)
91
+ -----------------------------
92
92
  .. code-block:: yaml
93
93
 
94
94
  class: pyobs.images.processors.image.Download
@@ -30,16 +30,16 @@ class Flip(ImageProcessor):
30
30
  ``x -> (width - 1 - x)`` when ``flip_x`` is ``True`` and
31
31
  ``y -> (height - 1 - y)`` when ``flip_y`` is ``True``.
32
32
 
33
- Input/Output
34
- ------------
33
+ Flip input/output
34
+ -----------------
35
35
  - Input: :class:`pyobs.images.Image`
36
36
  - Output: :class:`pyobs.images.Image` with pixel data flipped according to the configured axes.
37
37
  The output image has the same shape and dtype as the input. Header metadata (including WCS)
38
38
  are preserved and not modified by this processor; workflows relying on orientation-sensitive
39
39
  metadata may need to update them downstream.
40
40
 
41
- Configuration (YAML)
42
- --------------------
41
+ Flip configuration (YAML)
42
+ -------------------------
43
43
  Instantiate and configure via YAML, for example:
44
44
 
45
45
  .. code-block:: yaml
@@ -27,22 +27,22 @@ class Grayscale(ImageProcessor):
27
27
  :param kwargs: Additional keyword arguments forwarded to
28
28
  :class:`pyobs.images.processor.ImageProcessor`.
29
29
 
30
- Behavior
31
- --------
32
- - Calls :meth:`pyobs.images.Image.to_grayscale(r, g, b)` on the input image and returns
30
+ Grayscale behavior
31
+ ------------------
32
+ - Calls :meth:`~pyobs.images.Image.to_grayscale` on the input image and returns
33
33
  the resulting image.
34
34
  - The weights need not sum to 1.0; they are used as provided for a linear combination.
35
35
  - Header metadata are preserved by the underlying conversion method.
36
36
  - Typical input layout for color images is channel-first ``(C, H, W)`` with ``C=3`` (RGB).
37
37
 
38
- Input/Output
39
- ------------
38
+ Grayscale input/output
39
+ ----------------------
40
40
  - Input: :class:`pyobs.images.Image` (color image with 3 channels).
41
41
  - Output: :class:`pyobs.images.Image` (single-channel grayscale image, shape dependent
42
- on the implementation of :meth:`to_grayscale`).
42
+ on the implementation of :meth:`~pyobs.images.Image.to_grayscale`).
43
43
 
44
- Configuration (YAML)
45
- --------------------
44
+ Grayscale configuration (YAML)
45
+ ------------------------------
46
46
  Default Rec. 709 weights:
47
47
 
48
48
  .. code-block:: yaml
@@ -21,7 +21,7 @@ class HttpServer(ImageProcessor):
21
21
  - ``GET /``: A simple HTML page embedding the image.
22
22
  - ``GET /<filename>``: The raw encoded image bytes.
23
23
 
24
- Images are encoded using :func:`pyobs.images.processors.image.saveimage.SaveImage.encode_image`
24
+ Images are encoded using :meth:`~pyobs.images.processors.image.SaveImage.encode_image`
25
25
  based on the configured ``filename`` extension or an explicitly provided ``format``.
26
26
 
27
27
  :param str filename: The filename to serve the image as, which also determines the path
@@ -36,26 +36,26 @@ class HttpServer(ImageProcessor):
36
36
  :param kwargs: Additional keyword arguments forwarded to
37
37
  :class:`pyobs.images.processor.ImageProcessor`.
38
38
 
39
- Behavior
40
- --------
39
+ Http Server behavior
40
+ --------------------
41
41
  - On the first call, starts an :class:`aiohttp.web.TCPSite` bound to ``url:port`` and
42
42
  registers two routes:
43
43
  - ``GET /<filename>`` returns the currently stored image bytes with content type ``image/*``.
44
44
  - ``GET /`` returns a minimal HTML page embedding the image via ``<img src="<filename>">``.
45
45
  - Encodes the input image using
46
- :func:`pyobs.images.processors.image.saveimage.SaveImage.encode_image(image, filename, format)`
46
+ :meth:`~pyobs.images.processors.image.SaveImage.encode_image`
47
47
  and stores it as the "current" image to be served by the endpoints.
48
48
  - Subsequent calls update the stored image; clients fetching ``/<filename>`` will receive
49
49
  the latest version.
50
50
  - If no image has been processed yet, ``GET /<filename>`` responds with 404 Not Found.
51
51
 
52
- Input/Output
53
- ------------
52
+ Http Server input/output
53
+ ------------------------
54
54
  - Input: :class:`pyobs.images.Image`
55
55
  - Output: :class:`pyobs.images.Image` (unchanged), while the encoded bytes are exposed via HTTP.
56
56
 
57
- Configuration (YAML)
58
- --------------------
57
+ Http Server configuration (YAML)
58
+ --------------------------------
59
59
  Serve a JPEG on localhost:
60
60
 
61
61
  .. code-block:: yaml
@@ -91,7 +91,7 @@ class HttpServer(ImageProcessor):
91
91
  - The response content type is ``image/*``; some clients may expect a specific MIME type
92
92
  if the chosen format is known (e.g., ``image/jpeg`` or ``image/png``).
93
93
  - If the encoding fails (e.g., due to unsupported format), the underlying encoder may raise
94
- an exception; those propagate from :func:`SaveImage.encode_image`.
94
+ an exception; those propagate from :meth:`~pyobs.images.processors.image.SaveImage.encode_image`.
95
95
  """
96
96
 
97
97
  __module__ = "pyobs.images.processors.image"
@@ -28,8 +28,8 @@ class Normalize(ImageProcessor):
28
28
  :param kwargs: Additional keyword arguments forwarded to
29
29
  :class:`pyobs.images.processor.ImageProcessor`.
30
30
 
31
- Behavior
32
- --------
31
+ Normalize behavior
32
+ ------------------
33
33
  - Creates a copy of the input image and replaces its ``data`` with a normalized
34
34
  ``numpy.uint8`` array.
35
35
  - If ``vmin``/``vmax`` are ``None``, they are computed over the entire array
@@ -39,13 +39,13 @@ class Normalize(ImageProcessor):
39
39
  is used for all channels (no per-channel normalization).
40
40
  - Header metadata are preserved; only the pixel data and dtype change.
41
41
 
42
- Input/Output
43
- ------------
42
+ Normalize input/output
43
+ ----------------------
44
44
  - Input: :class:`pyobs.images.Image`
45
45
  - Output: :class:`pyobs.images.Image` (copied) with data normalized to ``uint8``.
46
46
 
47
- Configuration (YAML)
48
- --------------------
47
+ Normalize configuration (YAML)
48
+ ------------------------------
49
49
  Automatic bounds:
50
50
 
51
51
  .. code-block:: yaml
@@ -15,15 +15,15 @@ class Save(ImageProcessor):
15
15
  Save an image to the virtual file system and optionally broadcast a NewImageEvent.
16
16
 
17
17
  This processor formats a destination filename using a
18
- :class:`pyobs.utils.formatter.FilenameFormatter` (configured via ``filename``),
18
+ :class:`~pyobs.utils.fits.FilenameFormatter` (configured via ``filename``),
19
19
  writes the image to the pyobs virtual file system (``vfs``), and, if enabled,
20
- broadcasts a :class:`NewImageEvent` via the communication interface (``comm``).
20
+ broadcasts a :class:`~pyobs.events.NewImageEvent` via the communication interface (``comm``).
21
21
  The original image is returned unchanged.
22
22
 
23
23
  :param str filename: Filename template for saving the image. The actual path is produced by
24
- :meth:`pyobs.images.Image.format_filename` using a
25
- :class:`FilenameFormatter`. Default: ``"/pyobs/image.fits"``.
26
- :param bool broadcast: If ``True``, broadcast a :class:`NewImageEvent` after saving the image.
24
+ :meth:`~pyobs.images.Image.format_filename` using a
25
+ :class:`~pyobs.utils.fits.FilenameFormatter`. Default: ``"/pyobs/image.fits"``.
26
+ :param bool broadcast: If ``True``, broadcast a :class:`~pyobs.events.NewImageEvent` after saving the image.
27
27
  Default: ``False``.
28
28
  :param kwargs: Additional keyword arguments forwarded to
29
29
  :class:`pyobs.images.processor.ImageProcessor`.
@@ -34,18 +34,19 @@ class Save(ImageProcessor):
34
34
  - Broadcasting requires a communication interface (``self.comm``) and successful registration
35
35
  of ``NewImageEvent`` in ``open()``.
36
36
  - The broadcasted event’s ``image_type`` is derived from the FITS header key ``IMAGETYP``.
37
- This key must be present and convertible to :class:`ImageType`; otherwise, an exception may be raised.
37
+ This key must be present and convertible to :class:`~pyobs.utils.enums.ImageType`;
38
+ otherwise, an exception may be raised.
38
39
 
39
- Input/Output
40
- ------------
40
+ Save input/output
41
+ -----------------
41
42
  - Input: :class:`pyobs.images.Image`
42
43
  - Output: :class:`pyobs.images.Image` (unchanged), with side effects:
43
44
 
44
45
  - Image is saved to the virtual file system.
45
46
  - Optional event broadcast after saving.
46
47
 
47
- Configuration (YAML)
48
- --------------------
48
+ Save configuration (YAML)
49
+ -------------------------
49
50
  Save and broadcast new images:
50
51
 
51
52
  .. code-block:: yaml
@@ -66,7 +67,7 @@ class Save(ImageProcessor):
66
67
  -----
67
68
  - Ensure the image header contains a valid ``IMAGETYP`` if broadcasting is enabled.
68
69
  - The actual filename may include formatted components depending on your
69
- :class:`FilenameFormatter` and :meth:`pyobs.images.Image.format_filename` implementation.
70
+ :class:`~pyobs.utils.fits.FilenameFormatter` and :meth:`~pyobs.images.Image.format_filename` implementation.
70
71
  - Errors raised by the virtual file system (e.g., write failures) or communication subsystem
71
72
  (e.g., event dispatch errors) propagate to the caller.
72
73
  """
@@ -16,14 +16,14 @@ class SaveImage(ImageProcessor):
16
16
  Save an image as an encoded byte stream (e.g., JPEG, PNG) via the virtual file system.
17
17
 
18
18
  This processor formats a destination filename using a
19
- :class:`pyobs.utils.formatter.FilenameFormatter`, encodes the input
19
+ :class:`~pyobs.utils.fits.FilenameFormatter`, encodes the input
20
20
  :class:`pyobs.images.Image` to the desired image format using Pillow, and writes
21
21
  the resulting bytes to the pyobs virtual file system (``vfs``). The original image
22
22
  object is returned unchanged.
23
23
 
24
24
  :param str filename: Filename template for saving the encoded image. The actual path is
25
25
  produced by :meth:`pyobs.images.Image.format_filename` using a
26
- :class:`FilenameFormatter`. The file extension is used to infer
26
+ :class:`~pyobs.utils.fits.FilenameFormatter`. The file extension is used to infer
27
27
  the image format if ``format`` is not provided. Default: ``"/pyobs/image.jpg"``.
28
28
  :param str format: Explicit image format to use for encoding (e.g., ``"JPEG"``, ``"PNG"``,
29
29
  ``"TIFF"``). If ``None``, the format is inferred from the filename extension.
@@ -31,27 +31,27 @@ class SaveImage(ImageProcessor):
31
31
  :param kwargs: Additional keyword arguments forwarded to
32
32
  :class:`pyobs.images.processor.ImageProcessor`.
33
33
 
34
- Behavior
35
- --------
34
+ Save Image behavior
35
+ -------------------
36
36
  - Computes the target path via ``image.format_filename(self._formatter)``.
37
37
  - Encodes the image to bytes using :meth:`SaveImage.encode_image`, which leverages Pillow:
38
38
 
39
39
  - If ``format`` is ``None``, the format is inferred from the filename extension
40
40
  (uppercased) with a special case mapping ``JPG -> JPEG``.
41
41
  - Conversion from :class:`pyobs.images.Image` to a Pillow image is performed by
42
- :class:`pyobs.utils.image.PillowHelper`.
42
+ the internal ``PillowHelper``.
43
43
 
44
44
  - Writes the encoded bytes to the virtual file system using ``self.vfs.write_bytes(filename, data)``.
45
45
  - Returns the original image without modification.
46
46
 
47
- Input/Output
48
- ------------
47
+ Save Image input/output
48
+ -----------------------
49
49
  - Input: :class:`pyobs.images.Image`
50
50
  - Output: :class:`pyobs.images.Image` (unchanged), with side effect of writing encoded
51
51
  bytes to the virtual file system at the formatted path.
52
52
 
53
- Configuration (YAML)
54
- --------------------
53
+ Save Image configuration (YAML)
54
+ -------------------------------
55
55
  Save as JPEG inferred from extension:
56
56
 
57
57
  .. code-block:: yaml