mx-remote 5.5.0__tar.gz → 5.5.1__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.
- {mx_remote-5.5.0 → mx_remote-5.5.1}/AGENTS.md +7 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/PKG-INFO +2 -1
- mx_remote-5.5.1/mx_remote/compat.py +22 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/const.py +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSystemStatus.py +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSystemStatus.pyi +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPAudio.py +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPAudio.pyi +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPBayMapping.py +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPBayMapping.pyi +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPMultiviewer.py +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPMultiviewer.pyi +1 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPConfig.py +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPConfig.pyi +2 -1
- mx_remote-5.5.1/mx_remote/py.typed +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Bay.py +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Bay.pyi +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Device.py +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Device.pyi +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Remote.py +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Remote.pyi +2 -1
- {mx_remote-5.5.0 → mx_remote-5.5.1}/pyproject.toml +2 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/.gitignore +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/CLAUDE.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/LICENSE +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/README.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/README.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/brand.css +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/favicon.svg +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/logo-dark.svg +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/logo.svg +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/api.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/audio.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/callbacks.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/conf.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/configuration.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/devices-and-bays.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/diagnostics.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/index.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/multiviewer.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/oneip.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/requirements.txt +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/routing.md +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/hatch_build.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Interface.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Interface.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Uid.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Uid.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/__init__.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/__init__.pyi +0 -0
- /mx_remote-5.5.0/mx_remote/py.typed → /mx_remote-5.5.1/mx_remote/compat.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/const.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/main.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/main.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/BayConfig.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/BayConfig.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Constants.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Constants.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Data.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Data.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Factory.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Factory.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpDolbySettings.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpDolbySettings.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpZoneSettings.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpZoneSettings.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioClip.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioClip.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioSetRoute.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioSetRoute.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBase.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBase.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfig.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfig.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfigSecondary.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfigSecondary.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayHide.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayHide.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameConnectStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameConnectStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDebug.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDebug.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDiscover.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDiscover.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDID.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDID.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDIDProfile.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDIDProfile.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFactoryReset.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFactoryReset.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFilterStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFilterStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFirmwareVersion.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFirmwareVersion.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHeader.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHeader.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHello.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHello.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameLinks.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameLinks.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMeshOperation.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMeshOperation.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMirrorStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMirrorStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMonitoringPulse.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMonitoringPulse.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameNetworkStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameNetworkStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FramePowerChange.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FramePowerChange.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCAction.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCAction.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCIr.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCIr.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCKey.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCKey.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCSettings.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCSettings.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameReboot.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameReboot.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRoutingChange.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRoutingChange.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetInstaller.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetInstaller.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetName.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetName.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetRoute.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetRoute.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetupStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetupStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatus.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatus.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatusNew.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatusNew.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSysTemperature.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSysTemperature.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCAction.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCAction.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCKey.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCKey.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTopology.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTopology.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTxIR.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTxIR.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameUpgradeFPGA.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameUpgradeFPGA.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDetectBays.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDetectBays.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDeviceConfiguration.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDeviceConfiguration.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPLink.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPLink.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPManualSourceSwitch.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPManualSourceSwitch.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPPowerSave.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPPowerSave.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSetMaster.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSetMaster.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSourceSwitch.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSourceSwitch.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSources.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSources.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPStats.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPStats.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPTiling.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPTiling.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPVideoWall.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPVideoWall.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolume.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolume.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeDown.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeDown.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeSet.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeSet.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeUp.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeUp.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/LinkConfig.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/LinkConfig.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Multiviewer.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Multiviewer.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Svd.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Svd.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPStats.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPStats.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/__init__.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/__init__.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/svd.csv +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/ConnectionAsync.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/ConnectionAsync.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Link.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Link.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/State.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/State.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/V2IP.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/V2IP.pyi +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/audio_ir.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/capture.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/e2e.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/entry.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/handlers.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/handlers_cover.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/hello.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/idempotent.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/merge.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/newops.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/offsets.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/proto_stamp.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/protogate.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/rcsettings.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/roundtrip.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/run.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/smoke.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/sources.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/stats.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/structs.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/txresult.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/unknowns.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/vdetails.py +0 -0
- {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/wirefix.py +0 -0
|
@@ -73,6 +73,13 @@ A client's uid is persisted at `~/.mxr-uid`, one file per account, and
|
|
|
73
73
|
account are a single identity to the mesh and each discards everything the other
|
|
74
74
|
sends, so a second one needs its own `uid_path`.
|
|
75
75
|
|
|
76
|
+
### Python versions
|
|
77
|
+
`requires-python` is 3.11, and `.github/workflows/tests.yml` runs the suites on
|
|
78
|
+
3.11, 3.12 and 3.13 so that floor is checked rather than assumed. A name that
|
|
79
|
+
only exists on a newer version goes through `mx_remote/compat.py`, the one place
|
|
80
|
+
that tests `sys.version_info`, and its fallback needs a dependency marked
|
|
81
|
+
`python_version < '<the version that added it>'` in `pyproject.toml`.
|
|
82
|
+
|
|
76
83
|
### Versioning
|
|
77
84
|
Version is single-sourced in `mx_remote/const.py` (`VERSION = '...'`); `pyproject.toml`
|
|
78
85
|
reads it via regex, so bump it there only. Release commits follow the convention
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mx_remote
|
|
3
|
-
Version: 5.5.
|
|
3
|
+
Version: 5.5.1
|
|
4
4
|
Summary: Python 3 library for interfacing with MX Remote compatible devices
|
|
5
5
|
Project-URL: Homepage, https://github.com/opdenkamp/mx-remote/
|
|
6
6
|
Project-URL: Documentation, https://opdenkamp.github.io/mx-remote/
|
|
@@ -28,6 +28,7 @@ Requires-Python: >=3.11
|
|
|
28
28
|
Requires-Dist: aiofiles>=24.1.0
|
|
29
29
|
Requires-Dist: aiohttp>=3.10.5
|
|
30
30
|
Requires-Dist: netifaces>=0.11.0
|
|
31
|
+
Requires-Dist: typing-extensions>=4.4; python_version < '3.12'
|
|
31
32
|
Description-Content-Type: text/markdown
|
|
32
33
|
|
|
33
34
|
# MX Remote - Python Client for Pulse-Eight MatrixOS devices
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
######################################################
|
|
2
|
+
## MX Remote Python Interface ##
|
|
3
|
+
## ##
|
|
4
|
+
## author: Lars Op den Kamp (lars@opdenkamp-it.nl) ##
|
|
5
|
+
## copyright (c) 2021-2026 Op den Kamp IT Solutions ##
|
|
6
|
+
######################################################
|
|
7
|
+
|
|
8
|
+
"""
|
|
9
|
+
Names that live in different modules across the Python versions this package
|
|
10
|
+
supports. Import them from here so the version test is written once.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
if sys.version_info >= (3, 12):
|
|
16
|
+
from typing import override
|
|
17
|
+
else:
|
|
18
|
+
# typing.override arrived in 3.12; typing_extensions carries the same
|
|
19
|
+
# decorator further back, and is a dependency only below that version.
|
|
20
|
+
from typing_extensions import override
|
|
21
|
+
|
|
22
|
+
__all__ = ['override']
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from ..Interface import AudioChangeSource as AudioChangeSource, AudioEndpoint as AudioEndpoint, AudioEndpoints as AudioEndpoints, AudioFeatures as AudioFeatures, AudioLink as AudioLink, AudioLinks as AudioLinks, DeviceRegistry as DeviceRegistry, MxrDeviceUid as MxrDeviceUid, V2IPStreamSource as V2IPStreamSource
|
|
2
|
+
from ..compat import override as override
|
|
2
3
|
from .FrameBase import FrameBase as FrameBase
|
|
3
4
|
from .FrameHeader import FrameHeader as FrameHeader
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
6
|
from enum import IntEnum
|
|
6
7
|
from functools import cached_property
|
|
7
|
-
from typing import override
|
|
8
8
|
|
|
9
9
|
V2IP_AUDIO_EP_ID_NONE: int
|
|
10
10
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from ..Interface import MxrDeviceUid as MxrDeviceUid
|
|
2
|
+
from ..compat import override as override
|
|
2
3
|
from .FrameBase import FrameBase as FrameBase
|
|
3
4
|
from functools import cached_property
|
|
4
|
-
from typing import override
|
|
5
5
|
|
|
6
6
|
class FrameV2IPBayMapping(FrameBase):
|
|
7
7
|
@cached_property
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
from enum import Enum
|
|
10
10
|
from functools import cached_property
|
|
11
|
-
from
|
|
11
|
+
from ..compat import override
|
|
12
12
|
from .FrameBase import FrameBase
|
|
13
13
|
from .Constants import decode_enum
|
|
14
14
|
from ..Interface import MxrDeviceUid, DeviceBase, DeviceRegistry
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from .Multiviewer import *
|
|
2
2
|
from ..Interface import DeviceBase as DeviceBase, DeviceRegistry as DeviceRegistry, MxrDeviceUid as MxrDeviceUid
|
|
3
|
+
from ..compat import override as override
|
|
3
4
|
from .Constants import decode_enum as decode_enum
|
|
4
5
|
from .FrameBase import FrameBase as FrameBase
|
|
5
6
|
from enum import Enum as Enum
|
|
6
7
|
from functools import cached_property
|
|
7
|
-
from typing import override
|
|
8
8
|
|
|
9
9
|
class V2IPMultiviewerConfig(FrameBase, MultiviewerConfig):
|
|
10
10
|
@property
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
######################################################
|
|
7
7
|
'''Video-over-IP stream source configuration and parsing.'''
|
|
8
8
|
|
|
9
|
-
from typing import Any
|
|
9
|
+
from typing import Any
|
|
10
|
+
from ..compat import override
|
|
10
11
|
from ..Uid import MxrDeviceUid
|
|
11
12
|
from ..Interface import V2IPStreamSource, V2IPStreamSources, V2IPAudioFormat
|
|
12
13
|
import socket
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
from ..Interface import V2IPAudioFormat as V2IPAudioFormat, V2IPStreamSource as V2IPStreamSource, V2IPStreamSources as V2IPStreamSources
|
|
2
2
|
from ..Uid import MxrDeviceUid as MxrDeviceUid
|
|
3
|
+
from ..compat import override as override
|
|
3
4
|
from _typeshed import Incomplete
|
|
4
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
5
6
|
|
|
6
7
|
class V2IPStreamSourceImpl(V2IPStreamSource):
|
|
7
8
|
def __init__(self, label: str, data: bytes) -> None: ...
|
|
File without changes
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
import logging
|
|
11
11
|
import socket
|
|
12
|
-
from typing import Any, Callable
|
|
12
|
+
from typing import Any, Callable
|
|
13
|
+
from ..compat import override
|
|
13
14
|
from ..proto.Constants import MxrSignalType, BayStatusMask, BayFeaturesMask, EdidProfile, RCType, RCAction, RCKey, decode_enum
|
|
14
15
|
from ..proto.BayConfig import BayConfig
|
|
15
16
|
from ..proto.Data import VolumeMuteStatus
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from ..Interface import AmpZoneSettings as AmpZoneSettings, AudioChangeSource as AudioChangeSource, AudioEndpoint as AudioEndpoint, BayBase as BayBase, BayLink as BayLink, BayMirrorStatus as BayMirrorStatus, ConnectStatus as ConnectStatus, DeviceBase as DeviceBase, DeviceStatus as DeviceStatus, FilteredDevices as FilteredDevices, HiddenStatus as HiddenStatus, MxrCallbacks as MxrCallbacks, MxrDeviceUid as MxrDeviceUid, PowerStatus as PowerStatus, SelectedBays as SelectedBays, SignalStatus as SignalStatus, V2IPStreamSources as V2IPStreamSources, VideoColourSpace as VideoColourSpace, VideoSignalDetails as VideoSignalDetails
|
|
2
2
|
from ..Uid import MxrBayUid as MxrBayUid
|
|
3
|
+
from ..compat import override as override
|
|
3
4
|
from ..const import V2IP_UDP_PORT_AUDIO as V2IP_UDP_PORT_AUDIO
|
|
4
5
|
from ..proto.BayConfig import BayConfig as BayConfig
|
|
5
6
|
from ..proto.Constants import BayFeaturesMask as BayFeaturesMask, BayStatusMask as BayStatusMask, EdidProfile as EdidProfile, MxrSignalType as MxrSignalType, RCAction as RCAction, RCKey as RCKey, RCType as RCType, decode_enum as decode_enum
|
|
@@ -14,7 +15,7 @@ from ..proto.FrameV2IPManualSourceSwitch import FrameV2IPManualSourceSwitch as F
|
|
|
14
15
|
from ..proto.FrameV2IPSourceSwitch import FrameV2IPSourceSwitch as FrameV2IPSourceSwitch
|
|
15
16
|
from ..proto.FrameVolumeSet import FrameVolumeSet as FrameVolumeSet
|
|
16
17
|
from ..proto.V2IPConfig import V2IPAudioFormat as V2IPAudioFormat
|
|
17
|
-
from typing import Any, Callable
|
|
18
|
+
from typing import Any, Callable
|
|
18
19
|
|
|
19
20
|
class Bay(BayBase):
|
|
20
21
|
ARC_NONE: str
|
|
@@ -49,7 +49,8 @@ from ..proto.Multiviewer import (
|
|
|
49
49
|
MultiviewerHDCPMode,
|
|
50
50
|
)
|
|
51
51
|
from ..Uid import MxrDeviceUid
|
|
52
|
-
from typing import Any, Callable
|
|
52
|
+
from typing import Any, Callable
|
|
53
|
+
from ..compat import override
|
|
53
54
|
from datetime import datetime
|
|
54
55
|
import logging
|
|
55
56
|
import time
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from ..Interface import AmpDolbySettings as AmpDolbySettings, AudioChangeSource as AudioChangeSource, AudioEndpoint as AudioEndpoint, AudioEndpoints as AudioEndpoints, AudioLinks as AudioLinks, BayBase as BayBase, DeviceBase as DeviceBase, DeviceRegistry as DeviceRegistry, DeviceStatus as DeviceStatus, DeviceV2IPDetails as DeviceV2IPDetails, DeviceV2IPSink as DeviceV2IPSink, Multiviewer as Multiviewer, MxrCallbacks as MxrCallbacks, SystemTemperature as SystemTemperature, V2IPStreamSources as V2IPStreamSources, V2IPStreamSourcesList as V2IPStreamSourcesList
|
|
2
2
|
from ..Uid import MxrDeviceUid as MxrDeviceUid
|
|
3
|
+
from ..compat import override as override
|
|
3
4
|
from ..proto.BayConfig import BayConfig as BayConfig
|
|
4
5
|
from ..proto.Constants import DeviceFeature as DeviceFeature
|
|
5
6
|
from ..proto.FrameBase import FrameBase as FrameBase
|
|
@@ -16,7 +17,7 @@ from ..proto.FrameV2IPStats import FrameV2IPStats as FrameV2IPStats
|
|
|
16
17
|
from ..proto.Multiviewer import MultiviewerAspectRatio as MultiviewerAspectRatio, MultiviewerBoolSetting as MultiviewerBoolSetting, MultiviewerConfig as MultiviewerConfig, MultiviewerEDIDTemplate as MultiviewerEDIDTemplate, MultiviewerHDCPMode as MultiviewerHDCPMode, MultiviewerITCMode as MultiviewerITCMode, MultiviewerOutputMode as MultiviewerOutputMode, MultiviewerPipPosition as MultiviewerPipPosition, MultiviewerPipSize as MultiviewerPipSize, MultiviewerSource as MultiviewerSource, MultiviewerViewMode as MultiviewerViewMode
|
|
17
18
|
from ..proto.V2IPStats import V2IPDeviceStats as V2IPDeviceStats
|
|
18
19
|
from .Bay import Bay as Bay
|
|
19
|
-
from typing import Any, Callable
|
|
20
|
+
from typing import Any, Callable
|
|
20
21
|
|
|
21
22
|
class Device(DeviceBase):
|
|
22
23
|
def __init__(self, registry: DeviceRegistry, hello: FrameHello) -> None: ...
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import aiohttp
|
|
2
2
|
from ..Interface import AudioEndpoint as AudioEndpoint, BayBase as BayBase, BayLinks as BayLinks, ConnectionCallbacks as ConnectionCallbacks, DeviceBase as DeviceBase, DeviceRegistry as DeviceRegistry, MxrCallbacks as MxrCallbacks, mxr_broadcast_address as mxr_broadcast_address
|
|
3
3
|
from ..Uid import MxrDeviceUid as MxrDeviceUid
|
|
4
|
+
from ..compat import override as override
|
|
4
5
|
from ..const import MXR_HELLO_INTERVAL_MIN as MXR_HELLO_INTERVAL_MIN, MXR_HELLO_INTERVAL_RAND as MXR_HELLO_INTERVAL_RAND, MX_BCAST_UDP_PORT as MX_BCAST_UDP_PORT, MX_MCAST_UDP_IP as MX_MCAST_UDP_IP, MX_MCAST_UDP_PORT as MX_MCAST_UDP_PORT, __version__ as __version__
|
|
5
6
|
from ..proto.Constants import MXR_PROTOCOL_VERSION as MXR_PROTOCOL_VERSION
|
|
6
7
|
from ..proto.Factory import process_mxr_frame as process_mxr_frame
|
|
@@ -12,7 +13,7 @@ from .Device import Device as Device
|
|
|
12
13
|
from .State import State as State
|
|
13
14
|
from _typeshed import Incomplete
|
|
14
15
|
from functools import cached_property
|
|
15
|
-
from typing import Any
|
|
16
|
+
from typing import Any
|
|
16
17
|
|
|
17
18
|
class Remote(DeviceRegistry, ConnectionCallbacks):
|
|
18
19
|
remotes: dict[MxrDeviceUid, Device]
|
|
@@ -11,6 +11,8 @@ dependencies = [
|
|
|
11
11
|
"aiohttp>=3.10.5",
|
|
12
12
|
"aiofiles>=24.1.0",
|
|
13
13
|
"netifaces>=0.11.0",
|
|
14
|
+
# typing.override, from 3.12 on; mx_remote.compat picks the right one.
|
|
15
|
+
"typing_extensions>=4.4; python_version < '3.12'",
|
|
14
16
|
]
|
|
15
17
|
requires-python = ">=3.11"
|
|
16
18
|
authors = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|