pyobs-core 2.0.0.dev89__tar.gz → 2.0.0.dev90__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.dev89 → pyobs_core-2.0.0.dev90}/PKG-INFO +1 -1
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/backend/observationarchive.py +26 -14
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/backend/taskarchive.py +24 -11
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyproject.toml +1 -1
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/.gitignore +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/LICENSE +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/application.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/background_task.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/cli/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/cli/_cli.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/cli/pyobs.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/cli/pyobsd.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/cli/pyobsw.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/comm.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/commlogging.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/dummy/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/dummy/dummycomm.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/local/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/local/localcomm.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/local/localnetwork.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/proxy.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/rpc.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/serializer.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009/binding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xmppclient.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xmppcomm.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/badweather.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/event.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/exposurestatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/filterchanged.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/focusfound.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/goodweather.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/log.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/modechanged.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/moduleclosed.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/moduleopened.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/motionstatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/move.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/newimage.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/newspectrum.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/offsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/roofclosing.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/roofopened.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/taskfailed.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/taskfinished.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/taskstarted.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/events/testevent.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/image.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/altazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/exptime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/genericoffset.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/onskydistance.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/radecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/meta/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processor.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/_daobackgroundremover.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/_pillow.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/circle.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/crosshair.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/text.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/dotnet.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/calibration/calibration.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/_source_catalog.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/daophot.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/pysep.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/simpledisk.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/sourcedetection.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/exptime/star.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/addfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/download.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/flip.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/grayscale.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/httpserver.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/normalize.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/save.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/saveimage.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/smooth.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/softbin.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/addmask.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/catalogcircularmask.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/circularmask.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/createfilename.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/imagesourcefilter.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/removebackground.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/brighteststar.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/brighteststar_guiding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/dummyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/dummyskyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/offsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/projected.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/spilled_light.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/photometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/photutil.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/pysep.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/wcs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IAbortable.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IAcquisition.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IAutoFocus.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IAutoGuiding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IAutonomous.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IBinning.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ICalibrate.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ICamera.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IConfig.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ICooling.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IData.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IDataSequence.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IDome.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IExposure.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IExposureTime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IFilters.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IFlatField.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IFocusModel.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IFocuser.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IGain.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IImageFormat.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IImageType.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IMode.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IModule.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IMotion.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IMultiFiber.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingAltAz.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingBody.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingRaDec.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingSeries.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IReady.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IRoof.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IRotation.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IRunnable.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IRunning.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IScriptRunner.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ISpectrograph.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IStartStop.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IStructuredConfig.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ISyncTarget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ITelescope.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ITemperatures.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ITrackingMode.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/ITrackingRate.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IVideo.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IWeather.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IWindow.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/interface.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/camerasettings.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/fitsnamespace.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/follow.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/motionstatus.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/waitformotion.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/mixins/weatheraware.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/adaptive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/basecamera.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/basespectrograph.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/basevideo.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/dummycamera.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/dummyspectrograph.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/dummyvideo.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/camera/pipelinecamera.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/flatfield/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/flatfield/flatfield.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/flatfield/pointing.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/flatfield/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/focus/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/focus/dummyautofocus.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/focus/focusmodel.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/focus/focusseries.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/image/imagewatcher.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/image/imagewriter.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/image/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/image/seeing.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/module.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/_base.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/_baseguiding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/acquisition.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/autoguiding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/dummyacquisition.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/dummyguiding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/pointing/scienceframeguiding.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/robotic/mastermind.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/robotic/pointing.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/robotic/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/robotic/scriptrunner.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/roof/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/roof/basedome.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/roof/baseroof.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/roof/dummyroof.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/telescope/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/telescope/basetelescope.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/test/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/test/standalone.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/dummymode.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/fluentlogger.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/httpfilecache.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/kiosk.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/matrix.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/stellarium.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/telegram.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/utils/trigger.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/weather/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/weather/mockweather.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/weather/weather.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/weather/weather_api.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/modules/weather/weather_state.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/object.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/py.typed +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/observation.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/_executor.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/dataprovider.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/constant.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/follow.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/interval.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/merit.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/random.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/merits/transit.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/targets/target.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/control/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/control/cases.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/control/conditional.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/control/parallel.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/control/selector.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/control/sequential.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/scripts/utils/log.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/backend/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/_portal.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/configdb.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/task.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/memory/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/task.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/archive/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/archive/archive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/archive/local_archive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/average.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/cache.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/config.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/config_schema.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/coordinates.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/curvefit.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/enums.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/fits.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/focusseries/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/focusseries/base.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/focusseries/photometry.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/focusseries/projection.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/grids/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/grids/filters.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/grids/grid.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/grids/gridnode.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/grids/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/binningwidget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/exposewidget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/http.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/influxdb.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/logger.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/logging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/logging/context.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/logging/resolvableerror.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/modulegui.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/offsets/applyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/parallel.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/pipeline/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/pipeline/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/pipeline/progress.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/pipeline/reduction.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/pipeline/reduction_base.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/publisher/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/publisher/csv.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/publisher/http.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/publisher/log.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/publisher/multi.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/publisher/publisher.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/serialization.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/shellcommand.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/threads/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/threads/lockwithabort.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/time.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/units.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/utils/versions.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/version.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/archivefile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/bufferedfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/file.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/filelists/__init__.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/filelists/filelist.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/filelists/testing.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/httpfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/localfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/memfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/sftpfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/smbfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/sshfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/tempfile.py +0 -0
- {pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/vfs/vfs.py +0 -0
|
@@ -32,6 +32,7 @@ class BackendObservationArchive(ObservationArchive):
|
|
|
32
32
|
self._mode = mode
|
|
33
33
|
self._aiohttp_session: aiohttp.ClientSession | None = None
|
|
34
34
|
self._last_update: Time | None = None
|
|
35
|
+
self._last_marker: Time | None = None
|
|
35
36
|
self._observations = ObservationList()
|
|
36
37
|
|
|
37
38
|
if auto_update:
|
|
@@ -56,30 +57,41 @@ class BackendObservationArchive(ObservationArchive):
|
|
|
56
57
|
return self._aiohttp_session
|
|
57
58
|
|
|
58
59
|
async def _check_for_changes(self) -> None:
|
|
59
|
-
"""Update schedule in background."""
|
|
60
|
+
"""Update schedule in background, gated on the backend's update marker."""
|
|
60
61
|
|
|
61
62
|
while True:
|
|
62
63
|
try:
|
|
63
|
-
await self.
|
|
64
|
+
await self._poll()
|
|
64
65
|
except Exception as e:
|
|
65
66
|
log.error("Failed to update observations from backend: %s", e)
|
|
66
67
|
await asyncio.sleep(5)
|
|
67
68
|
|
|
69
|
+
async def _poll(self) -> None:
|
|
70
|
+
"""Re-download the schedule when the backend's ``last_observation_update`` marker moved.
|
|
71
|
+
|
|
72
|
+
The marker is a DB-derived ``Max(updated_at)`` (pyobs-robotic-backend#84), truthful across
|
|
73
|
+
gunicorn workers, so it is a safe refresh gate; see ``BackendTaskArchive._poll``. The
|
|
74
|
+
content comparison in :meth:`_update` still decides whether to fire ``on_tasks_changed``.
|
|
75
|
+
"""
|
|
76
|
+
last_update = await self.last_update_time()
|
|
77
|
+
if self._last_marker is None or last_update > self._last_marker:
|
|
78
|
+
await self._update()
|
|
79
|
+
self._last_marker = last_update
|
|
80
|
+
|
|
68
81
|
async def _update(self) -> None:
|
|
69
82
|
"""Fetch the schedule from the backend and apply it if anything changed.
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
``
|
|
78
|
-
|
|
79
|
-
which
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
refetch.
|
|
84
|
+
Called by :meth:`_poll` after the backend marker moved (or on the first poll). Changes are
|
|
85
|
+
detected by comparing full observation contents via ``model_dump(use_task_id=True)``,
|
|
86
|
+
keyed by observation ID so a stable reordering of the same items is not mistaken for a
|
|
87
|
+
change: the backend serializes ``task`` as a plain FK ID, while cached copies get their
|
|
88
|
+
``task`` replaced by a full ``Task`` when the mastermind calls ``fetch_task()``, so the ID
|
|
89
|
+
normalization keeps both sides comparable. The comparison includes ``state``
|
|
90
|
+
(``Observation.__eq__`` ignores it), which matters for in-set transitions such as
|
|
91
|
+
``pending`` -> ``in_progress``; observations leaving the fetched set -- e.g.
|
|
92
|
+
``window_expired``, which the server-side ``state``/``end_after`` filters drop -- are
|
|
93
|
+
picked up as list shrinkage on the next marker-triggered refetch (the ``mark_window_expired``
|
|
94
|
+
sweep stamps ``updated_at``, so expiry moves the marker within one sweep interval).
|
|
83
95
|
"""
|
|
84
96
|
observations = await self._get_schedule()
|
|
85
97
|
if {o.id: o.model_dump(use_task_id=True) for o in observations} != {
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/robotic/storage/backend/taskarchive.py
RENAMED
|
@@ -28,6 +28,7 @@ class BackendTaskArchive(TaskArchive):
|
|
|
28
28
|
self._token = token
|
|
29
29
|
self._aiohttp_session: aiohttp.ClientSession | None = None
|
|
30
30
|
self._last_update: Time | None = None
|
|
31
|
+
self._last_marker: Time | None = None
|
|
31
32
|
self._projects: list[Project] = list()
|
|
32
33
|
self._tasks: list[Task] = list()
|
|
33
34
|
|
|
@@ -53,26 +54,38 @@ class BackendTaskArchive(TaskArchive):
|
|
|
53
54
|
return self._aiohttp_session
|
|
54
55
|
|
|
55
56
|
async def _check_for_changes(self) -> None:
|
|
56
|
-
"""Update tasks in background."""
|
|
57
|
+
"""Update tasks in background, gated on the backend's update marker."""
|
|
57
58
|
while True:
|
|
58
59
|
try:
|
|
59
|
-
await self.
|
|
60
|
+
await self._poll()
|
|
60
61
|
except Exception as e:
|
|
61
62
|
log.error("Failed to update tasks from backend: %s", e)
|
|
62
63
|
await asyncio.sleep(5)
|
|
63
64
|
|
|
65
|
+
async def _poll(self) -> None:
|
|
66
|
+
"""Re-download tasks/projects when the backend's ``last_task_update`` marker moved.
|
|
67
|
+
|
|
68
|
+
The marker is a DB-derived ``Max(updated_at)`` (pyobs-robotic-backend#84), truthful across
|
|
69
|
+
gunicorn workers, so it is a safe refresh gate. Without it the archive re-downloaded (and
|
|
70
|
+
re-compared) on every poll, and the content comparison misfired whenever runtime code
|
|
71
|
+
mutated a serialized task field (e.g. ``DynamicTarget.resolve()`` overwriting ``name``),
|
|
72
|
+
livelocking the scheduler. The content comparison in :meth:`_update` still decides whether
|
|
73
|
+
to fire ``on_tasks_changed``.
|
|
74
|
+
"""
|
|
75
|
+
last_update = await self.last_update_time()
|
|
76
|
+
if self._last_marker is None or last_update > self._last_marker:
|
|
77
|
+
await self._update()
|
|
78
|
+
self._last_marker = last_update
|
|
79
|
+
|
|
64
80
|
async def _update(self) -> None:
|
|
65
81
|
"""Fetch tasks/projects from the backend and apply them if anything changed.
|
|
66
82
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
``
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
``can_run()``) and would flag unchanged tasks as changed on every poll; it is keyed by ID
|
|
74
|
-
so that a stable reordering of the same items (e.g. an unordered backend queryset) is not
|
|
75
|
-
mistaken for a change.
|
|
83
|
+
Called by :meth:`_poll` after the backend marker moved (or on the first poll); applies the
|
|
84
|
+
download only when the content actually differs from the cached copy. The comparison uses
|
|
85
|
+
``model_dump()`` rather than pydantic ``==``, which also compares runtime attributes (e.g.
|
|
86
|
+
``Task._cant_run_reason`` set by ``can_run()``) and would flag unchanged tasks as changed
|
|
87
|
+
on every poll; it is keyed by ID so that a stable reordering of the same items (e.g. an
|
|
88
|
+
unordered backend queryset) is not mistaken for a change.
|
|
76
89
|
"""
|
|
77
90
|
projects = await self._get_projects()
|
|
78
91
|
tasks = await self._get_tasks()
|
|
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.dev89 → pyobs_core-2.0.0.dev90}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/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.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/_daobackgroundremover.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/_pillow.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/circle.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/crosshair.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/annotation/text.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/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.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/astrometry/dotnet.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/calibration/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/calibration/calibration.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/daophot.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/pysep.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/detection/simpledisk.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/exptime/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/exptime/exptime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/addfitsheaders.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/grayscale.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/httpserver.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/image/normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/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.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/circularmask.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/createfilename.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/imagesourcefilter.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/misc/removebackground.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/modules/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/modules/getfitsheaders.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/brighteststar.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/dummyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/dummyskyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/fitsheader.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/offsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/pixeloffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/projected.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/offsets/spilled_light.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/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.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/photometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/images/processors/photometry/photutil.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/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
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingHeliocentricPolar.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingHelioprojective.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev89 → pyobs_core-2.0.0.dev90}/pyobs/interfaces/IPointingOrbitalElements.py
RENAMED
|
File without changes
|