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.
Files changed (221) hide show
  1. {mx_remote-5.5.0 → mx_remote-5.5.1}/AGENTS.md +7 -0
  2. {mx_remote-5.5.0 → mx_remote-5.5.1}/PKG-INFO +2 -1
  3. mx_remote-5.5.1/mx_remote/compat.py +22 -0
  4. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/const.py +1 -1
  5. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSystemStatus.py +1 -1
  6. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSystemStatus.pyi +1 -1
  7. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPAudio.py +1 -1
  8. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPAudio.pyi +1 -1
  9. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPBayMapping.py +1 -1
  10. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPBayMapping.pyi +1 -1
  11. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPMultiviewer.py +1 -1
  12. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPMultiviewer.pyi +1 -1
  13. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPConfig.py +2 -1
  14. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPConfig.pyi +2 -1
  15. mx_remote-5.5.1/mx_remote/py.typed +0 -0
  16. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Bay.py +2 -1
  17. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Bay.pyi +2 -1
  18. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Device.py +2 -1
  19. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Device.pyi +2 -1
  20. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Remote.py +2 -1
  21. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Remote.pyi +2 -1
  22. {mx_remote-5.5.0 → mx_remote-5.5.1}/pyproject.toml +2 -0
  23. {mx_remote-5.5.0 → mx_remote-5.5.1}/.gitignore +0 -0
  24. {mx_remote-5.5.0 → mx_remote-5.5.1}/CLAUDE.md +0 -0
  25. {mx_remote-5.5.0 → mx_remote-5.5.1}/LICENSE +0 -0
  26. {mx_remote-5.5.0 → mx_remote-5.5.1}/README.md +0 -0
  27. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/README.md +0 -0
  28. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/brand.css +0 -0
  29. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/favicon.svg +0 -0
  30. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/logo-dark.svg +0 -0
  31. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/_static/logo.svg +0 -0
  32. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/api.md +0 -0
  33. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/audio.md +0 -0
  34. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/callbacks.md +0 -0
  35. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/conf.py +0 -0
  36. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/configuration.md +0 -0
  37. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/devices-and-bays.md +0 -0
  38. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/diagnostics.md +0 -0
  39. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/index.md +0 -0
  40. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/multiviewer.md +0 -0
  41. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/oneip.md +0 -0
  42. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/requirements.txt +0 -0
  43. {mx_remote-5.5.0 → mx_remote-5.5.1}/docs/routing.md +0 -0
  44. {mx_remote-5.5.0 → mx_remote-5.5.1}/hatch_build.py +0 -0
  45. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Interface.py +0 -0
  46. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Interface.pyi +0 -0
  47. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Uid.py +0 -0
  48. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/Uid.pyi +0 -0
  49. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/__init__.py +0 -0
  50. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/__init__.pyi +0 -0
  51. /mx_remote-5.5.0/mx_remote/py.typed → /mx_remote-5.5.1/mx_remote/compat.pyi +0 -0
  52. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/const.pyi +0 -0
  53. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/main.py +0 -0
  54. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/main.pyi +0 -0
  55. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/BayConfig.py +0 -0
  56. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/BayConfig.pyi +0 -0
  57. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Constants.py +0 -0
  58. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Constants.pyi +0 -0
  59. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Data.py +0 -0
  60. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Data.pyi +0 -0
  61. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Factory.py +0 -0
  62. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Factory.pyi +0 -0
  63. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpDolbySettings.py +0 -0
  64. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpDolbySettings.pyi +0 -0
  65. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpZoneSettings.py +0 -0
  66. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAmpZoneSettings.pyi +0 -0
  67. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioClip.py +0 -0
  68. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioClip.pyi +0 -0
  69. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioSetRoute.py +0 -0
  70. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameAudioSetRoute.pyi +0 -0
  71. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBase.py +0 -0
  72. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBase.pyi +0 -0
  73. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfig.py +0 -0
  74. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfig.pyi +0 -0
  75. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfigSecondary.py +0 -0
  76. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayConfigSecondary.pyi +0 -0
  77. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayHide.py +0 -0
  78. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayHide.pyi +0 -0
  79. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayStatus.py +0 -0
  80. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameBayStatus.pyi +0 -0
  81. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameConnectStatus.py +0 -0
  82. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameConnectStatus.pyi +0 -0
  83. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDebug.py +0 -0
  84. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDebug.pyi +0 -0
  85. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDiscover.py +0 -0
  86. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameDiscover.pyi +0 -0
  87. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDID.py +0 -0
  88. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDID.pyi +0 -0
  89. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDIDProfile.py +0 -0
  90. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameEDIDProfile.pyi +0 -0
  91. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFactoryReset.py +0 -0
  92. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFactoryReset.pyi +0 -0
  93. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFilterStatus.py +0 -0
  94. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFilterStatus.pyi +0 -0
  95. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFirmwareVersion.py +0 -0
  96. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameFirmwareVersion.pyi +0 -0
  97. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHeader.py +0 -0
  98. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHeader.pyi +0 -0
  99. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHello.py +0 -0
  100. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameHello.pyi +0 -0
  101. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameLinks.py +0 -0
  102. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameLinks.pyi +0 -0
  103. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMeshOperation.py +0 -0
  104. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMeshOperation.pyi +0 -0
  105. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMirrorStatus.py +0 -0
  106. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMirrorStatus.pyi +0 -0
  107. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMonitoringPulse.py +0 -0
  108. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameMonitoringPulse.pyi +0 -0
  109. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameNetworkStatus.py +0 -0
  110. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameNetworkStatus.pyi +0 -0
  111. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FramePowerChange.py +0 -0
  112. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FramePowerChange.pyi +0 -0
  113. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCAction.py +0 -0
  114. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCAction.pyi +0 -0
  115. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCIr.py +0 -0
  116. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCIr.pyi +0 -0
  117. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCKey.py +0 -0
  118. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCKey.pyi +0 -0
  119. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCSettings.py +0 -0
  120. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRCSettings.pyi +0 -0
  121. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameReboot.py +0 -0
  122. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameReboot.pyi +0 -0
  123. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRoutingChange.py +0 -0
  124. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameRoutingChange.pyi +0 -0
  125. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetInstaller.py +0 -0
  126. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetInstaller.pyi +0 -0
  127. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetName.py +0 -0
  128. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetName.pyi +0 -0
  129. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetRoute.py +0 -0
  130. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetRoute.pyi +0 -0
  131. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetupStatus.py +0 -0
  132. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSetupStatus.pyi +0 -0
  133. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatus.py +0 -0
  134. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatus.pyi +0 -0
  135. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatusNew.py +0 -0
  136. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSignalStatusNew.pyi +0 -0
  137. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSysTemperature.py +0 -0
  138. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameSysTemperature.pyi +0 -0
  139. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCAction.py +0 -0
  140. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCAction.pyi +0 -0
  141. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCKey.py +0 -0
  142. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTXRCKey.pyi +0 -0
  143. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTopology.py +0 -0
  144. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTopology.pyi +0 -0
  145. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTxIR.py +0 -0
  146. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameTxIR.pyi +0 -0
  147. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameUpgradeFPGA.py +0 -0
  148. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameUpgradeFPGA.pyi +0 -0
  149. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDetectBays.py +0 -0
  150. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDetectBays.pyi +0 -0
  151. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDeviceConfiguration.py +0 -0
  152. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPDeviceConfiguration.pyi +0 -0
  153. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPLink.py +0 -0
  154. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPLink.pyi +0 -0
  155. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPManualSourceSwitch.py +0 -0
  156. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPManualSourceSwitch.pyi +0 -0
  157. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPPowerSave.py +0 -0
  158. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPPowerSave.pyi +0 -0
  159. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSetMaster.py +0 -0
  160. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSetMaster.pyi +0 -0
  161. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSourceSwitch.py +0 -0
  162. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSourceSwitch.pyi +0 -0
  163. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSources.py +0 -0
  164. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPSources.pyi +0 -0
  165. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPStats.py +0 -0
  166. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPStats.pyi +0 -0
  167. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPTiling.py +0 -0
  168. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPTiling.pyi +0 -0
  169. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPVideoWall.py +0 -0
  170. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameV2IPVideoWall.pyi +0 -0
  171. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolume.py +0 -0
  172. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolume.pyi +0 -0
  173. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeDown.py +0 -0
  174. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeDown.pyi +0 -0
  175. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeSet.py +0 -0
  176. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeSet.pyi +0 -0
  177. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeUp.py +0 -0
  178. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/FrameVolumeUp.pyi +0 -0
  179. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/LinkConfig.py +0 -0
  180. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/LinkConfig.pyi +0 -0
  181. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Multiviewer.py +0 -0
  182. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Multiviewer.pyi +0 -0
  183. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Svd.py +0 -0
  184. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/Svd.pyi +0 -0
  185. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPStats.py +0 -0
  186. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/V2IPStats.pyi +0 -0
  187. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/__init__.py +0 -0
  188. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/__init__.pyi +0 -0
  189. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/proto/svd.csv +0 -0
  190. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/ConnectionAsync.py +0 -0
  191. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/ConnectionAsync.pyi +0 -0
  192. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Link.py +0 -0
  193. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/Link.pyi +0 -0
  194. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/State.py +0 -0
  195. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/State.pyi +0 -0
  196. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/V2IP.py +0 -0
  197. {mx_remote-5.5.0 → mx_remote-5.5.1}/mx_remote/remote/V2IP.pyi +0 -0
  198. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/audio_ir.py +0 -0
  199. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/capture.py +0 -0
  200. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/e2e.py +0 -0
  201. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/entry.py +0 -0
  202. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/handlers.py +0 -0
  203. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/handlers_cover.py +0 -0
  204. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/hello.py +0 -0
  205. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/idempotent.py +0 -0
  206. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/merge.py +0 -0
  207. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/newops.py +0 -0
  208. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/offsets.py +0 -0
  209. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/proto_stamp.py +0 -0
  210. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/protogate.py +0 -0
  211. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/rcsettings.py +0 -0
  212. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/roundtrip.py +0 -0
  213. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/run.py +0 -0
  214. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/smoke.py +0 -0
  215. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/sources.py +0 -0
  216. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/stats.py +0 -0
  217. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/structs.py +0 -0
  218. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/txresult.py +0 -0
  219. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/unknowns.py +0 -0
  220. {mx_remote-5.5.0 → mx_remote-5.5.1}/tests/vdetails.py +0 -0
  221. {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.0
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']
@@ -14,7 +14,7 @@ Default communication modes:
14
14
  """
15
15
  import os
16
16
 
17
- VERSION = '5.5.0'
17
+ VERSION = '5.5.1'
18
18
  __version__ = VERSION
19
19
 
20
20
  MX_BCAST_UDP_PORT = 8811
@@ -6,7 +6,7 @@
6
6
  ######################################################
7
7
  '''Protocol frame for device system status notifications.'''
8
8
 
9
- from typing import override
9
+ from ..compat import override
10
10
  from .FrameBase import FrameBase
11
11
 
12
12
  class FrameSystemStatus(FrameBase):
@@ -1,5 +1,5 @@
1
+ from ..compat import override as override
1
2
  from .FrameBase import FrameBase as FrameBase
2
- from typing import override
3
3
 
4
4
  class FrameSystemStatus(FrameBase):
5
5
  @override
@@ -10,7 +10,7 @@ from enum import IntEnum
10
10
  from functools import cached_property
11
11
  import logging
12
12
  import struct
13
- from typing import override
13
+ from ..compat import override
14
14
 
15
15
  from .FrameHeader import FrameHeader
16
16
  from .FrameBase import FrameBase
@@ -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
 
@@ -7,7 +7,7 @@
7
7
  '''Protocol frame for V2IP bay-to-device UID mapping.'''
8
8
 
9
9
  from functools import cached_property
10
- from typing import override
10
+ from ..compat import override
11
11
  from ..Interface import MxrDeviceUid
12
12
  from .FrameBase import FrameBase
13
13
 
@@ -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 typing import override
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, override
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, override
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, override
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, override
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, override
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, override
20
+ from typing import Any, Callable
20
21
 
21
22
  class Device(DeviceBase):
22
23
  def __init__(self, registry: DeviceRegistry, hello: FrameHello) -> None: ...
@@ -9,7 +9,8 @@
9
9
  from functools import cached_property
10
10
  import logging
11
11
  import asyncio
12
- from typing import Any, override
12
+ from typing import Any
13
+ from ..compat import override
13
14
  import aiofiles
14
15
  import aiohttp
15
16
  import os
@@ -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, override
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