pyobs-core 2.0.0.dev57__tar.gz → 2.0.0.dev58__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.dev57 → pyobs_core-2.0.0.dev58}/PKG-INFO +1 -1
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/cli/pyobsd.py +54 -11
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyproject.toml +1 -1
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/.gitignore +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/LICENSE +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/application.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/background_task.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/cli/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/cli/_cli.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/cli/pyobs.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/cli/pyobsw.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/comm.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/commlogging.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/dummy/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/dummy/dummycomm.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/local/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/local/localcomm.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/local/localnetwork.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/proxy.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/rpc.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/serializer.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009/binding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009/rpc.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009_timeout/rpc.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009_timeout/stanza/RPC.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009_timeout/stanza/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xmppclient.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xmppcomm.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/badweather.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/event.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/exposurestatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/filterchanged.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/focusfound.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/goodweather.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/log.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/modechanged.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/moduleclosed.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/moduleopened.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/motionstatuschanged.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/move.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/newimage.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/newspectrum.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/offsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/roofclosing.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/roofopened.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/taskfailed.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/taskfinished.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/taskstarted.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/events/testevent.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/image.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/altazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/exptime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/genericoffset.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/onskydistance.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/radecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/meta/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processor.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/_daobackgroundremover.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/_pillow.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/circle.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/crosshair.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/text.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/_dotnet_request.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/_dotnet_request_builder.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/_dotnet_request_logger.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/_dotnet_response_saver.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/dotnet.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/calibration/_calibration_cache.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/calibration/_ccddata_calibrator.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/calibration/calibration.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/_pysep_stats_calculator.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/_source_catalog.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/daophot.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/pysep.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/simpledisk.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/sourcedetection.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/exptime/star.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/addfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/download.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/flip.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/grayscale.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/httpserver.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/normalize.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/save.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/saveimage.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/smooth.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/softbin.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/addmask.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/catalogcircularmask.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/circularmask.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/createfilename.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/imagesourcefilter.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/removebackground.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/modules/getfitsheaders.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/astrometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/brighteststar.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/brighteststar_guiding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/dummyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/dummyskyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/offsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/pixeloffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/projected.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/spilled_light.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/_photometry_calculator.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/_photutil_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/_sep_aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/aperture_photometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/photometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/photutil.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/pysep.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/wcs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/wcs/solarhelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IAbortable.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IAcquisition.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IAutoFocus.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IAutoGuiding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IAutonomous.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IBinning.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ICalibrate.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ICamera.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IConfig.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ICooling.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IData.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IDataSequence.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IDome.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IExposure.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IExposureTime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IFilters.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IFitsHeaderAfter.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IFitsHeaderBefore.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IFlatField.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IFocusModel.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IFocuser.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IGain.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IImageFormat.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IImageType.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IMode.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IModule.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IMotion.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IMultiFiber.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IOffsetsAltAz.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IOffsetsRaDec.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingAltAz.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingBody.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingHeliocentricPolar.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingHeliographicStonyhurst.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingHelioprojective.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingOrbitalElements.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingRaDec.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingSeries.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IReady.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IRoof.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IRotation.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IRunnable.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IRunning.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IScriptRunner.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ISpectrograph.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IStartStop.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IStructuredConfig.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ISyncTarget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ITelescope.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ITemperatures.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ITrackingMode.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/ITrackingRate.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IVideo.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IWeather.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IWindow.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/interface.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/camerasettings.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/fitsheader.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/fitsnamespace.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/follow.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/motionstatus.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/waitformotion.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/mixins/weatheraware.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/adaptive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/basecamera.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/basespectrograph.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/basevideo.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/dummycamera.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/dummyspectrograph.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/dummyvideo.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/camera/pipelinecamera.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/flatfield/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/flatfield/flatfield.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/flatfield/pointing.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/flatfield/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/focus/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/focus/dummyautofocus.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/focus/focusmodel.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/focus/focusseries.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/image/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/image/imagewatcher.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/image/imagewriter.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/image/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/image/seeing.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/module.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/_base.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/_baseguiding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/acquisition.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/autoguiding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/dummyacquisition.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/dummyguiding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/guidingstatistics/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/guidingstatistics/guidingstatistics.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/guidingstatistics/pixeloffset.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/guidingstatistics/skyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/guidingstatistics/uptime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/pointing/scienceframeguiding.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/robotic/mastermind.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/robotic/pointing.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/robotic/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/robotic/scriptrunner.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/roof/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/roof/basedome.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/roof/baseroof.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/roof/dummyroof.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/telescope/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/telescope/_dummytelescopebase.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/telescope/basetelescope.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/telescope/dummyaltaztelescope.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/telescope/dummyradectelescope.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/telescope/dummysolartelescope.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/test/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/test/standalone.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/dummymode.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/fluentlogger.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/httpfilecache.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/kiosk.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/matrix.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/stellarium.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/telegram.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/utils/trigger.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/weather/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/weather/mockweather.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/weather/weather.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/weather/weather_api.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/modules/weather/weather_state.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/object.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/py.typed +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/observation.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/_executor.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/astroplanscheduler.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/airmassconstraint.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/constraint.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/moonilluminationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/moonseparationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/solarelevationconstraint.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/constraints/timeconstraint.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/dataprovider.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/aftertime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/beforetime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/constant.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/follow.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/interval.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/merit.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/pernight.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/random.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/timewindow.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/merits/transit.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/observationarchiveevolution.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/ondemandscheduler.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/dynamictarget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/heliocentricpolartarget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/helioprojectivetarget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/picker/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/picker/csvpicker.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/picker/picker.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/siderealtarget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/targets/target.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scheduler/taskscheduler.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/calibration/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/calibration/darkbias.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/calibration/pointing.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/calibration/skyflats.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/control/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/control/cases.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/control/conditional.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/control/parallel.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/control/selector.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/control/sequential.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/imaging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/imaging/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/imaging/imaging.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/imaging/transitimaging.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/utils/callmodule.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/utils/debugtrigger.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/scripts/utils/log.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/backend/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/backend/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/backend/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/filesystem/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/filesystem/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/filesystem/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/_portal.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/_schedulereader.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/_schedulewriter.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/configdb.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/mockobservationarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/scripts/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/scripts/autofocus.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/scripts/default.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/scripts/script.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/task.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/lco/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/memory/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/memory/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/memory/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/observationarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/storage/taskarchive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/task.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/taskrunner.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/archive/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/archive/archive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/archive/local_archive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/archive/pyobs_archive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/exptime/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/exptime/exptime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/exptime/stellarexptime.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/exptimeeval.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/flatfielder.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/pointing/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/pointing/base.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/pointing/static.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/priorities/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/priorities/archive.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/priorities/base.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/priorities/const.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/robotic/utils/skyflats/scheduler.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/average.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/cache.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/config.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/config_schema.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/coordinates.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/curvefit.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/enums.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/exceptions.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/fits.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/focusseries/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/focusseries/base.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/focusseries/photometry.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/focusseries/projection.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/grids/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/grids/filters.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/grids/grid.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/grids/gridnode.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/grids/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/binningwidget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/datadisplaywidget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/exposewidget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/exposuretimewidget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/imageformatwidget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/listpickerdialog.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/gui/camera/windowingwidget.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/http.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/influxdb.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/logger.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/logging/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/logging/context.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/logging/resolvableerror.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/modulegui.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/offsets/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/offsets/applyaltazoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/offsets/applyoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/offsets/applyradecoffsets.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/parallel.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/pipeline/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/pipeline/night.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/pipeline/pipeline.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/publisher/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/publisher/csv.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/publisher/http.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/publisher/log.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/publisher/multi.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/publisher/publisher.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/serialization.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/shellcommand.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/threads/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/threads/lockwithabort.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/time.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/utils/units.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/version.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/archivefile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/bufferedfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/file.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/filelists/__init__.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/filelists/filelist.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/filelists/testing.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/httpfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/localfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/memfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/sftpfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/smbfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/sshfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/tempfile.py +0 -0
- {pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/vfs/vfs.py +0 -0
|
@@ -69,7 +69,16 @@ class PyobsDaemonCLI(CLI):
|
|
|
69
69
|
sp.add_parser("start", help="start modules").add_argument("modules", type=str, nargs="*")
|
|
70
70
|
sp.add_parser("stop", help="stop modules").add_argument("modules", type=str, nargs="*")
|
|
71
71
|
sp.add_parser("restart", help="restart modules").add_argument("modules", type=str, nargs="*")
|
|
72
|
-
sp.add_parser("status", help="status of modules")
|
|
72
|
+
status_parser = sp.add_parser("status", help="status of modules")
|
|
73
|
+
status_parser.add_argument("--json", action="store_true")
|
|
74
|
+
status_parser.add_argument(
|
|
75
|
+
"--cpu-interval",
|
|
76
|
+
type=float,
|
|
77
|
+
default=None,
|
|
78
|
+
metavar="SECONDS",
|
|
79
|
+
help="measure CPU%% over this many seconds (shared across all modules, one sleep "
|
|
80
|
+
"total, not one per module); omitted by default since it makes status blocking",
|
|
81
|
+
)
|
|
73
82
|
sp.add_parser("list", help="list of modules")
|
|
74
83
|
sp.add_parser("logs", help="show/follow module logs via journalctl").add_argument(
|
|
75
84
|
"args", nargs=argparse.REMAINDER, help="[module] [journalctl arguments...]"
|
|
@@ -97,7 +106,7 @@ class PyobsDaemonCLI(CLI):
|
|
|
97
106
|
case "restart":
|
|
98
107
|
daemon.restart(modules=self._config["modules"])
|
|
99
108
|
case "status":
|
|
100
|
-
daemon.status(print_json=self._config["json"])
|
|
109
|
+
daemon.status(print_json=self._config["json"], cpu_interval=self._config["cpu_interval"])
|
|
101
110
|
case "list":
|
|
102
111
|
daemon.list_modules()
|
|
103
112
|
case "logs":
|
|
@@ -214,15 +223,41 @@ class PyobsDaemon:
|
|
|
214
223
|
return None
|
|
215
224
|
|
|
216
225
|
def _process_info(self, pid: int) -> dict[str, Any]:
|
|
217
|
-
"""Return uptime (seconds)
|
|
226
|
+
"""Return uptime (seconds) and rss_mb for a running PID. No CPU -- that needs a
|
|
227
|
+
shared sampling window across all processes, see _sample_cpu_percent."""
|
|
218
228
|
try:
|
|
219
229
|
proc = psutil.Process(pid)
|
|
220
230
|
uptime = time.time() - proc.create_time()
|
|
221
|
-
cpu = proc.cpu_percent(interval=0.1)
|
|
222
231
|
rss_mb = proc.memory_info().rss / 1024 / 1024
|
|
223
|
-
return {"uptime": uptime, "
|
|
232
|
+
return {"uptime": uptime, "rss_mb": rss_mb}
|
|
224
233
|
except psutil.NoSuchProcess:
|
|
225
|
-
return {"uptime": 0.0, "
|
|
234
|
+
return {"uptime": 0.0, "rss_mb": 0.0}
|
|
235
|
+
|
|
236
|
+
@staticmethod
|
|
237
|
+
def _sample_cpu_percent(pids: list[int], interval: float) -> dict[int, float]:
|
|
238
|
+
"""Sample CPU% for multiple PIDs over one shared interval, instead of the
|
|
239
|
+
interval-per-process cost of calling Process.cpu_percent(interval=...) serially --
|
|
240
|
+
that would take len(pids) * interval seconds and grows with the number of modules.
|
|
241
|
+
psutil.cpu_percent(interval=None) after construction always returns 0.0 (it has no
|
|
242
|
+
prior sample to diff against); it's the second, unblocked call after the shared
|
|
243
|
+
sleep that reports the percentage actually elapsed, so pids share a single sleep.
|
|
244
|
+
"""
|
|
245
|
+
procs = {}
|
|
246
|
+
for pid in pids:
|
|
247
|
+
try:
|
|
248
|
+
proc = psutil.Process(pid)
|
|
249
|
+
proc.cpu_percent(interval=None) # prime -- discard the meaningless 0.0
|
|
250
|
+
procs[pid] = proc
|
|
251
|
+
except psutil.NoSuchProcess:
|
|
252
|
+
continue
|
|
253
|
+
time.sleep(interval)
|
|
254
|
+
result = {}
|
|
255
|
+
for pid, proc in procs.items():
|
|
256
|
+
try:
|
|
257
|
+
result[pid] = proc.cpu_percent(interval=None)
|
|
258
|
+
except psutil.NoSuchProcess:
|
|
259
|
+
result[pid] = 0.0
|
|
260
|
+
return result
|
|
226
261
|
|
|
227
262
|
@staticmethod
|
|
228
263
|
def _fmt_uptime(seconds: float) -> str:
|
|
@@ -267,7 +302,7 @@ class PyobsDaemon:
|
|
|
267
302
|
time.sleep(1)
|
|
268
303
|
self.start(modules=modules)
|
|
269
304
|
|
|
270
|
-
def status(self, print_json: bool = False) -> None:
|
|
305
|
+
def status(self, print_json: bool = False, cpu_interval: float | None = None) -> None:
|
|
271
306
|
configs = self._list_configs()
|
|
272
307
|
# map "active" (no leading underscore) name -> config name, so that
|
|
273
308
|
# PID files (always named without underscore) can be matched back to
|
|
@@ -278,13 +313,19 @@ class PyobsDaemon:
|
|
|
278
313
|
pid_stems = [self._module(p) for p in glob.glob(os.path.join(self._run_path, "*.pid"))]
|
|
279
314
|
modules = sorted(set(configs) | {active_to_config.get(s, s) for s in pid_stems})
|
|
280
315
|
|
|
316
|
+
pids = {module: pid for module in modules if (pid := self._running_pid(module)) is not None}
|
|
317
|
+
# CPU% is off by default -- a meaningful reading needs a real sampling window (see
|
|
318
|
+
# _sample_cpu_percent), and forcing that cost on every plain "status" call would make
|
|
319
|
+
# it slow for no benefit when nobody's looking at CPU. Only pay for it if asked.
|
|
320
|
+
cpu_by_pid = self._sample_cpu_percent(list(pids.values()), cpu_interval) if cpu_interval else {}
|
|
321
|
+
|
|
281
322
|
if print_json:
|
|
282
323
|
result: dict[str, Any] = {}
|
|
283
324
|
for module in modules:
|
|
284
|
-
pid =
|
|
325
|
+
pid = pids.get(module)
|
|
285
326
|
if pid is not None:
|
|
286
327
|
info = self._process_info(pid)
|
|
287
|
-
result[module] = {"running": True, "pid": pid, **info}
|
|
328
|
+
result[module] = {"running": True, "pid": pid, "cpu": cpu_by_pid.get(pid), **info}
|
|
288
329
|
else:
|
|
289
330
|
result[module] = {"running": False}
|
|
290
331
|
print(json.dumps(result))
|
|
@@ -293,13 +334,15 @@ class PyobsDaemon:
|
|
|
293
334
|
print(f"{'module':<30} {'status':<8} {'uptime':>12} {'cpu':>6} {'rss':>8}")
|
|
294
335
|
print("-" * 72)
|
|
295
336
|
for module in modules:
|
|
296
|
-
pid =
|
|
337
|
+
pid = pids.get(module)
|
|
297
338
|
if pid is not None:
|
|
298
339
|
info = self._process_info(pid)
|
|
340
|
+
cpu = cpu_by_pid.get(pid)
|
|
341
|
+
cpu_str = f"{cpu:>5.1f}%" if cpu is not None else f"{'-':>6}"
|
|
299
342
|
print(
|
|
300
343
|
f"{module:<30} {'running':<8} "
|
|
301
344
|
f"{self._fmt_uptime(info['uptime']):>12} "
|
|
302
|
-
f"{
|
|
345
|
+
f"{cpu_str} "
|
|
303
346
|
f"{info['rss_mb']:>6.1f} MB"
|
|
304
347
|
)
|
|
305
348
|
else:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev57 → pyobs_core-2.0.0.dev58}/pyobs/comm/xmpp/xep_0009_timeout/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/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.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/_daobackgroundremover.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/_pillow.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/circle.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/crosshair.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/annotation/text.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/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.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/astrometry/dotnet.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/calibration/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/calibration/calibration.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/daophot.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/pysep.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/detection/simpledisk.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/exptime/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/exptime/exptime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/addfitsheaders.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/grayscale.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/httpserver.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/image/normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/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.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/circularmask.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/createfilename.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/imagesourcefilter.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/misc/removebackground.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/modules/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/modules/getfitsheaders.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/__init__.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/astrometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/brighteststar.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/dummyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/dummyskyoffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/fitsheader.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/offsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/pixeloffsets.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/projected.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/offsets/spilled_light.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/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.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/photometry.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/images/processors/photometry/photutil.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/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.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingHeliocentricPolar.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingHelioprojective.py
RENAMED
|
File without changes
|
{pyobs_core-2.0.0.dev57 → pyobs_core-2.0.0.dev58}/pyobs/interfaces/IPointingOrbitalElements.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|