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.
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/PKG-INFO +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/circle.py +8 -8
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/crosshair.py +8 -8
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/text.py +8 -8
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/dotnet.py +7 -7
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/calibration.py +5 -5
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/daophot.py +9 -9
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/pysep.py +9 -9
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/simpledisk.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/addfitsheaders.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/download.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/flip.py +4 -4
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/grayscale.py +8 -8
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/httpserver.py +9 -9
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/normalize.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/save.py +12 -11
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/saveimage.py +9 -9
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/smooth.py +12 -12
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/softbin.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/addmask.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/catalogcircularmask.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/circularmask.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/createfilename.py +11 -11
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/imagesourcefilter.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/removebackground.py +7 -7
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/astrometry.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/brighteststar.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/brighteststar_guiding.py +9 -8
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/dummyoffsets.py +7 -7
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/dummyskyoffsets.py +10 -10
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/fitsheader.py +7 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/pixeloffsets.py +8 -8
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/projected.py +6 -6
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/spilled_light.py +9 -10
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/autoguiding.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/dummyguiding.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/scienceframeguiding.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/object.py +6 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/observation.py +6 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/dataprovider.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/task.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/config.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/fits.py +2 -2
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/grid.py +1 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/gridnode.py +2 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/pipeline.py +1 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/time.py +4 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/__init__.py +3 -2
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/httpfile.py +2 -2
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/vfs.py +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyproject.toml +1 -1
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/.gitignore +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/LICENSE +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/application.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/background_task.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/_cli.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/pyobs.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/pyobsd.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/cli/pyobsw.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/comm.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/commlogging.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/dummy/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/dummy/dummycomm.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/local/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/local/localcomm.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/local/localnetwork.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/proxy.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/rpc.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/serializer.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009/binding.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xmppclient.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/comm/xmpp/xmppcomm.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/badweather.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/event.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/exposurestatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/filterchanged.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/focusfound.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/goodweather.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/log.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/modechanged.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/moduleclosed.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/moduleopened.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/motionstatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/move.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/newimage.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/newspectrum.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/offsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/roofclosing.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/roofopened.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/taskfailed.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/taskfinished.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/taskstarted.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/events/testevent.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/image.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/altazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/exptime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/genericoffset.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/onskydistance.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/radecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/meta/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processor.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/_daobackgroundremover.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/_pillow.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/_source_catalog.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/sourcedetection.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/exptime/star.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/misc/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/offsets/offsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/photometry.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/photutil.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/photometry/pysep.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/wcs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAbortable.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAcquisition.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAutoFocus.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAutoGuiding.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IAutonomous.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IBinning.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ICalibrate.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ICamera.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IConfig.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ICooling.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IData.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IDataSequence.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IDome.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IExposure.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IExposureTime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFilters.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFlatField.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFocusModel.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IFocuser.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IGain.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IImageFormat.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IImageType.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IMode.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IModule.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IMotion.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IMultiFiber.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingAltAz.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingBody.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingRaDec.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IPointingSeries.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IReady.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRoof.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRotation.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRunnable.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IRunning.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IScriptRunner.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ISpectrograph.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IStartStop.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IStructuredConfig.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ISyncTarget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITelescope.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITemperatures.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITrackingMode.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/ITrackingRate.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IVideo.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IWeather.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/IWindow.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/interfaces/interface.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/camerasettings.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/fitsnamespace.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/follow.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/motionstatus.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/waitformotion.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/mixins/weatheraware.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/adaptive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/basecamera.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/basespectrograph.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/basevideo.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/dummycamera.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/dummyspectrograph.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/dummyvideo.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/camera/pipelinecamera.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/flatfield.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/pointing.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/flatfield/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/dummyautofocus.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/focusmodel.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/focus/focusseries.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/imagewatcher.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/imagewriter.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/image/seeing.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/module.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/_base.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/_baseguiding.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/acquisition.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/dummyacquisition.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/mastermind.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/pointing.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/robotic/scriptrunner.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/basedome.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/baseroof.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/roof/dummyroof.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/basetelescope.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/test/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/test/standalone.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/dummymode.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/fluentlogger.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/httpfilecache.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/kiosk.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/matrix.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/stellarium.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/telegram.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/utils/trigger.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/mockweather.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/weather.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/weather_api.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/modules/weather/weather_state.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/py.typed +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/_executor.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/constant.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/follow.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/interval.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/merit.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/random.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/merits/transit.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/targets/target.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/cases.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/conditional.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/parallel.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/selector.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/control/sequential.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/scripts/utils/log.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/_portal.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/configdb.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/task.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/memory/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/portal/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/portal/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/portal/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/storage/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/archive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/local_archive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/average.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/cache.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/config_schema.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/coordinates.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/curvefit.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/enums.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/base.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/photometry.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/focusseries/projection.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/grids/filters.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/binningwidget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/exposewidget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/http.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/influxdb.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logger.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logging/context.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/logging/resolvableerror.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/modulegui.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/applyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/parallel.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/progress.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/reduction.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/pipeline/reduction_base.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/csv.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/http.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/log.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/multi.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/publisher/publisher.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/serialization.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/shellcommand.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/threads/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/threads/lockwithabort.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/units.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/utils/versions.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/version.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/archivefile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/bufferedfile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/file.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/filelists/__init__.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/filelists/filelist.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/filelists/testing.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/localfile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/memfile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/sftpfile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/smbfile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/sshfile.py +0 -0
- {pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/vfs/tempfile.py +0 -0
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/circle.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
- Converts the input image to a Pillow image using
|
|
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
|
-
|
|
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
|
-
|
|
58
|
-
|
|
57
|
+
Circle configuration (YAML)
|
|
58
|
+
---------------------------
|
|
59
59
|
Draw a red outlined circle:
|
|
60
60
|
|
|
61
61
|
.. code-block:: yaml
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/crosshair.py
RENAMED
|
@@ -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
|
-
|
|
38
|
-
|
|
39
|
-
- Converts the input to a Pillow image via
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
83
|
+
the internal ``PillowHelper``.
|
|
84
84
|
- The line width scales with radius and is not independently configurable.
|
|
85
85
|
"""
|
|
86
86
|
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/annotation/text.py
RENAMED
|
@@ -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
|
-
|
|
48
|
-
|
|
49
|
-
- Converts the input image to a Pillow image via
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/astrometry/dotnet.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
50
|
-
- Logs request metadata via
|
|
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
|
|
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
|
|
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
|
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/calibration/calibration.py
RENAMED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/daophot.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
"""
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/pysep.py
RENAMED
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
116
|
+
or use defaults in ``PySepStatsCalculator``.
|
|
117
117
|
"""
|
|
118
118
|
|
|
119
119
|
__module__ = "pyobs.images.processors.detection"
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/detection/simpledisk.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
59
|
-
|
|
58
|
+
Simple Disk configuration (YAML)
|
|
59
|
+
--------------------------------
|
|
60
60
|
Basic detection with a custom threshold:
|
|
61
61
|
|
|
62
62
|
.. code-block:: yaml
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/addfitsheaders.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
|
|
41
|
+
Flip configuration (YAML)
|
|
42
|
+
-------------------------
|
|
43
43
|
Instantiate and configure via YAML, for example:
|
|
44
44
|
|
|
45
45
|
.. code-block:: yaml
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/grayscale.py
RENAMED
|
@@ -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
|
-
|
|
31
|
-
|
|
32
|
-
- Calls :meth
|
|
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
|
-
|
|
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
|
|
42
|
+
on the implementation of :meth:`~pyobs.images.Image.to_grayscale`).
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
Grayscale configuration (YAML)
|
|
45
|
+
------------------------------
|
|
46
46
|
Default Rec. 709 weights:
|
|
47
47
|
|
|
48
48
|
.. code-block:: yaml
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/httpserver.py
RENAMED
|
@@ -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 :
|
|
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
|
-
|
|
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
|
-
:
|
|
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
|
-
|
|
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
|
-
|
|
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 :
|
|
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"
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/normalize.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
25
|
-
:class
|
|
26
|
-
:param bool broadcast: If ``True``, broadcast a :class
|
|
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
|
|
37
|
+
This key must be present and convertible to :class:`~pyobs.utils.enums.ImageType`;
|
|
38
|
+
otherwise, an exception may be raised.
|
|
38
39
|
|
|
39
|
-
|
|
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
|
-
|
|
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
|
|
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
|
"""
|
{pyobs_core-2.0.0.dev97 → pyobs_core-2.0.0.dev99}/pyobs/images/processors/image/saveimage.py
RENAMED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
54
|
-
|
|
53
|
+
Save Image configuration (YAML)
|
|
54
|
+
-------------------------------
|
|
55
55
|
Save as JPEG inferred from extension:
|
|
56
56
|
|
|
57
57
|
.. code-block:: yaml
|