pyobs-core 2.0.0.dev61__tar.gz → 2.0.0.dev63__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.dev61 → pyobs_core-2.0.0.dev63}/PKG-INFO +1 -1
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/fitsheader.py +11 -3
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/acquisition.py +1 -1
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/backend/observationarchive.py +9 -3
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/backend/taskarchive.py +5 -5
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/http.py +16 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyproject.toml +1 -1
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/.gitignore +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/LICENSE +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/application.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/background_task.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/cli/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/cli/_cli.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/cli/pyobs.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/cli/pyobsd.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/cli/pyobsw.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/comm.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/commlogging.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/dummy/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/dummy/dummycomm.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/local/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/local/localcomm.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/local/localnetwork.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/proxy.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/rpc.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/serializer.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009/binding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xmppclient.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xmppcomm.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/badweather.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/event.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/exposurestatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/filterchanged.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/focusfound.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/goodweather.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/log.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/modechanged.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/moduleclosed.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/moduleopened.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/motionstatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/move.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/newimage.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/newspectrum.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/offsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/roofclosing.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/roofopened.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/taskfailed.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/taskfinished.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/taskstarted.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/events/testevent.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/image.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/altazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/exptime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/genericoffset.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/onskydistance.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/radecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/meta/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processor.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/_daobackgroundremover.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/_pillow.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/circle.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/crosshair.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/text.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/dotnet.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/calibration/calibration.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/_source_catalog.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/daophot.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/pysep.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/simpledisk.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/sourcedetection.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/exptime/star.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/addfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/download.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/flip.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/grayscale.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/httpserver.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/normalize.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/save.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/saveimage.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/smooth.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/softbin.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/addmask.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/catalogcircularmask.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/circularmask.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/createfilename.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/imagesourcefilter.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/removebackground.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/brighteststar.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/brighteststar_guiding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/dummyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/dummyskyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/offsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/projected.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/spilled_light.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/photometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/photutil.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/pysep.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/wcs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IAbortable.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IAcquisition.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IAutoFocus.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IAutoGuiding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IAutonomous.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IBinning.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ICalibrate.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ICamera.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IConfig.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ICooling.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IData.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IDataSequence.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IDome.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IExposure.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IExposureTime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IFilters.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IFlatField.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IFocusModel.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IFocuser.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IGain.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IImageFormat.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IImageType.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IMode.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IModule.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IMotion.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IMultiFiber.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingAltAz.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingBody.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingRaDec.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IPointingSeries.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IReady.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IRoof.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IRotation.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IRunnable.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IRunning.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IScriptRunner.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ISpectrograph.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IStartStop.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IStructuredConfig.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ISyncTarget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ITelescope.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ITemperatures.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ITrackingMode.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/ITrackingRate.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IVideo.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IWeather.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/IWindow.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/interfaces/interface.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/camerasettings.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/fitsnamespace.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/follow.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/motionstatus.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/waitformotion.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/mixins/weatheraware.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/adaptive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/basecamera.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/basespectrograph.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/basevideo.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/dummycamera.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/dummyspectrograph.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/dummyvideo.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/camera/pipelinecamera.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/flatfield/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/flatfield/flatfield.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/flatfield/pointing.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/flatfield/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/focus/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/focus/dummyautofocus.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/focus/focusmodel.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/focus/focusseries.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/image/imagewatcher.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/image/imagewriter.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/image/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/image/seeing.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/module.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/_base.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/_baseguiding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/autoguiding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/dummyacquisition.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/dummyguiding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/pointing/scienceframeguiding.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/robotic/mastermind.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/robotic/pointing.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/robotic/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/robotic/scriptrunner.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/roof/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/roof/basedome.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/roof/baseroof.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/roof/dummyroof.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/telescope/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/telescope/basetelescope.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/test/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/test/standalone.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/dummymode.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/fluentlogger.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/httpfilecache.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/kiosk.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/matrix.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/stellarium.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/telegram.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/utils/trigger.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/weather/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/weather/mockweather.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/weather/weather.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/weather/weather_api.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/modules/weather/weather_state.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/object.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/py.typed +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/observation.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/_executor.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/dataprovider.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/constant.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/follow.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/interval.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/merit.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/random.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/merits/transit.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/targets/target.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/control/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/control/cases.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/control/conditional.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/control/parallel.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/control/selector.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/control/sequential.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/scripts/utils/log.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/backend/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/_portal.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/configdb.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/task.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/memory/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/task.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/archive/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/archive/archive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/archive/local_archive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/average.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/cache.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/config.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/config_schema.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/coordinates.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/curvefit.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/enums.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/fits.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/focusseries/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/focusseries/base.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/focusseries/photometry.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/focusseries/projection.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/grids/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/grids/filters.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/grids/grid.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/grids/gridnode.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/grids/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/binningwidget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/exposewidget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/influxdb.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/logger.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/logging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/logging/context.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/logging/resolvableerror.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/modulegui.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/offsets/applyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/parallel.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/pipeline/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/pipeline/night.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/pipeline/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/publisher/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/publisher/csv.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/publisher/http.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/publisher/log.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/publisher/multi.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/publisher/publisher.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/serialization.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/shellcommand.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/threads/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/threads/lockwithabort.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/time.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/utils/units.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/version.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/archivefile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/bufferedfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/file.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/filelists/__init__.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/filelists/filelist.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/filelists/testing.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/httpfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/localfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/memfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/sftpfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/smbfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/sshfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/tempfile.py +0 -0
- {pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/vfs/vfs.py +0 -0
|
@@ -277,6 +277,11 @@ class ImageFitsHeaderMixin(FitsHeaderMixin):
|
|
|
277
277
|
self._fitsheadermixin_centre = centre
|
|
278
278
|
self._fitsheadermixin_rotation = rotation
|
|
279
279
|
|
|
280
|
+
# only warn once per missing-header case, since these repeat on every single frame
|
|
281
|
+
self._fitsheadermixin_warned_cdelt = False
|
|
282
|
+
self._fitsheadermixin_warned_crpix = False
|
|
283
|
+
self._fitsheadermixin_warned_cd_matrix = False
|
|
284
|
+
|
|
280
285
|
@property
|
|
281
286
|
def rotation(self) -> float | None:
|
|
282
287
|
return self._fitsheadermixin_rotation
|
|
@@ -322,8 +327,9 @@ class ImageFitsHeaderMixin(FitsHeaderMixin):
|
|
|
322
327
|
hdr["CUNIT1"] = ("deg", "Units of CRVAL1, CDELT1")
|
|
323
328
|
hdr["CUNIT2"] = ("deg", "Units of CRVAL2, CDELT2")
|
|
324
329
|
hdr["WCSAXES"] = (2, "Number of WCS axes")
|
|
325
|
-
|
|
330
|
+
elif not self._fitsheadermixin_warned_cdelt:
|
|
326
331
|
log.warning("Could not calculate CDELT1/CDELT2 (DET-PIXL/TEL-FOCL/DET-BIN1/DET-BIN2 missing).")
|
|
332
|
+
self._fitsheadermixin_warned_cdelt = True
|
|
327
333
|
|
|
328
334
|
# centre pixel
|
|
329
335
|
if self._fitsheadermixin_centre is not None:
|
|
@@ -341,10 +347,11 @@ class ImageFitsHeaderMixin(FitsHeaderMixin):
|
|
|
341
347
|
off_y = v("YORGSUBF") if "YORGSUBF" in hdr else 0.0
|
|
342
348
|
hdr["CRPIX1"] = ((v("DET-CPX1") - off_x) / v("DET-BIN1"), "Reference x-pixel position in binned image")
|
|
343
349
|
hdr["CRPIX2"] = ((v("DET-CPX2") - off_y) / v("DET-BIN2"), "Reference y-pixel position in binned image")
|
|
344
|
-
|
|
350
|
+
elif not self._fitsheadermixin_warned_crpix:
|
|
345
351
|
log.warning(
|
|
346
352
|
"Could not calculate CRPIX1/CRPIX2 " "(XORGSUBF/YORGSUBF/DET-CPX1/TEL-CPX2/DET-BIN1/DET-BIN2) missing."
|
|
347
353
|
)
|
|
354
|
+
self._fitsheadermixin_warned_crpix = True
|
|
348
355
|
# only add all this stuff for OBJECT images
|
|
349
356
|
if "IMAGETYP" not in hdr or hdr["IMAGETYP"] not in ["dark", "bias"]:
|
|
350
357
|
# projection, only override if not already set
|
|
@@ -368,8 +375,9 @@ class ImageFitsHeaderMixin(FitsHeaderMixin):
|
|
|
368
375
|
hdr["PC1_2"] = (-sin_theta, "Partial of first axis coordinate w.r.t. y")
|
|
369
376
|
hdr["PC2_1"] = (+sin_theta, "Partial of second axis coordinate w.r.t. x")
|
|
370
377
|
hdr["PC2_2"] = (+cos_theta, "Partial of second axis coordinate w.r.t. y")
|
|
371
|
-
|
|
378
|
+
elif not self._fitsheadermixin_warned_cd_matrix:
|
|
372
379
|
log.warning("Could not calculate CD matrix (rotation or CDELT1/CDELT2 missing.")
|
|
380
|
+
self._fitsheadermixin_warned_cd_matrix = True
|
|
373
381
|
|
|
374
382
|
|
|
375
383
|
class SpectrumFitsHeaderMixin(FitsHeaderMixin):
|
|
@@ -174,7 +174,7 @@ class Acquisition(BasePointing, CameraSettingsMixin, IAcquisition):
|
|
|
174
174
|
|
|
175
175
|
# calculate distance from offset
|
|
176
176
|
if not image.has_meta(OnSkyDistance):
|
|
177
|
-
log.
|
|
177
|
+
log.info("No on-sky distance found in meta.")
|
|
178
178
|
continue
|
|
179
179
|
# raise exc.ImageError("No on sky distance found in meta.")
|
|
180
180
|
osd = image.get_meta(OnSkyDistance)
|
|
@@ -9,7 +9,7 @@ import aiohttp
|
|
|
9
9
|
|
|
10
10
|
from pyobs.robotic import ObservationArchive, Task, TaskArchive
|
|
11
11
|
from pyobs.robotic.observation import Observation, ObservationList, ObservationState
|
|
12
|
-
from pyobs.utils.http import http_request_with_retries
|
|
12
|
+
from pyobs.utils.http import http_request_paginated, http_request_with_retries
|
|
13
13
|
from pyobs.utils.time import Time
|
|
14
14
|
|
|
15
15
|
log = logging.getLogger(__name__)
|
|
@@ -146,6 +146,9 @@ class BackendObservationArchive(ObservationArchive):
|
|
|
146
146
|
if obs.state == "pending" and obs.start < time < obs.end:
|
|
147
147
|
if task_archive is not None:
|
|
148
148
|
await obs.fetch_task(task_archive)
|
|
149
|
+
if obs.task is None:
|
|
150
|
+
log.error("Could not resolve task for observation %s, skipping.", obs.id)
|
|
151
|
+
continue
|
|
149
152
|
return obs
|
|
150
153
|
else:
|
|
151
154
|
return None
|
|
@@ -165,6 +168,9 @@ class BackendObservationArchive(ObservationArchive):
|
|
|
165
168
|
if obs.state == "in_progress":
|
|
166
169
|
if task_archive is not None:
|
|
167
170
|
await obs.fetch_task(task_archive)
|
|
171
|
+
if obs.task is None:
|
|
172
|
+
log.error("Could not resolve task for observation %s, skipping.", obs.id)
|
|
173
|
+
continue
|
|
168
174
|
return obs
|
|
169
175
|
else:
|
|
170
176
|
return None
|
|
@@ -223,8 +229,8 @@ class BackendObservationArchive(ObservationArchive):
|
|
|
223
229
|
params["end_before"] = end_before.isot
|
|
224
230
|
if end_after is not None:
|
|
225
231
|
params["end_after"] = end_after.isot
|
|
226
|
-
observations = await
|
|
227
|
-
return ObservationList([self.pyobs_model_validate(Observation, obs) for obs in observations
|
|
232
|
+
observations = await http_request_paginated(self._session, url, params=params)
|
|
233
|
+
return ObservationList([self.pyobs_model_validate(Observation, obs) for obs in observations])
|
|
228
234
|
|
|
229
235
|
|
|
230
236
|
__all__ = ["BackendObservationArchive"]
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/robotic/storage/backend/taskarchive.py
RENAMED
|
@@ -7,7 +7,7 @@ import aiohttp
|
|
|
7
7
|
|
|
8
8
|
from pyobs.robotic.storage.taskarchive import TaskArchive
|
|
9
9
|
from pyobs.robotic.task import Project, Task
|
|
10
|
-
from pyobs.utils.http import http_request_with_retries
|
|
10
|
+
from pyobs.utils.http import http_request_paginated, http_request_with_retries
|
|
11
11
|
from pyobs.utils.time import Time
|
|
12
12
|
|
|
13
13
|
log = logging.getLogger(__name__)
|
|
@@ -75,13 +75,13 @@ class BackendTaskArchive(TaskArchive):
|
|
|
75
75
|
|
|
76
76
|
async def _get_projects(self) -> list[Project]:
|
|
77
77
|
"""Fetch projects from backend."""
|
|
78
|
-
projects = await
|
|
79
|
-
return [self.pyobs_model_validate(Project, project) for project in projects
|
|
78
|
+
projects = await http_request_paginated(self._session, urljoin(self._url, "/api/projects/"))
|
|
79
|
+
return [self.pyobs_model_validate(Project, project) for project in projects]
|
|
80
80
|
|
|
81
81
|
async def _get_tasks(self) -> list[Task]:
|
|
82
82
|
"""Fetch tasks from backend."""
|
|
83
|
-
tasks = await
|
|
84
|
-
return [self.pyobs_model_validate(Task, task) for task in tasks
|
|
83
|
+
tasks = await http_request_paginated(self._session, urljoin(self._url, "/api/tasks/"))
|
|
84
|
+
return [self.pyobs_model_validate(Task, task) for task in tasks]
|
|
85
85
|
|
|
86
86
|
async def last_changed(self) -> Time | None:
|
|
87
87
|
"""Returns time when last time any tasks changed."""
|
|
@@ -28,3 +28,19 @@ async def http_request_with_retries(
|
|
|
28
28
|
if response.status != expected_status:
|
|
29
29
|
raise RuntimeError(f"Invalid response from server: HTTP {response.status}")
|
|
30
30
|
return cast(dict[str, Any], await response.json())
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
async def http_request_paginated(
|
|
34
|
+
session: aiohttp.ClientSession, url: str, method: str = "get", expected_status: int = 200, **kwargs: Any
|
|
35
|
+
) -> list[dict[str, Any]]:
|
|
36
|
+
"""Fetches all pages of a DRF-style paginated list endpoint and returns the combined results."""
|
|
37
|
+
results: list[dict[str, Any]] = []
|
|
38
|
+
next_url: str | None = url
|
|
39
|
+
while next_url is not None:
|
|
40
|
+
data = await http_request_with_retries(
|
|
41
|
+
session, next_url, method=method, expected_status=expected_status, **kwargs
|
|
42
|
+
)
|
|
43
|
+
results.extend(data["results"])
|
|
44
|
+
next_url = data.get("next")
|
|
45
|
+
kwargs = {}
|
|
46
|
+
return results
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/_daobackgroundremover.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/_pillow.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/circle.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/crosshair.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/annotation/text.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/astrometry/dotnet.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/calibration/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/calibration/calibration.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/daophot.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/pysep.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/detection/simpledisk.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/exptime/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/exptime/exptime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/addfitsheaders.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/grayscale.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/httpserver.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/image/saveimage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/circularmask.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/createfilename.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/imagesourcefilter.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/misc/removebackground.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/modules/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/modules/getfitsheaders.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/brighteststar.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/dummyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/dummyskyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/fitsheader.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/offsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/pixeloffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/projected.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/offsets/spilled_light.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/photometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/photutil.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev61 → pyobs_core-2.0.0.dev63}/pyobs/images/processors/photometry/pysep.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|