pyobs-core 2.0.0.dev75__tar.gz → 2.0.0.dev77__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.dev75 → pyobs_core-2.0.0.dev77}/PKG-INFO +1 -1
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/application.py +13 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/weatheraware.py +7 -6
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/basecamera.py +28 -1
- pyobs_core-2.0.0.dev77/pyobs/utils/versions.py +50 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyproject.toml +1 -1
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/.gitignore +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/LICENSE +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/background_task.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/cli/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/cli/_cli.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/cli/pyobs.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/cli/pyobsd.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/cli/pyobsw.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/comm.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/commlogging.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/dummy/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/dummy/dummycomm.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/local/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/local/localcomm.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/local/localnetwork.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/proxy.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/rpc.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/serializer.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009/binding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xmppclient.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xmppcomm.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/badweather.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/event.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/exposurestatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/filterchanged.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/focusfound.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/goodweather.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/log.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/modechanged.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/moduleclosed.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/moduleopened.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/motionstatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/move.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/newimage.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/newspectrum.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/offsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/roofclosing.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/roofopened.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/taskfailed.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/taskfinished.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/taskstarted.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/events/testevent.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/image.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/altazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/exptime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/genericoffset.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/onskydistance.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/radecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/meta/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processor.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/_daobackgroundremover.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/_pillow.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/circle.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/crosshair.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/text.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/dotnet.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/calibration/calibration.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/_source_catalog.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/daophot.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/pysep.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/simpledisk.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/sourcedetection.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/exptime/star.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/addfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/download.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/flip.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/grayscale.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/httpserver.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/normalize.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/save.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/saveimage.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/smooth.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/softbin.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/addmask.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/catalogcircularmask.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/circularmask.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/createfilename.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/imagesourcefilter.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/removebackground.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/brighteststar.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/brighteststar_guiding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/dummyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/dummyskyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/offsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/projected.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/spilled_light.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/photometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/photutil.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/pysep.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/wcs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IAbortable.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IAcquisition.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IAutoFocus.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IAutoGuiding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IAutonomous.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IBinning.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ICalibrate.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ICamera.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IConfig.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ICooling.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IData.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IDataSequence.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IDome.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IExposure.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IExposureTime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IFilters.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IFlatField.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IFocusModel.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IFocuser.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IGain.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IImageFormat.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IImageType.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IMode.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IModule.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IMotion.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IMultiFiber.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingAltAz.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingBody.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingRaDec.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingSeries.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IReady.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IRoof.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IRotation.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IRunnable.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IRunning.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IScriptRunner.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ISpectrograph.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IStartStop.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IStructuredConfig.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ISyncTarget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ITelescope.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ITemperatures.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ITrackingMode.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/ITrackingRate.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IVideo.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IWeather.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IWindow.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/interface.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/camerasettings.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/fitsnamespace.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/follow.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/motionstatus.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/mixins/waitformotion.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/adaptive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/basespectrograph.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/basevideo.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/dummycamera.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/dummyspectrograph.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/dummyvideo.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/camera/pipelinecamera.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/flatfield/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/flatfield/flatfield.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/flatfield/pointing.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/flatfield/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/focus/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/focus/dummyautofocus.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/focus/focusmodel.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/focus/focusseries.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/image/imagewatcher.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/image/imagewriter.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/image/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/image/seeing.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/module.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/_base.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/_baseguiding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/acquisition.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/autoguiding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/dummyacquisition.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/dummyguiding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/pointing/scienceframeguiding.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/robotic/mastermind.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/robotic/pointing.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/robotic/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/robotic/scriptrunner.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/roof/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/roof/basedome.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/roof/baseroof.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/roof/dummyroof.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/telescope/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/telescope/basetelescope.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/test/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/test/standalone.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/dummymode.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/fluentlogger.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/httpfilecache.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/kiosk.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/matrix.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/stellarium.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/telegram.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/utils/trigger.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/weather/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/weather/mockweather.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/weather/weather.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/weather/weather_api.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/modules/weather/weather_state.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/object.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/py.typed +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/observation.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/_executor.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/dataprovider.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/constant.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/follow.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/interval.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/merit.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/random.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/merits/transit.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/targets/target.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/control/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/control/cases.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/control/conditional.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/control/parallel.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/control/selector.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/control/sequential.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/scripts/utils/log.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/backend/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/backend/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/backend/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/_portal.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/configdb.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/task.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/memory/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/storage/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/task.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/archive/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/archive/archive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/archive/local_archive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/average.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/cache.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/config.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/config_schema.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/coordinates.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/curvefit.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/enums.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/fits.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/focusseries/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/focusseries/base.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/focusseries/photometry.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/focusseries/projection.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/grids/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/grids/filters.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/grids/grid.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/grids/gridnode.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/grids/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/binningwidget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/exposewidget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/http.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/influxdb.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/logger.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/logging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/logging/context.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/logging/resolvableerror.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/modulegui.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/offsets/applyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/parallel.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/pipeline/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/pipeline/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/pipeline/progress.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/pipeline/reduction.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/pipeline/reduction_base.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/publisher/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/publisher/csv.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/publisher/http.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/publisher/log.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/publisher/multi.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/publisher/publisher.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/serialization.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/shellcommand.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/threads/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/threads/lockwithabort.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/time.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/utils/units.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/version.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/archivefile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/bufferedfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/file.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/filelists/__init__.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/filelists/filelist.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/filelists/testing.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/httpfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/localfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/memfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/sftpfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/smbfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/sshfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/tempfile.py +0 -0
- {pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/vfs/vfs.py +0 -0
|
@@ -16,6 +16,7 @@ from pyobs.modules import Module, MultiModule
|
|
|
16
16
|
from pyobs.object import get_class_from_string, get_object
|
|
17
17
|
from pyobs.utils.config import pre_process_yaml
|
|
18
18
|
from pyobs.utils.logging.context import ModuleNameFilter
|
|
19
|
+
from pyobs.utils.versions import loaded_pyobs_packages
|
|
19
20
|
|
|
20
21
|
# just init logger with something here, will be overwritten in __init__
|
|
21
22
|
log = logging.getLogger(__name__)
|
|
@@ -375,6 +376,18 @@ class Application:
|
|
|
375
376
|
|
|
376
377
|
# open module
|
|
377
378
|
log.info("Opening module...")
|
|
379
|
+
|
|
380
|
+
# record the loaded pyobs package versions for comm-less consumers (e.g. web-admin
|
|
381
|
+
# reading the log/journal); both construction paths have finished importing everything
|
|
382
|
+
# by this point. Guarded like the IERS priming above: metadata scanning can raise on
|
|
383
|
+
# any installed distribution with broken dist-info, and that's not worth aborting
|
|
384
|
+
# startup over.
|
|
385
|
+
try:
|
|
386
|
+
packages = loaded_pyobs_packages()
|
|
387
|
+
log.info("Loaded pyobs packages: %s", ", ".join(f"{k}={v}" for k, v in packages.items()))
|
|
388
|
+
except Exception:
|
|
389
|
+
log.warning("Could not determine loaded pyobs package versions, continuing anyway.", exc_info=True)
|
|
390
|
+
|
|
378
391
|
await self._module.startup()
|
|
379
392
|
log.info("Started successfully.")
|
|
380
393
|
|
|
@@ -76,13 +76,14 @@ class WeatherAwareMixin:
|
|
|
76
76
|
# do we need to park?
|
|
77
77
|
if motion_status not in [MotionStatus.PARKED, MotionStatus.PARKING]:
|
|
78
78
|
# error state?
|
|
79
|
-
if is_error_state
|
|
80
|
-
log
|
|
79
|
+
if is_error_state:
|
|
80
|
+
# only log once when entering error state, and never try to park
|
|
81
|
+
# while it persists -- park() would just raise again every cycle
|
|
82
|
+
if not self.__weatheraware_is_error_state:
|
|
83
|
+
log.error("Telescope is in error mode, cannot park.")
|
|
81
84
|
else:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
log.warning("Weather is bad, shutting down.")
|
|
85
|
-
await msi.park()
|
|
85
|
+
log.warning("Weather is bad, shutting down.")
|
|
86
|
+
await msi.park()
|
|
86
87
|
|
|
87
88
|
# save error state
|
|
88
89
|
self.__weatheraware_is_error_state = is_error_state
|
|
@@ -111,6 +111,10 @@ class BaseCamera(
|
|
|
111
111
|
# register exception
|
|
112
112
|
self._register_exception(exc.GrabImageError, 3, timespan=600, callback=self._default_remote_error_callback)
|
|
113
113
|
|
|
114
|
+
# re-publish exposure progress while exposing, so clients see a live progress bar and
|
|
115
|
+
# remaining time instead of the frozen values from the EXPOSING status transition
|
|
116
|
+
self.add_background_task(self._publish_exposure_progress)
|
|
117
|
+
|
|
114
118
|
async def open(self) -> None:
|
|
115
119
|
"""Open module."""
|
|
116
120
|
await Module.open(self)
|
|
@@ -185,7 +189,7 @@ class BaseCamera(
|
|
|
185
189
|
return 0.0
|
|
186
190
|
duration = datetime.timedelta(seconds=self._exposure.exposure_time)
|
|
187
191
|
diff = self._exposure.start + duration - datetime.datetime.now(datetime.UTC)
|
|
188
|
-
return diff.total_seconds()
|
|
192
|
+
return max(diff.total_seconds(), 0.0)
|
|
189
193
|
|
|
190
194
|
async def _get_exposure_progress(self) -> float:
|
|
191
195
|
"""Returns the progress of the current exposure in percent.
|
|
@@ -209,6 +213,29 @@ class BaseCamera(
|
|
|
209
213
|
percentage = diff.total_seconds() / self._exposure[1] * 100.0
|
|
210
214
|
return min(percentage, 100.0)
|
|
211
215
|
|
|
216
|
+
async def _publish_exposure_progress(self) -> None:
|
|
217
|
+
"""Background task: re-publish IExposure state while exposing.
|
|
218
|
+
|
|
219
|
+
_change_exposure_status() only publishes IExposure on status transitions, and at the
|
|
220
|
+
EXPOSING transition self._exposure isn't set yet, so progress and exposure_time_left are
|
|
221
|
+
both 0. Without this periodic re-publish, the GUI shows a frozen 0% bar and 0.0s remaining
|
|
222
|
+
for the whole exposure.
|
|
223
|
+
"""
|
|
224
|
+
while True:
|
|
225
|
+
try:
|
|
226
|
+
if self._camera_status == ExposureStatus.EXPOSING:
|
|
227
|
+
await self.comm.set_state(
|
|
228
|
+
IExposure,
|
|
229
|
+
ExposureState(
|
|
230
|
+
status=self._camera_status,
|
|
231
|
+
progress=await self._get_exposure_progress(),
|
|
232
|
+
exposure_time_left=await self._get_exposure_time_left(),
|
|
233
|
+
),
|
|
234
|
+
)
|
|
235
|
+
except Exception:
|
|
236
|
+
pass
|
|
237
|
+
await asyncio.sleep(1.0)
|
|
238
|
+
|
|
212
239
|
@abstractmethod
|
|
213
240
|
async def _expose(self, exposure_time: float, open_shutter: bool, abort_event: asyncio.Event) -> Image:
|
|
214
241
|
"""Actually do the exposure, should be implemented by derived classes.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from importlib.metadata import PackageNotFoundError, packages_distributions, version
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def loaded_pyobs_packages(sys_modules: Mapping[str, object] | None = None) -> dict[str, str]:
|
|
8
|
+
"""Return the version of every loaded ``pyobs``-prefixed distribution.
|
|
9
|
+
|
|
10
|
+
Builds the top-level import name -> distribution name map from
|
|
11
|
+
:func:`importlib.metadata.packages_distributions`, keeps only the distributions whose
|
|
12
|
+
top-level name is present in ``sys_modules`` and whose name starts with ``pyobs``, and reads
|
|
13
|
+
each version from :func:`importlib.metadata.version`.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
sys_modules: Module-name -> module mapping to inspect. Defaults to ``sys.modules``.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
Distribution name -> version, sorted by name. A distribution whose version cannot be
|
|
20
|
+
resolved (``PackageNotFoundError``) is skipped.
|
|
21
|
+
|
|
22
|
+
Note:
|
|
23
|
+
Editable installs (``pip install -e`` / ``uv pip install -e``, i.e. a dev checkout)
|
|
24
|
+
typically don't populate the file records that ``packages_distributions()`` needs to
|
|
25
|
+
derive its top-level-name -> distribution mapping, so a package installed that way is
|
|
26
|
+
silently omitted here. Not fixed since the only consumer (pyobsd/web-admin reading the
|
|
27
|
+
module's log/journal) only needs this in production, where installs are non-editable.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
if sys_modules is None:
|
|
31
|
+
import sys
|
|
32
|
+
|
|
33
|
+
sys_modules = sys.modules
|
|
34
|
+
|
|
35
|
+
loaded: dict[str, str] = {}
|
|
36
|
+
for module_name, dists in packages_distributions().items():
|
|
37
|
+
if module_name not in sys_modules:
|
|
38
|
+
continue
|
|
39
|
+
for dist in dists:
|
|
40
|
+
if not dist.startswith("pyobs"):
|
|
41
|
+
continue
|
|
42
|
+
try:
|
|
43
|
+
loaded[dist] = version(dist)
|
|
44
|
+
except PackageNotFoundError:
|
|
45
|
+
continue
|
|
46
|
+
|
|
47
|
+
return dict(sorted(loaded.items()))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
__all__ = ["loaded_pyobs_packages"]
|
|
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.dev75 → pyobs_core-2.0.0.dev77}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/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.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/_daobackgroundremover.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/_pillow.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/circle.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/crosshair.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/annotation/text.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/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.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/astrometry/dotnet.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/calibration/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/calibration/calibration.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/daophot.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/pysep.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/detection/simpledisk.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/exptime/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/exptime/exptime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/addfitsheaders.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/grayscale.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/httpserver.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/image/normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/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.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/circularmask.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/createfilename.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/imagesourcefilter.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/misc/removebackground.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/modules/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/modules/getfitsheaders.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/brighteststar.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/dummyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/dummyskyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/fitsheader.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/offsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/pixeloffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/projected.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/offsets/spilled_light.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/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.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/photometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/pyobs/images/processors/photometry/photutil.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev75 → pyobs_core-2.0.0.dev77}/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.dev75 → pyobs_core-2.0.0.dev77}/pyobs/interfaces/IPointingHeliocentricPolar.py
RENAMED
|
File without changes
|