pyobs-core 2.22.0__tar.gz → 2.23.0__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.22.0 → pyobs_core-2.23.0}/PKG-INFO +1 -1
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IMotion.py +2 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/module.py +6 -5
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/exceptions.py +12 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyproject.toml +1 -1
- pyobs_core-2.22.0/pyobs/comm/xmpp/xep_0009/binding.py +0 -170
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/.gitignore +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/LICENSE +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/README.md +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/application.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/background_task.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/cli/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/cli/_cli.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/cli/pyobs.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/cli/pyobsd.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/cli/pyobsw.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/comm.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/commlogging.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/dummy/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/dummy/dummycomm.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/local/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/local/localcomm.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/local/localnetwork.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/proxy.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/rpc.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/serializer.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xmppclient.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/comm/xmpp/xmppcomm.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/badweather.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/event.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/exposurestatuschanged.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/filewritten.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/filterchanged.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/focusfound.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/goodweather.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/log.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/modechanged.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/moduleclosed.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/moduleopened.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/motionstatuschanged.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/move.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/newdata.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/newimage.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/newspectrum.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/offsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/roofclosing.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/roofopened.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/taskfailed.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/taskfinished.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/taskskipped.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/taskstarted.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/events/testevent.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/image.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/altazoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/datapipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/exptime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/genericoffset.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/onskydistance.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/pixeloffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/radecoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/meta/skyoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processor.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/_daobackgroundremover.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/annotation/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/annotation/_pillow.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/annotation/circle.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/annotation/crosshair.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/annotation/text.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/astrometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/dotnet.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/calibration/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/calibration/calibration.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/_source_catalog.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/daophot.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/pysep.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/simpledisk.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/sourcedetection.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/exptime/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/exptime/exptime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/exptime/star.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/addfitsheaders.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/download.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/flip.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/grayscale.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/httpserver.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/normalize.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/save.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/saveimage.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/smooth.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/image/softbin.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/addmask.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/catalogcircularmask.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/circularmask.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/createfilename.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/imagesourcefilter.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/misc/removebackground.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/modules/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/astrometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/brighteststar.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/brighteststar_guiding.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/dummyoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/dummyskyoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/fitsheader.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/offsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/pixeloffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/projected.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/spilled_light.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/photometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/photutil.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/pysep.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/stack/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/stack/combinestack.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/stack/mean.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/stack/median.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/stack/sigmaclip.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/stack/sum.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/wcs/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IAbortable.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IAcquisition.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IAutoFocus.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IAutoGuiding.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IAutonomous.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IBinning.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ICalibrate.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ICamera.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IConfig.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ICooling.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IData.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IDataPipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IDataSequence.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IDataStack.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IDome.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IExposure.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IExposureTime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IFilters.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IFlatField.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IFocusModel.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IFocuser.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IGain.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IImageFormat.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IImageType.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IMode.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IModule.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IMultiFiber.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingAltAz.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingBody.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingRaDec.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPointingSeries.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IPushNotifications.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IReady.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IResettable.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IRobotic.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IRoboticScheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IRoof.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IRotation.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IRunnable.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IRunning.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IScriptRunner.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ISpectrograph.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IStartStop.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IStructuredConfig.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ISyncTarget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ITelescope.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ITemperatures.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ITrackingMode.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/ITrackingRate.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IVideo.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IWeather.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/IWindow.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/interfaces/interface.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/camerasettings.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/datapipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/datasequence.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/fitsheader.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/fitsnamespace.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/follow.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/motionstatus.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/pipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/waitformotion.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/mixins/weatheraware.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/adaptive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/basecamera.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/basedata.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/basespectrograph.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/basevideo.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/dummycamera.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/dummyspectrograph.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/dummyvideo.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/pipelinecamera.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/camera/videoframes.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/flatfield/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/flatfield/flatfield.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/flatfield/pointing.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/flatfield/scheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/focus/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/focus/dummyautofocus.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/focus/focusmodel.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/focus/focusseries.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/image/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/image/imagewatcher.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/image/imagewriter.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/image/pipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/image/seeing.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/_base.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/_baseguiding.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/acquisition.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/autoguiding.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/dummyacquisition.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/dummyguiding.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/guidingsource.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/pointing/scienceframeguiding.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/dummymastermind.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/dummyscheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/mastermind.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/pointing.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/scheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/robotic/scriptrunner.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/roof/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/roof/basedome.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/roof/baseroof.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/roof/dummyroof.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/telescope/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/telescope/basetelescope.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/test/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/test/standalone.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/dummymode.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/dummystructuredconfig.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/fluentlogger.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/httpfilecache.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/kiosk.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/matrix.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/pushnotifier.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/stellarium.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/telegram.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/utils/trigger.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/weather/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/weather/mockweather.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/weather/weather.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/weather/weather_api.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/modules/weather/weather_state.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/object.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/py.typed +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/instruments.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/observation.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/_executor.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/dataprovider.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/constant.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/follow.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/interval.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/merit.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/random.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/merits/transit.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/observingperiod.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/targets/target.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/control/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/control/cases.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/control/conditional.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/control/parallel.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/control/selector.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/control/sequential.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/exceptions.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/script.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/utils/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/scripts/utils/log.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/_portal.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/configdb.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/task.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/memory/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/observationarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/portal/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/portal/observationarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/portal/taskarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/storage/taskarchive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/task.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/taskrunner.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/archive/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/archive/archive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/archive/local_archive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/calibration.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/exptime/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/exptime/exptime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/average.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/cache.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/config.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/config_schema.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/coordinates.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/curvefit.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/enums.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/exptime_grouping.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/fits.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/focusseries/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/focusseries/base.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/focusseries/photometry.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/focusseries/projection.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/grids/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/grids/filters.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/grids/grid.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/grids/gridnode.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/grids/pipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/binningwidget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/exposewidget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/http.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/influxdb.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/logger.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/logging/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/logging/context.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/logging/resolvableerror.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/modulegui.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/offsets/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/offsets/applyoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/parallel.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/pipeline/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/pipeline/pipeline.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/pipeline/progress.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/pipeline/reduction.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/pipeline/reduction_base.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/publisher/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/publisher/csv.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/publisher/http.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/publisher/log.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/publisher/multi.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/publisher/publisher.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/serialization.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/shellcommand.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/stretch.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/threads/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/threads/lockwithabort.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/time.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/units.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/utils/versions.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/version.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/archivefile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/bufferedfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/file.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/filelists/__init__.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/filelists/filelist.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/filelists/testing.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/httpfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/localfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/memfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/sftpfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/smbfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/sshfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/tempfile.py +0 -0
- {pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/vfs/vfs.py +0 -0
|
@@ -38,6 +38,8 @@ class IMotion(IReady, metaclass=ABCMeta):
|
|
|
38
38
|
InitError: If device could not be initialized.
|
|
39
39
|
InitAbortedError: If initialization was interrupted on purpose (e.g. by park() or stop_motion()); not a
|
|
40
40
|
device fault.
|
|
41
|
+
InitRefusedError: If initialization was not started because a precondition is not met (e.g. bad
|
|
42
|
+
weather); not a device fault.
|
|
41
43
|
"""
|
|
42
44
|
...
|
|
43
45
|
|
|
@@ -251,8 +251,8 @@ class Module(Object, IModule, IConfig):
|
|
|
251
251
|
|
|
252
252
|
Args:
|
|
253
253
|
exc_type: Exception type (or a shared ancestor) to watch for. RemoteError also
|
|
254
|
-
counts remote domain faults, except expected PointingLimitError
|
|
255
|
-
InitAbortedError rejections.
|
|
254
|
+
counts remote domain faults, except expected PointingLimitError,
|
|
255
|
+
InitAbortedError and InitRefusedError rejections.
|
|
256
256
|
limit: Number of occurrences that triggers the callback.
|
|
257
257
|
timespan: If given, only count occurrences within the last timespan seconds.
|
|
258
258
|
module: If given, only count occurrences tagged as coming from this remote module
|
|
@@ -284,17 +284,18 @@ class Module(Object, IModule, IConfig):
|
|
|
284
284
|
def _counts_as_remote_error(exception: Exception) -> bool:
|
|
285
285
|
"""Classify remote domain failures for broad handlers, excluding expected rejections.
|
|
286
286
|
|
|
287
|
-
Expected rejections are PointingLimitError and
|
|
287
|
+
Expected rejections are PointingLimitError, InitAbortedError and InitRefusedError.
|
|
288
288
|
|
|
289
289
|
Actual RemoteError inheritance and explicit domain handlers are handled separately.
|
|
290
290
|
"""
|
|
291
291
|
return getattr(exception, "remote_module", None) is not None and not isinstance(
|
|
292
|
-
exception, exc.PointingLimitError | exc.InitAbortedError
|
|
292
|
+
exception, exc.PointingLimitError | exc.InitAbortedError | exc.InitRefusedError
|
|
293
293
|
)
|
|
294
294
|
|
|
295
295
|
def _store_exception(self, exception: exc.PyobsError, module: str | None) -> None:
|
|
296
296
|
# Preserve actual ancestors and classify eligible remote domain faults as RemoteError
|
|
297
|
-
# for broad severity handlers. Expected rejections (pointing limits, aborted init) retain their
|
|
297
|
+
# for broad severity handlers. Expected rejections (pointing limits, aborted or refused init) retain their
|
|
298
|
+
# domain buckets.
|
|
298
299
|
classes: list[type] = list(type(exception).__mro__)
|
|
299
300
|
if self._counts_as_remote_error(exception) and exc.RemoteError not in classes:
|
|
300
301
|
classes.append(exc.RemoteError)
|
|
@@ -138,6 +138,18 @@ class InitAbortedError(PyobsError):
|
|
|
138
138
|
pass
|
|
139
139
|
|
|
140
140
|
|
|
141
|
+
class InitRefusedError(PyobsError):
|
|
142
|
+
"""Initialization was not started because a precondition is not met, e.g. the weather is bad or another
|
|
143
|
+
motion is in progress. Nothing was attempted and the device is fine, so this is an expected outcome, not a
|
|
144
|
+
fault: don't alert, and call init() again only once the precondition holds. Deliberately neither a
|
|
145
|
+
MotionError nor an InitError, so that it never counts towards a module's repeated-motion-failure
|
|
146
|
+
escalation. Distinct from InitAbortedError, which means an init that was already running was cut short.
|
|
147
|
+
Remote rejections also do not count towards broad RemoteError severity handlers; explicit handlers for this
|
|
148
|
+
class or its ancestors still apply."""
|
|
149
|
+
|
|
150
|
+
pass
|
|
151
|
+
|
|
152
|
+
|
|
141
153
|
class GrabImageError(PyobsError):
|
|
142
154
|
pass
|
|
143
155
|
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
# Slixmpp: The Slick XMPP Library
|
|
2
|
-
# Copyright (C) 2011 Nathanael C. Fritz, Dann Martens (TOMOTON).
|
|
3
|
-
# This file is part of Slixmpp.
|
|
4
|
-
# See the file LICENSE for copying permission.
|
|
5
|
-
import base64
|
|
6
|
-
import logging
|
|
7
|
-
import time
|
|
8
|
-
from typing import Any
|
|
9
|
-
|
|
10
|
-
from slixmpp.xmlstream import ET
|
|
11
|
-
|
|
12
|
-
log = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
_namespace = "jabber:iq:rpc"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def fault2xml(code: int, message: str) -> ET.Element:
|
|
18
|
-
value: dict[str, Any] = dict()
|
|
19
|
-
value["faultCode"] = code
|
|
20
|
-
value["faultString"] = message
|
|
21
|
-
fault = ET.Element("fault", {"xmlns": _namespace})
|
|
22
|
-
fault.append(_py2xml((value,)))
|
|
23
|
-
return fault
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def xml2fault(params: ET.Element) -> dict[str, Any]:
|
|
27
|
-
vals = []
|
|
28
|
-
for value in params.findall(f"{{{_namespace}}}value"):
|
|
29
|
-
vals.append(_xml2py(value)[0])
|
|
30
|
-
fault = dict()
|
|
31
|
-
fault["code"] = vals[0]["faultCode"]
|
|
32
|
-
fault["string"] = vals[0]["faultString"]
|
|
33
|
-
return fault
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def py2xml(*args: Any) -> ET.Element:
|
|
37
|
-
params = ET.Element(f"{{{_namespace}}}params")
|
|
38
|
-
for x in args:
|
|
39
|
-
param = ET.Element(f"{{{_namespace}}}param")
|
|
40
|
-
param.append(_py2xml(x))
|
|
41
|
-
params.append(param) # <params><param>...
|
|
42
|
-
return params
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def _py2xml(*args: Any) -> ET.Element: # type: ignore[return]
|
|
46
|
-
for x in args:
|
|
47
|
-
val = ET.Element(f"{{{_namespace}}}value")
|
|
48
|
-
if x is None:
|
|
49
|
-
nil = ET.Element(f"{{{_namespace}}}nil")
|
|
50
|
-
val.append(nil)
|
|
51
|
-
elif type(x) is int:
|
|
52
|
-
i4 = ET.Element(f"{{{_namespace}}}i4")
|
|
53
|
-
i4.text = str(x)
|
|
54
|
-
val.append(i4)
|
|
55
|
-
elif type(x) is bool:
|
|
56
|
-
boolean = ET.Element(f"{{{_namespace}}}boolean")
|
|
57
|
-
boolean.text = str(int(x))
|
|
58
|
-
val.append(boolean)
|
|
59
|
-
elif type(x) is str:
|
|
60
|
-
string = ET.Element(f"{{{_namespace}}}string")
|
|
61
|
-
string.text = x
|
|
62
|
-
val.append(string)
|
|
63
|
-
elif type(x) is float:
|
|
64
|
-
double = ET.Element(f"{{{_namespace}}}double")
|
|
65
|
-
double.text = str(x)
|
|
66
|
-
val.append(double)
|
|
67
|
-
elif type(x) is rpcbase64:
|
|
68
|
-
b64 = ET.Element(f"{{{_namespace}}}base64")
|
|
69
|
-
b64.text = x.encoded()
|
|
70
|
-
val.append(b64)
|
|
71
|
-
elif type(x) is rpctime:
|
|
72
|
-
iso = ET.Element(f"{{{_namespace}}}dateTime.iso8601")
|
|
73
|
-
iso.text = str(x)
|
|
74
|
-
val.append(iso)
|
|
75
|
-
elif type(x) in (list, tuple):
|
|
76
|
-
array = ET.Element(f"{{{_namespace}}}array")
|
|
77
|
-
data = ET.Element(f"{{{_namespace}}}data")
|
|
78
|
-
for y in x:
|
|
79
|
-
data.append(_py2xml(y))
|
|
80
|
-
array.append(data)
|
|
81
|
-
val.append(array)
|
|
82
|
-
elif type(x) is dict:
|
|
83
|
-
struct = ET.Element(f"{{{_namespace}}}struct")
|
|
84
|
-
for y in x.keys():
|
|
85
|
-
member = ET.Element(f"{{{_namespace}}}member")
|
|
86
|
-
name = ET.Element(f"{{{_namespace}}}name")
|
|
87
|
-
name.text = y
|
|
88
|
-
member.append(name)
|
|
89
|
-
member.append(_py2xml(x[y]))
|
|
90
|
-
struct.append(member)
|
|
91
|
-
val.append(struct)
|
|
92
|
-
return val
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def xml2py(params: ET.Element) -> list[Any]:
|
|
96
|
-
namespace = "jabber:iq:rpc"
|
|
97
|
-
vals: list[Any] = []
|
|
98
|
-
for param in params.findall(f"{{{namespace}}}param"):
|
|
99
|
-
vals.append(_xml2py(param.find(f"{{{namespace}}}value")))
|
|
100
|
-
return vals
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
def _xml2py(value: Any) -> Any:
|
|
104
|
-
namespace = "jabber:iq:rpc"
|
|
105
|
-
find_value = value.find
|
|
106
|
-
if find_value(f"{{{namespace}}}nil") is not None:
|
|
107
|
-
return None
|
|
108
|
-
if find_value(f"{{{namespace}}}i4") is not None:
|
|
109
|
-
return int(find_value(f"{{{namespace}}}i4").text)
|
|
110
|
-
if find_value(f"{{{namespace}}}int") is not None:
|
|
111
|
-
return int(find_value(f"{{{namespace}}}int").text)
|
|
112
|
-
if find_value(f"{{{namespace}}}boolean") is not None:
|
|
113
|
-
return bool(int(find_value(f"{{{namespace}}}boolean").text))
|
|
114
|
-
if find_value(f"{{{namespace}}}string") is not None:
|
|
115
|
-
return find_value(f"{{{namespace}}}string").text
|
|
116
|
-
if find_value(f"{{{namespace}}}double") is not None:
|
|
117
|
-
return float(find_value(f"{{{namespace}}}double").text)
|
|
118
|
-
if find_value(f"{{{namespace}}}base64") is not None:
|
|
119
|
-
return rpcbase64(find_value(f"{{{namespace}}}base64").text.encode())
|
|
120
|
-
if find_value(f"{{{namespace}}}Base64") is not None:
|
|
121
|
-
# Older versions of XEP-0009 used Base64
|
|
122
|
-
return rpcbase64(find_value(f"{{{namespace}}}Base64").text.encode())
|
|
123
|
-
if find_value(f"{{{namespace}}}dateTime.iso8601") is not None:
|
|
124
|
-
return rpctime(find_value(f"{{{namespace}}}dateTime.iso8601").text)
|
|
125
|
-
if find_value(f"{{{namespace}}}struct") is not None:
|
|
126
|
-
struct = {}
|
|
127
|
-
for member in find_value(f"{{{namespace}}}struct").findall(f"{{{namespace}}}member"):
|
|
128
|
-
struct[member.find(f"{{{namespace}}}name").text] = _xml2py(member.find(f"{{{namespace}}}value"))
|
|
129
|
-
return struct
|
|
130
|
-
if find_value(f"{{{namespace}}}array") is not None:
|
|
131
|
-
array = []
|
|
132
|
-
for val in find_value(f"{{{namespace}}}array").find(f"{{{namespace}}}data").findall(f"{{{namespace}}}value"):
|
|
133
|
-
array.append(_xml2py(val))
|
|
134
|
-
return array
|
|
135
|
-
raise ValueError()
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
class rpcbase64:
|
|
139
|
-
def __init__(self, data: bytes):
|
|
140
|
-
# base 64 encoded string
|
|
141
|
-
self.data = data
|
|
142
|
-
|
|
143
|
-
def decode(self) -> bytes:
|
|
144
|
-
return base64.b64decode(self.data)
|
|
145
|
-
|
|
146
|
-
def __str__(self) -> str:
|
|
147
|
-
return self.decode().decode()
|
|
148
|
-
|
|
149
|
-
def encoded(self) -> str:
|
|
150
|
-
return self.data.decode()
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
class rpctime:
|
|
154
|
-
def __init__(self, data: Any | None = None):
|
|
155
|
-
# assume string data is in iso format YYYYMMDDTHH:MM:SS
|
|
156
|
-
if type(data) is str:
|
|
157
|
-
self.timestamp = time.strptime(data, "%Y%m%dT%H:%M:%S")
|
|
158
|
-
elif type(data) is time.struct_time:
|
|
159
|
-
self.timestamp = data
|
|
160
|
-
elif data is None:
|
|
161
|
-
self.timestamp = time.gmtime()
|
|
162
|
-
else:
|
|
163
|
-
raise ValueError()
|
|
164
|
-
|
|
165
|
-
def iso8601(self) -> str:
|
|
166
|
-
# return a iso8601 string
|
|
167
|
-
return time.strftime("%Y%m%dT%H:%M:%S", self.timestamp)
|
|
168
|
-
|
|
169
|
-
def __str__(self) -> str:
|
|
170
|
-
return self.iso8601()
|
|
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
|
|
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.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_request_logger.py
RENAMED
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/astrometry/_dotnet_response_saver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/calibration/_calibration_cache.py
RENAMED
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/calibration/_ccddata_calibrator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/_pysep_stats_calculator.py
RENAMED
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/_source_catalog.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/detection/sourcedetection.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
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/offsets/brighteststar_guiding.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
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/_photometry_calculator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.22.0 → pyobs_core-2.23.0}/pyobs/images/processors/photometry/aperture_photometry.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
|