mpf 0.81.0.dev2__tar.gz → 0.81.0.dev4__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 (1110) hide show
  1. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.github/workflows/run_tests.yml +2 -2
  2. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/PKG-INFO +2 -2
  3. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/README.md +1 -1
  4. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/Send variables via self.machine.events.post.rst +2 -2
  5. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/overview/installation.rst +3 -3
  6. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/running_mpf_tests.rst +2 -2
  7. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/_version.py +1 -1
  8. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/assets/show.py +3 -3
  9. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/game.py +27 -0
  10. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/hardware_sound_player.py +3 -3
  11. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/segment_display_player.py +4 -2
  12. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_spec.yaml +26 -15
  13. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/async_mode.py +3 -3
  14. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/ball_search.py +3 -3
  15. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp.py +3 -3
  16. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp_transport.py +3 -3
  17. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/config_player.py +3 -3
  18. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/config_spec_loader.py +4 -2
  19. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/config_validator.py +3 -4
  20. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/data_manager.py +14 -12
  21. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/delays.py +3 -3
  22. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/device.py +3 -3
  23. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/device_manager.py +17 -4
  24. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/enable_disable_mixin.py +3 -3
  25. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/events.py +12 -9
  26. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/file_interface.py +4 -4
  27. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/file_manager.py +16 -12
  28. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/logging.py +3 -4
  29. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/machine.py +65 -6
  30. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/machine_vars.py +3 -3
  31. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/mode.py +3 -2
  32. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/mpf_controller.py +4 -2
  33. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/placeholder_manager.py +24 -4
  34. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/platform.py +53 -3
  35. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/platform_controller.py +3 -3
  36. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/segment_mappings.py +3 -3
  37. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/text_ui.py +4 -2
  38. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/utility_functions.py +11 -6
  39. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/achievement_group.py +3 -3
  40. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/autofire.py +4 -2
  41. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/ball_device_ejector.py +4 -2
  42. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/outgoing_balls_handler.py +5 -4
  43. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/physical_ball_counter.py +3 -3
  44. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_routing.py +3 -3
  45. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_save.py +3 -3
  46. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/blinkenlight.py +3 -2
  47. mpf-0.81.0.dev4/mpf/devices/dc_motor.py +90 -0
  48. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/digital_output.py +3 -3
  49. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/driver.py +12 -10
  50. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/drop_target.py +3 -4
  51. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/light.py +4 -4
  52. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/light_group.py +45 -13
  53. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/multiball_lock.py +3 -3
  54. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/segment_display/segment_display.py +3 -3
  55. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/shaker.py +12 -9
  56. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/show_queue.py +3 -2
  57. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/spinner.py +2 -2
  58. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/switch.py +3 -3
  59. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/timer.py +3 -3
  60. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/file_interfaces/pickle_interface.py +1 -1
  61. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/file_interfaces/yaml_interface.py +23 -7
  62. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/mpfconfig.yaml +2 -1
  63. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/base_serial_communicator.py +2 -3
  64. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fadecandy.py +3 -3
  65. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/base.py +92 -14
  66. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/exp.py +5 -3
  67. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/net_neuron.py +30 -1
  68. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/seg.py +3 -2
  69. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast.py +54 -13
  70. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_defines.py +5 -0
  71. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_driver.py +3 -2
  72. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_led.py +17 -7
  73. mpf-0.81.0.dev4/mpf/platforms/fast/fast_motor.py +59 -0
  74. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_shaker.py +1 -2
  75. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_switch.py +0 -2
  76. mpf-0.81.0.dev4/mpf/platforms/interfaces/motor_platform_interface.py +34 -0
  77. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/lisy/lisy.py +1 -1
  78. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/mypinballs/mypinballs.py +1 -1
  79. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/openpixel.py +3 -3
  80. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp.py +3 -2
  81. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_coil.py +3 -3
  82. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_serial_communicator.py +3 -2
  83. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_servo.py +3 -2
  84. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/p3_roc.py +3 -3
  85. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/p_roc.py +3 -3
  86. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/p_roc_common.py +2 -2
  87. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/p_roc_devices.py +3 -3
  88. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_coil.py +3 -3
  89. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_lights.py +4 -2
  90. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_serial_communicator.py +4 -2
  91. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_servo.py +3 -2
  92. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_switch.py +3 -2
  93. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pololu_maestro.py +1 -1
  94. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/smart_virtual.py +4 -3
  95. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/spike/spike.py +3 -3
  96. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/system11.py +3 -3
  97. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/virtual.py +36 -2
  98. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/virtual_pinball/virtual_pinball.py +1 -1
  99. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/plugins/auditor.py +3 -2
  100. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/plugins/virtual_segment_display_connector.py +3 -2
  101. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/auditor/config/config.yaml +3 -1
  102. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/custom_code/code/test_code.py +4 -0
  103. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/data_manager/config/config.yaml +4 -1
  104. mpf-0.81.0.dev4/mpf/tests/machine_files/dc_motor/config/config.yaml +18 -0
  105. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_manager/config/test_event_manager.yaml +6 -0
  106. mpf-0.81.0.dev4/mpf/tests/machine_files/event_manager/modes/game_mode/config/game_mode.yaml +14 -0
  107. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light/config/light_groups.yaml +12 -0
  108. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/service_mode/config/config.yaml +1 -1
  109. mpf-0.81.0.dev4/mpf/tests/machine_files/settings/config/config.yaml +48 -0
  110. mpf-0.81.0.dev4/mpf/tests/machine_files/soft_power_down/config/config.yaml +1 -0
  111. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/platforms/fast.py +3 -3
  112. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_CustomCode.py +7 -0
  113. mpf-0.81.0.dev4/mpf/tests/test_DCMotor.py +37 -0
  114. mpf-0.81.0.dev4/mpf/tests/test_DeviceManager.py +102 -0
  115. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_EventManager.py +45 -0
  116. mpf-0.81.0.dev4/mpf/tests/test_Fast_Communicator.py +183 -0
  117. mpf-0.81.0.dev4/mpf/tests/test_Fast_Led.py +61 -0
  118. mpf-0.81.0.dev4/mpf/tests/test_Fast_Power.py +82 -0
  119. mpf-0.81.0.dev4/mpf/tests/test_FileManager.py +75 -0
  120. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_LightGroups.py +48 -16
  121. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_LightNumbering.py +2 -3
  122. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_RandomEventPlayer.py +4 -4
  123. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ServiceCli.py +1 -1
  124. mpf-0.81.0.dev4/mpf/tests/test_Settings.py +42 -0
  125. mpf-0.81.0.dev4/mpf/tests/test_SoftPowerDown.py +69 -0
  126. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Utility_Functions.py +54 -7
  127. mpf-0.81.0.dev4/mpf/tests/test_YamlInterface.py +92 -0
  128. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.egg-info/PKG-INFO +2 -2
  129. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.egg-info/SOURCES.txt +11 -5
  130. mpf-0.81.0.dev4/sonar-project.properties +2 -0
  131. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/tools/smart_matrix_dmd_teensy_code/smart_matrix_dmd_teensy_code.ino +2 -2
  132. mpf-0.81.0.dev2/mpf/plugins/twitch/__init__.py +0 -1
  133. mpf-0.81.0.dev2/mpf/plugins/twitch/twitch_client.py +0 -254
  134. mpf-0.81.0.dev2/mpf/plugins/twitch_bot.py +0 -57
  135. mpf-0.81.0.dev2/mpf/tests/machine_files/event_manager/modes/game_mode/config/game_mode.yaml +0 -9
  136. mpf-0.81.0.dev2/mpf/tests/machine_files/settings/config/config.yaml +0 -21
  137. mpf-0.81.0.dev2/mpf/tests/machine_files/twitch_client/config/config.yaml +0 -6
  138. mpf-0.81.0.dev2/mpf/tests/test_DeviceManager.py +0 -39
  139. mpf-0.81.0.dev2/mpf/tests/test_Settings.py +0 -26
  140. mpf-0.81.0.dev2/mpf/tests/test_TwitchClient.py +0 -175
  141. mpf-0.81.0.dev2/mpf/tests/test_YamlInterface.py +0 -59
  142. mpf-0.81.0.dev2/sonar-project.properties +0 -1
  143. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.bandit +0 -0
  144. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.coveragerc +0 -0
  145. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.github/dependabot.yml +0 -0
  146. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.github/workflows/build_wheels.yml +0 -0
  147. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.github/workflows/prospector.yml +0 -0
  148. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.gitignore +0 -0
  149. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/.prospector.yaml +0 -0
  150. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/AUTHORS.md +0 -0
  151. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/CONTRIBUTING.md +0 -0
  152. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/LICENSE.md +0 -0
  153. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/Makefile +0 -0
  154. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/RELEASE.md +0 -0
  155. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/Makefile +0 -0
  156. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-114x114.png +0 -0
  157. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-120x120.png +0 -0
  158. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-144x144.png +0 -0
  159. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-152x152.png +0 -0
  160. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-57x57.png +0 -0
  161. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-60x60.png +0 -0
  162. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-72x72.png +0 -0
  163. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/apple-touch-icon-76x76.png +0 -0
  164. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/favicon-128.png +0 -0
  165. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/favicon-16x16.png +0 -0
  166. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/favicon-196x196.png +0 -0
  167. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/favicon-32x32.png +0 -0
  168. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/favicon-96x96.png +0 -0
  169. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/favicon.ico +0 -0
  170. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/mstile-144x144.png +0 -0
  171. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/mstile-150x150.png +0 -0
  172. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/mstile-310x150.png +0 -0
  173. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/mstile-310x310.png +0 -0
  174. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/icons/mstile-70x70.png +0 -0
  175. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/mpf-logo-200.png +0 -0
  176. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/mpf-logo-tiny.png +0 -0
  177. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/images/mpf-logo-tiny@2x.png +0 -0
  178. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_static/mpf.css +0 -0
  179. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/config_players.rst +0 -0
  180. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/config_players_overview.rst +0 -0
  181. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/devices.rst +0 -0
  182. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/devices_overview.rst +0 -0
  183. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/index.rst +0 -0
  184. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/machine.rst +0 -0
  185. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/machine_overview.rst +0 -0
  186. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/misc.rst +0 -0
  187. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/misc_overview.rst +0 -0
  188. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/modes.rst +0 -0
  189. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/modes_overview.rst +0 -0
  190. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/platforms.rst +0 -0
  191. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/platforms_overview.rst +0 -0
  192. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/self.machine.rst +0 -0
  193. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/tests.rst +0 -0
  194. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/_templates/tests_overview.rst +0 -0
  195. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/ball_end.rst +0 -0
  196. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/ball_start.rst +0 -0
  197. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/device.rst +0 -0
  198. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/error.rst +0 -0
  199. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/goodbye.rst +0 -0
  200. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/hello.rst +0 -0
  201. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/index.rst +0 -0
  202. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/machine_variable.rst +0 -0
  203. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/mode_start.rst +0 -0
  204. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/mode_stop.rst +0 -0
  205. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/monitor_start.rst +0 -0
  206. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/monitor_stop.rst +0 -0
  207. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/player_added.rst +0 -0
  208. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/player_turn_start.rst +0 -0
  209. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/player_variable.rst +0 -0
  210. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/register_trigger.rst +0 -0
  211. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/remove_trigger.rst +0 -0
  212. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/reset.rst +0 -0
  213. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/reset_complete.rst +0 -0
  214. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/switch.rst +0 -0
  215. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/bcp/trigger.rst +0 -0
  216. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/code/index.rst +0 -0
  217. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/code/machine_code.rst +0 -0
  218. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/code/mode_code.rst +0 -0
  219. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/conf.py +0 -0
  220. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/dev_environment.rst +0 -0
  221. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/event_annotations.rst +0 -0
  222. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/hardware.rst +0 -0
  223. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/index.rst +0 -0
  224. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/mc.widget_player.rst +0 -0
  225. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/dev/plugins.rst +0 -0
  226. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/functions/index.rst +0 -0
  227. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/functions/machine_variables.rst +0 -0
  228. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/functions/player_variables.rst +0 -0
  229. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/genindex.rst +0 -0
  230. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/images/custom_mode_code.png +0 -0
  231. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/images/scriptlet.png +0 -0
  232. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/images/test_classes.png +0 -0
  233. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/index.rst +0 -0
  234. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/make.bat +0 -0
  235. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/overview/boot_process.rst +0 -0
  236. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/overview/files.rst +0 -0
  237. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/overview/index.rst +0 -0
  238. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/overview/yaml.rst +0 -0
  239. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/requirements.txt +0 -0
  240. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/fuzz_testing.rst +0 -0
  241. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/index.rst +0 -0
  242. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/tutorial/1.rst +0 -0
  243. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/tutorial/2.rst +0 -0
  244. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/writing_machine_tests.rst +0 -0
  245. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/docs/testing/writing_mpf_tests.rst +0 -0
  246. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/get_version.py +0 -0
  247. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/__init__.py +0 -0
  248. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/__main__.py +0 -0
  249. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/assets/__init__.py +0 -0
  250. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/__init__.py +0 -0
  251. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/events/config/config.yaml +0 -0
  252. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/shows/config/config.yaml +0 -0
  253. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/shows/shows/minimal_light_show.yaml +0 -0
  254. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/shows/shows/minimal_light_show_token.yaml +0 -0
  255. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/shows/shows/multi_step_tags.yaml +0 -0
  256. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/shows/shows/single_step_tag.yaml +0 -0
  257. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/machine_files/switch_hits/config/config.yaml +0 -0
  258. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/test_benchmark_events.py +0 -0
  259. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/test_benchmark_light_shows.py +0 -0
  260. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/benchmarks/test_benchmark_switch_hits.py +0 -0
  261. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/__init__.py +0 -0
  262. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/both.py +0 -0
  263. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/build.py +0 -0
  264. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/core.py +0 -0
  265. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/create_config.py +0 -0
  266. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/diagnosis.py +0 -0
  267. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/hardware.py +0 -0
  268. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/init.py +0 -0
  269. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/logging_formatters.py +0 -0
  270. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/service.py +0 -0
  271. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/templates/attract.yaml +0 -0
  272. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/templates/base.yaml +0 -0
  273. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/templates/config.yaml +0 -0
  274. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/test.py +0 -0
  275. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/commands/wire.py +0 -0
  276. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/__init__.py +0 -0
  277. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/bcp_plugin_player.py +0 -0
  278. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/blinkenlight_player.py +0 -0
  279. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/block_event_player.py +0 -0
  280. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/bus_player.py +0 -0
  281. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/coil_player.py +0 -0
  282. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/device_config_player.py +0 -0
  283. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/event_player.py +0 -0
  284. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/flasher_player.py +0 -0
  285. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/flat_config_player.py +0 -0
  286. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/light_player.py +0 -0
  287. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/plugin_player.py +0 -0
  288. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/queue_event_player.py +0 -0
  289. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/queue_relay_player.py +0 -0
  290. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/random_event_player.py +0 -0
  291. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/score_queue_player.py +0 -0
  292. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/show_player.py +0 -0
  293. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/slide_player.py +0 -0
  294. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/sound_player.py +0 -0
  295. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/variable_player.py +0 -0
  296. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/config_players/widget_player.py +0 -0
  297. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/__init__.py +0 -0
  298. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/assets.py +0 -0
  299. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/ball_controller.py +0 -0
  300. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/__init__.py +0 -0
  301. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp_client.py +0 -0
  302. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp_interface.py +0 -0
  303. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp_pickle_client.py +0 -0
  304. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp_server.py +0 -0
  305. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/bcp/bcp_socket_client.py +0 -0
  306. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/case_insensitive_dict.py +0 -0
  307. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/clock.py +0 -0
  308. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/config_loader.py +0 -0
  309. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/config_processor.py +0 -0
  310. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/crash_reporter.py +0 -0
  311. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/custom_code.py +0 -0
  312. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/device_monitor.py +0 -0
  313. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/light_controller.py +0 -0
  314. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/mode_controller.py +0 -0
  315. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/mode_device.py +0 -0
  316. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/platform_batch_light_system.py +0 -0
  317. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/player.py +0 -0
  318. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/plugin.py +0 -0
  319. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/randomizer.py +0 -0
  320. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/rgb_color.py +0 -0
  321. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/rgba_color.py +0 -0
  322. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/service_controller.py +0 -0
  323. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/settings_controller.py +0 -0
  324. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/show_controller.py +0 -0
  325. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/switch_controller.py +0 -0
  326. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/core/system_wide_device.py +0 -0
  327. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/__init__.py +0 -0
  328. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/accelerometer.py +0 -0
  329. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/achievement.py +0 -0
  330. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/__init__.py +0 -0
  331. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/ball_count_handler.py +0 -0
  332. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/ball_device.py +0 -0
  333. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/ball_device_state_handler.py +0 -0
  334. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/default_ball_search.py +0 -0
  335. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/enable_coil_ejector.py +0 -0
  336. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/entrance_switch_counter.py +0 -0
  337. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/event_ejector.py +0 -0
  338. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/hold_coil_ejector.py +0 -0
  339. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/incoming_balls_handler.py +0 -0
  340. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/pulse_coil_ejector.py +0 -0
  341. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_device/switch_counter.py +0 -0
  342. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/ball_hold.py +0 -0
  343. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/combo_switch.py +0 -0
  344. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/device_mixins.py +0 -0
  345. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/digital_score_reel.py +0 -0
  346. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/diverter.py +0 -0
  347. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/dmd.py +0 -0
  348. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/dual_wound_coil.py +0 -0
  349. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/extra_ball.py +0 -0
  350. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/extra_ball_group.py +0 -0
  351. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/flipper.py +0 -0
  352. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/hardware_sound_system.py +0 -0
  353. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/kickback.py +0 -0
  354. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/logic_blocks.py +0 -0
  355. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/magnet.py +0 -0
  356. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/motor.py +0 -0
  357. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/multiball.py +0 -0
  358. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/playfield.py +0 -0
  359. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/playfield_transfer.py +0 -0
  360. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/power_supply_unit.py +0 -0
  361. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/rgb_dmd.py +0 -0
  362. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/score_queue.py +0 -0
  363. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/score_reel.py +0 -0
  364. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/score_reel_controller.py +0 -0
  365. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/score_reel_group.py +0 -0
  366. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/segment_display/__init__.py +0 -0
  367. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/segment_display/segment_display_text.py +0 -0
  368. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/segment_display/text_stack_entry.py +0 -0
  369. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/segment_display/transition_manager.py +0 -0
  370. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/segment_display/transitions.py +0 -0
  371. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/sequence_shot.py +0 -0
  372. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/servo.py +0 -0
  373. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/shot.py +0 -0
  374. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/shot_group.py +0 -0
  375. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/shot_profile.py +0 -0
  376. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/speedometer.py +0 -0
  377. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/state_machine.py +0 -0
  378. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/stepper.py +0 -0
  379. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/devices/timed_switch.py +0 -0
  380. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/exceptions/__init__.py +0 -0
  381. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/exceptions/base_error.py +0 -0
  382. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/exceptions/config_file_error.py +0 -0
  383. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/exceptions/driver_limits_error.py +0 -0
  384. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/exceptions/runtime_error.py +0 -0
  385. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/file_interfaces/__init__.py +0 -0
  386. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/__init__.py +0 -0
  387. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/attract/__init__.py +0 -0
  388. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/attract/code/__init__.py +0 -0
  389. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/attract/code/attract.py +0 -0
  390. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/attract/config/attract.yaml +0 -0
  391. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/bonus/__init__.py +0 -0
  392. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/bonus/code/__init__.py +0 -0
  393. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/bonus/code/bonus.py +0 -0
  394. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/bonus/config/bonus.yaml +0 -0
  395. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/carousel/__init__.py +0 -0
  396. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/carousel/code/__init__.py +0 -0
  397. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/carousel/code/carousel.py +0 -0
  398. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/credits/__init__.py +0 -0
  399. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/credits/code/__init__.py +0 -0
  400. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/credits/code/credits.py +0 -0
  401. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/credits/config/credits.yaml +0 -0
  402. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/game/__init__.py +0 -0
  403. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/game/code/__init__.py +0 -0
  404. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/game/code/game.py +0 -0
  405. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/game/config/game.yaml +0 -0
  406. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/__init__.py +0 -0
  407. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/code/__init__.py +0 -0
  408. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/code/high_score.py +0 -0
  409. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/config/high_score.yaml +0 -0
  410. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/images/back_arrow_7x7.png +0 -0
  411. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/images/back_arrow_7x7_selected.png +0 -0
  412. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/images/end_11x7.png +0 -0
  413. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/high_score/images/end_11x7_selected.png +0 -0
  414. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/match/code/__init__.py +0 -0
  415. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/match/code/match.py +0 -0
  416. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/match/config/match.yaml +0 -0
  417. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service/__init__.py +0 -0
  418. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service/code/__init__.py +0 -0
  419. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service/code/service.py +0 -0
  420. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service/config/service.yaml +0 -0
  421. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service/sounds/power_off.ogg +0 -0
  422. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service/sounds/switch_hit.ogg +0 -0
  423. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service_dmd/config/service_dmd.yaml +0 -0
  424. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/service_segment_display/config/service_segment_display.yaml +0 -0
  425. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/tilt/__init__.py +0 -0
  426. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/tilt/code/__init__.py +0 -0
  427. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/tilt/code/tilt.py +0 -0
  428. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/modes/tilt/config/tilt.yaml +0 -0
  429. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/parsers/__init__.py +0 -0
  430. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/parsers/event_reference_parser.py +0 -0
  431. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/parsers/special_events.py +0 -0
  432. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/__init__.py +0 -0
  433. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/driver_light_platform.py +0 -0
  434. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/TODO.md +0 -0
  435. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/__init__.py +0 -0
  436. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/aud.py +0 -0
  437. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/dmd.py +0 -0
  438. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/emu.py +0 -0
  439. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/net_nano.py +0 -0
  440. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/net_retro.py +0 -0
  441. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/communicators/rgb.py +0 -0
  442. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_audio.py +0 -0
  443. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_dmd.py +0 -0
  444. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_exp_board.py +0 -0
  445. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_gi.py +0 -0
  446. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_io_board.py +0 -0
  447. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_light.py +0 -0
  448. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_port_detector.py +0 -0
  449. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_segment_display.py +0 -0
  450. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_servo.py +0 -0
  451. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/fast/fast_stepper.py +0 -0
  452. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/i2c_servo_controller.py +0 -0
  453. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/__init__.py +0 -0
  454. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/accelerometer_platform_interface.py +0 -0
  455. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/dmd_platform.py +0 -0
  456. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/driver_platform_interface.py +0 -0
  457. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/hardware_sound_platform_interface.py +0 -0
  458. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/i2c_platform_interface.py +0 -0
  459. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/light_platform_interface.py +0 -0
  460. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/segment_display_platform_interface.py +0 -0
  461. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/servo_platform_interface.py +0 -0
  462. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/shaker_platform_interface.py +0 -0
  463. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/stepper_platform_interface.py +0 -0
  464. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/interfaces/switch_platform_interface.py +0 -0
  465. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/light_segment_displays.py +0 -0
  466. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/lisy/__init__.py +0 -0
  467. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/lisy/defines.py +0 -0
  468. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/mma8451.py +0 -0
  469. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/mypinballs/__init__.py +0 -0
  470. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/__init__.py +0 -0
  471. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_incand.py +0 -0
  472. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_modern_lights.py +0 -0
  473. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_rs232_intf.py +0 -0
  474. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/opp/opp_switch.py +0 -0
  475. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/osc.py +0 -0
  476. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pin2dmd.py +0 -0
  477. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/osx/pinproc.so +0 -0
  478. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp310-win32.pyd +0 -0
  479. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp310-win_amd64.pyd +0 -0
  480. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp311-win32.pyd +0 -0
  481. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp311-win_amd64.pyd +0 -0
  482. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp312-win32.pyd +0 -0
  483. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp312-win_amd64.pyd +0 -0
  484. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp313-win32.pyd +0 -0
  485. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp313-win_amd64.pyd +0 -0
  486. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp314-win32.pyd +0 -0
  487. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pinproc/windows/pinproc.cp314-win_amd64.pyd +0 -0
  488. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/__init__.py +0 -0
  489. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone.py +0 -0
  490. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_extension.py +0 -0
  491. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pkone/pkone_lightshow.py +0 -0
  492. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pololu/__init__.py +0 -0
  493. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pololu/pololu_tic.py +0 -0
  494. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/pololu/pololu_ticcmd_wrapper.py +0 -0
  495. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/rpi/__init__.py +0 -0
  496. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/rpi/rpi.py +0 -0
  497. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/rpi_dmd.py +0 -0
  498. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/smartmatrix.py +0 -0
  499. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/smbus2.py +0 -0
  500. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/snux.py +0 -0
  501. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/spi_bit_bang.py +0 -0
  502. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/spike/__init__.py +0 -0
  503. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/spike/spike_defines.py +0 -0
  504. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/step_stick.py +0 -0
  505. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/trinamics/README +0 -0
  506. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/trinamics/TMCL.py +0 -0
  507. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/trinamics/__init__.py +0 -0
  508. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/trinamics_steprocker.py +0 -0
  509. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/virtual_pinball/__init__.py +0 -0
  510. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/__init__.py +0 -0
  511. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/generate.py +0 -0
  512. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/platform_pb2.py +0 -0
  513. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/platform_pb2_grpc.py +0 -0
  514. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/protobuf/platform.proto +0 -0
  515. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/service.py +0 -0
  516. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/test_client.py +0 -0
  517. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/test_server.py +0 -0
  518. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/visual_pinball_engine/visual_pinball_engine.py +0 -0
  519. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd.py +0 -0
  520. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_arm64/extending.so +0 -0
  521. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_arm64/libserialport.so.0 +0 -0
  522. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_arm64/libsockpp.so.1 +0 -0
  523. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_arm64/libzedmd.so +0 -0
  524. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_x64/extending.so +0 -0
  525. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_x64/libserialport.so.0 +0 -0
  526. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_x64/libsockpp.so.1 +0 -0
  527. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/linux_x64/libzedmd.so +0 -0
  528. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_arm64/extending.so +0 -0
  529. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_arm64/libserialport.dylib +0 -0
  530. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_arm64/libsockpp.dylib +0 -0
  531. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_arm64/libzedmd.dylib +0 -0
  532. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_x64/extending.so +0 -0
  533. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_x64/libserialport.dylib +0 -0
  534. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_x64/libsockpp.dylib +0 -0
  535. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/macos_x64/libzedmd.dylib +0 -0
  536. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/win_x64/extending.pyd +0 -0
  537. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/win_x64/libserialport64.dll +0 -0
  538. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/win_x64/sockpp64.dll +0 -0
  539. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/platforms/zedmd_lib/win_x64/zedmd64.dll +0 -0
  540. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/plugins/__init__.py +0 -0
  541. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/plugins/info_lights.py +0 -0
  542. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/plugins/platform_integration_test_runner.py +0 -0
  543. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/plugins/switch_player.py +0 -0
  544. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfBcpTestCase.py +0 -0
  545. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfDocTestCase.py +0 -0
  546. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfFakeGameTestCase.py +0 -0
  547. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfGameTestCase.py +0 -0
  548. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfIntegrationDocTestCase.py +0 -0
  549. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfMachineTestCase.py +0 -0
  550. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfPlatformIntegrationTest.py +0 -0
  551. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/MpfTestCase.py +0 -0
  552. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/README.md +0 -0
  553. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/TestDataManager.py +0 -0
  554. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/__init__.py +0 -0
  555. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/loop.py +0 -0
  556. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/accelerometer/config/config.yaml +0 -0
  557. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/achievement/config/config.yaml +0 -0
  558. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/achievement/modes/auto_select/config/auto_select.yaml +0 -0
  559. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/achievement/modes/base/config/base.yaml +0 -0
  560. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/achievement/modes/mode1/config/mode1.yaml +0 -0
  561. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/apc/config/config.yaml +0 -0
  562. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/config/test_asset_loading.yaml +0 -0
  563. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/modes/mode1/config/mode1.yaml +0 -0
  564. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/modes/mode1/shows/custom1/show8.yaml +0 -0
  565. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/modes/mode1/shows/mode_start/show9.yaml +0 -0
  566. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/modes/mode1/shows/on_demand/show10.yaml +0 -0
  567. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/modes/mode1/shows/preload/show7.yaml +0 -0
  568. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/modes/mode1/shows/show6.yaml +0 -0
  569. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/custom1/show11.yaml +0 -0
  570. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/custom1/show13.yaml +0 -0
  571. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/on_demand/show5.yaml +0 -0
  572. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/preload/show4.yaml +0 -0
  573. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/preload/subfolder/show4b.yaml +0 -0
  574. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/show1.yaml +0 -0
  575. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/show12.yaml +0 -0
  576. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/show2.yaml +0 -0
  577. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/asset_manager/shows/show3.yaml +0 -0
  578. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/auditor/modes/base/config/base.yaml +0 -0
  579. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/autofire/config/config.yaml +0 -0
  580. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_controller/config/config.yaml +0 -0
  581. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_controller/config/regression.yaml +0 -0
  582. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device.yaml +0 -0
  583. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_auto_manual_plunger.yaml +0 -0
  584. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_event_confirmation.yaml +0 -0
  585. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_event_ejector.yaml +0 -0
  586. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_jam_switch.yaml +0 -0
  587. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_jam_switch_initial.yaml +0 -0
  588. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_manual_with_target.yaml +0 -0
  589. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_no_plunger_switch.yaml +0 -0
  590. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_routing.yaml +0 -0
  591. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_switch_confirmation.yaml +0 -0
  592. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_ball_device_trigger_events.yaml +0 -0
  593. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_enable_coil.yaml +0 -0
  594. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_enable_coil_multiple.yaml +0 -0
  595. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_gottlieb_trough.yaml +0 -0
  596. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_gottlieb_trough_with_initial_balls.yaml +0 -0
  597. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_hold_coil.yaml +0 -0
  598. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_jam_and_ball_left.yaml +0 -0
  599. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_modern_trough_plunger_setup.yaml +0 -0
  600. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_player_controlled_eject.yaml +0 -0
  601. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_playfield_lock.yaml +0 -0
  602. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_pulse_eject.yaml +0 -0
  603. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_single_device.yaml +0 -0
  604. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_system_11_trough.yaml +0 -0
  605. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_system_11_trough_startup.yaml +0 -0
  606. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/test_too_long_exit_count_delay.yaml +0 -0
  607. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/trough_entrance_switch.yaml +0 -0
  608. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_device/config/trough_entrance_switch_initial_balls.yaml +0 -0
  609. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_holds/config/test_ball_holds.yaml +0 -0
  610. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_holds/modes/mode1/config/mode1.yaml +0 -0
  611. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_routing/config/config.yaml +0 -0
  612. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_routing/modes/mode1/config/mode1.yaml +0 -0
  613. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_save/config/config.yaml +0 -0
  614. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_save/modes/mode1/config/mode1.yaml +0 -0
  615. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_save/modes/mode2/config/mode2.yaml +0 -0
  616. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_search/config/config.yaml +0 -0
  617. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_search/config/config_ball_device.yaml +0 -0
  618. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_search/config/config_with_balls.yaml +0 -0
  619. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_search/config/mechanical_eject.yaml +0 -0
  620. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_search/config/missing_initial.yaml +0 -0
  621. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/ball_search/config/no_eject.yaml +0 -0
  622. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bcp/config/config.yaml +0 -0
  623. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bcp/config/multiple_connections_config.yaml +0 -0
  624. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bcp/modes/mode1/config/mode1.yaml +0 -0
  625. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bcp/modes/mode2/config/mode2.yaml +0 -0
  626. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blinkenlight/config/config.yaml +0 -0
  627. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blinkenlight/modes/mode1/config/mode1.yaml +0 -0
  628. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blinkenlight/modes/mode2/config/mode2.yaml +0 -0
  629. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blocking_events/config/config.yaml +0 -0
  630. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blocking_events/modes/mode1/config/mode1.yaml +0 -0
  631. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blocking_events/modes/mode2/config/mode2.yaml +0 -0
  632. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/blocking_events/modes/mode3/config/mode3.yaml +0 -0
  633. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus/config/config.yaml +0 -0
  634. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus/modes/bonus/config/bonus.yaml +0 -0
  635. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus/modes/mode1/config/mode1.yaml +0 -0
  636. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_additional_events/config/config.yaml +0 -0
  637. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_additional_events/modes/bonus/config/bonus.yaml +0 -0
  638. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_additional_events/modes/mode1/config/mode1.yaml +0 -0
  639. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_dynamic_keep_multiplier/config/config.yaml +0 -0
  640. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_dynamic_keep_multiplier/modes/bonus/config/bonus.yaml +0 -0
  641. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_dynamic_keep_multiplier/modes/mode1/config/mode1.yaml +0 -0
  642. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_no_keep_multiplier/config/config.yaml +0 -0
  643. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_no_keep_multiplier/modes/bonus/config/bonus.yaml +0 -0
  644. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/bonus_no_keep_multiplier/modes/mode1/config/mode1.yaml +0 -0
  645. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/carousel/config/config.yaml +0 -0
  646. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/carousel/modes/blocking_carousel/config/blocking_carousel.yaml +0 -0
  647. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/carousel/modes/carousel/config/carousel.yaml +0 -0
  648. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/carousel/modes/conditional_carousel/config/conditional_carousel.yaml +0 -0
  649. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/carousel/modes/nowrap_carousel/config/nowrap_carousel.yaml +0 -0
  650. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/carousel/modes/second_carousel/config/second_carousel.yaml +0 -0
  651. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/coil_player/config/coil_player.yaml +0 -0
  652. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/coil_player/modes/mode1/config/mode1.yaml +0 -0
  653. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/combo_switches/config/combo_switches.yaml +0 -0
  654. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/combo_switches/modes/mode1/config/mode1.yaml +0 -0
  655. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_errors/broken_show/config/show.yaml +0 -0
  656. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_errors/broken_show/shows/broken_show.yaml +0 -0
  657. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_interface/config/test_config_interface.yaml +0 -0
  658. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_interface/config/test_config_interface_missing_version.yaml +0 -0
  659. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_interface/config/test_config_interface_old_version.yaml +0 -0
  660. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_loader/config/config.yaml +0 -0
  661. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_loader/modes/game/config/game.yaml +0 -0
  662. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_loader/modes/mode1/config/mode1.yaml +0 -0
  663. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_loader/modes/mode1/shows/mode1_show.yaml +0 -0
  664. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_loader/modes/mode2/config/mode2.yaml +0 -0
  665. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_loader/shows/show1.yaml +0 -0
  666. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_players/config/test_config_players.yaml +0 -0
  667. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_players/modes/mode1/config/mode1.yaml +0 -0
  668. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_players/modes/mode1/shows/mode1_show.yaml +0 -0
  669. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_players/modes/mode2/config/mode2.yaml +0 -0
  670. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_players/shows/show1.yaml +0 -0
  671. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_processor/typo.yaml +0 -0
  672. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_processor/working.yaml +0 -0
  673. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/config_processor/working_subconfig.yaml +0 -0
  674. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/counters/config/config.yaml +0 -0
  675. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/counters/modes/mode1/config/mode1.yaml +0 -0
  676. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/credits/config/config.yaml +0 -0
  677. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/credits/config/config_credit_tiers.yaml +0 -0
  678. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/credits/config/config_freeplay.yaml +0 -0
  679. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/credits/config/config_inhibit.yaml +0 -0
  680. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/credits/modes/credits/config/config.yaml +0 -0
  681. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/custom_code/code/__init__.py +0 -0
  682. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/custom_code/config/config.yaml +0 -0
  683. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/device/config/coils.yaml +0 -0
  684. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/device/config/config.yaml +0 -0
  685. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/device/config/config_dual_wound_coil.yaml +0 -0
  686. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/device_collection/config/test_device_collection.yaml +0 -0
  687. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/digital_output/config/config.yaml +0 -0
  688. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/digital_score_reels/config/test_digital_score_reels.yaml +0 -0
  689. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/config.yaml +0 -0
  690. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/diverter_with_activation_events.yaml +0 -0
  691. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/only_events_no_coils.yaml +0 -0
  692. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_activation_switch_and_eject_confirm_switch.yaml +0 -0
  693. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_delayed_eject.yaml +0 -0
  694. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_diverter_auto_disable.yaml +0 -0
  695. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_diverter_dual_wound_coil.yaml +0 -0
  696. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_diverter_with_switch.yaml +0 -0
  697. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_eject_to_oposide_sides.yaml +0 -0
  698. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_eject_to_oposide_sides2.yaml +0 -0
  699. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_hold_activation_time.yaml +0 -0
  700. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_hold_activation_time_template.yaml +0 -0
  701. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_hold_no_activation_time.yaml +0 -0
  702. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_missing_ball_at_source.yaml +0 -0
  703. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/diverter/config/test_pulsed_activation_time.yaml +0 -0
  704. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/dmd/config/testDmd.yaml +0 -0
  705. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/dmd/config/testRgbDmd.yaml +0 -0
  706. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/drop_targets/config/test_drop_targets.yaml +0 -0
  707. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/drop_targets/config/test_multiple_drop_resets_on_startup.yaml +0 -0
  708. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/drop_targets/modes/mode1/config/mode1.yaml +0 -0
  709. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_manager/modes/test_mode/config/test_mode.yaml +0 -0
  710. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_players/config/test_event_player.yaml +0 -0
  711. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_players/config/test_queue_event_player.yaml +0 -0
  712. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_players/config/test_random_event_player.yaml +0 -0
  713. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_players/modes/mode1/config/mode1.yaml +0 -0
  714. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/event_players/modes/mode2/config/mode2.yaml +0 -0
  715. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/extra_ball/config/config.yaml +0 -0
  716. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/extra_ball/modes/mode1/config/mode1.yaml +0 -0
  717. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/audio.yaml +0 -0
  718. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/audio2.yaml +0 -0
  719. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/dmd.yaml +0 -0
  720. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/error_lights.yaml +0 -0
  721. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/exp.yaml +0 -0
  722. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/nano.yaml +0 -0
  723. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/neuron.yaml +0 -0
  724. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/retro.yaml +0 -0
  725. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/fast/config/seg.yaml +0 -0
  726. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/flippers/config/config.yaml +0 -0
  727. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/flippers/config/hold_no_eos.yaml +0 -0
  728. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/flippers/config/software_eos_repulse.yaml +0 -0
  729. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/game/config/config.yaml +0 -0
  730. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/game/config/config_with_balls.yaml +0 -0
  731. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/head2head/config/config.yaml +0 -0
  732. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/high_score/config/high_score.yaml +0 -0
  733. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/high_score/modes/high_score/config/high_score.yaml +0 -0
  734. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/high_score_reverse/config/high_score.yaml +0 -0
  735. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/high_score_reverse/modes/high_score/config/high_score.yaml +0 -0
  736. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/high_score_vars/config/high_score.yaml +0 -0
  737. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/high_score_vars/modes/high_score/config/high_score.yaml +0 -0
  738. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/i2c_servo_controller/config/config.yaml +0 -0
  739. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/info_lights/config/config.yaml +0 -0
  740. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/kickback/config/config.yaml +0 -0
  741. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light/config/light.yaml +0 -0
  742. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light/config/light_autonumber.yaml +0 -0
  743. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light/config/light_default_color_correction.yaml +0 -0
  744. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light/config/lights_on_drivers.yaml +0 -0
  745. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light/config/matrix_lights.yaml +0 -0
  746. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/config/light_player.yaml +0 -0
  747. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/config/light_player_named_colors.yaml +0 -0
  748. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/modes/mode1/config/mode1.yaml +0 -0
  749. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/modes/mode2/config/mode2.yaml +0 -0
  750. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/shows/show_ext1.yaml +0 -0
  751. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/shows/show_ext2.yaml +0 -0
  752. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_player/shows/show_ext3.yaml +0 -0
  753. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_segment_displays/config/config.yaml +0 -0
  754. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/light_segment_displays/config/config_dots.yaml +0 -0
  755. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/lisy/config/config.yaml +0 -0
  756. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/lisy/config/config_modern.yaml +0 -0
  757. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/lisy/config/config_system11.yaml +0 -0
  758. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/logic_blocks/config/config.yaml +0 -0
  759. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/logic_blocks/modes/mode1/config/mode1.yaml +0 -0
  760. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/logic_blocks/modes/mode2/config/mode2.yaml +0 -0
  761. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/logic_blocks/modes/mode3/config/mode3.yaml +0 -0
  762. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/logic_blocks/modes/mode4/config/mode4.yaml +0 -0
  763. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/machine_vars/config/config.yaml +0 -0
  764. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/magnet/config/config.yaml +0 -0
  765. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/match_mode/config/config.yaml +0 -0
  766. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/match_mode/config/config_highscore.yaml +0 -0
  767. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/match_mode/modes/match/config/match.yaml +0 -0
  768. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mma8451/config/config.yaml +0 -0
  769. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_broken_mode_config.yaml +0 -0
  770. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_empty_modes_section.yaml +0 -0
  771. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_loading_invalid_modes.yaml +0 -0
  772. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_missing_mode_section.yaml +0 -0
  773. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_mode_without_config.yaml +0 -0
  774. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_modes.yaml +0 -0
  775. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/config/test_modes_in_game.yaml +0 -0
  776. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/broken_mode/config/broken_mode.yaml +0 -0
  777. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/broken_mode2/config/broken_mode2.yaml +0 -0
  778. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode1/config/mode1.yaml +0 -0
  779. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode1/config/test.yaml +0 -0
  780. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode2/config/mode2.yaml +0 -0
  781. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode3/code/mode3.py +0 -0
  782. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode3/config/mode3.yaml +0 -0
  783. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode4/config/mode4.yaml +0 -0
  784. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/mode5/config/mode5.yaml +0 -0
  785. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/mode5/config/test.yaml +0 -0
  786. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/mode5/mode8/config/mode8.yaml +0 -0
  787. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/mode5/mode8/config/test.yaml +0 -0
  788. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/sub_mode/mode6/config/mode6.yaml +0 -0
  789. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/sub_mode/mode6/config/test.yaml +0 -0
  790. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/sub_mode/mode7/config/mode7.yaml +0 -0
  791. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_in_sub_folder/sub_mode/mode7/config/test.yaml +0 -0
  792. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_restart_on_next_ball/config/mode_restart_on_next_ball.yaml +0 -0
  793. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mode_tests/modes/mode_without_config/config/README +0 -0
  794. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/motor/config/drop_target.yaml +0 -0
  795. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/motor/config/ghostbusters.yaml +0 -0
  796. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/motor/config/multiposition_motor.yaml +0 -0
  797. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/motor/config/multiposition_motor_home_in_the_middle.yaml +0 -0
  798. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/motor/config/multiposition_motor_start_on_end_switch.yaml +0 -0
  799. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mpftestcase/config/test_mpftestcase.yaml +0 -0
  800. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball/config/config.yaml +0 -0
  801. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball/modes/mode1/config/mode1.yaml +0 -0
  802. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball/modes/mode2/config/mode2.yaml +0 -0
  803. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball/modes/mode3/config/mode3.yaml +0 -0
  804. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball/modes/mode4/config/mode4.yaml +0 -0
  805. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball/modes/mode5/config/mode5.yaml +0 -0
  806. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/config.yaml +0 -0
  807. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testDefault.yaml +0 -0
  808. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testMinVirtualPhysical.yaml +0 -0
  809. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testNoVirtual.yaml +0 -0
  810. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testPhysicalOnly.yaml +0 -0
  811. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testPhysicalOnlyNoStealing.yaml +0 -0
  812. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testSourceDevices.yaml +0 -0
  813. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/config/testVirtualOnly.yaml +0 -0
  814. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/blocking/config/blocking.yaml +0 -0
  815. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/default/config/default.yaml +0 -0
  816. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/min_virtual_physical/config/min_virtual_physical.yaml +0 -0
  817. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/no_virtual/config/no_virtual.yaml +0 -0
  818. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/physical_only/config/physical_only.yaml +0 -0
  819. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/physical_only_no_stealing/config/physical_only_no_stealing.yaml +0 -0
  820. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/source_devices/config/source_devices.yaml +0 -0
  821. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/multiball_locks/modes/virtual_only/config/virtual_only.yaml +0 -0
  822. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/mypinballs/config/config.yaml +0 -0
  823. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/null/config/null.yaml +0 -0
  824. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/openpixel/config/config.yaml +0 -0
  825. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/openpixel/config/fadecandy.yaml +0 -0
  826. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/opp/config/config.yaml +0 -0
  827. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/opp/config/config2.yaml +0 -0
  828. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/opp/config/config_stm32.yaml +0 -0
  829. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/osc/config/config.yaml +0 -0
  830. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/p3_roc/config/config.yaml +0 -0
  831. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/p_roc/config/config.yaml +0 -0
  832. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/p_roc/config/snux.yaml +0 -0
  833. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/p_roc/config/wpc.yaml +0 -0
  834. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/pkone/config/config.yaml +0 -0
  835. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/platform/config/test_platform.yaml +0 -0
  836. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/platform/config/test_virtual.yaml +0 -0
  837. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/player_vars/config/player_vars.yaml +0 -0
  838. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/playfield/config/test_playfield.yaml +0 -0
  839. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/playfield_transfer/config/config.yaml +0 -0
  840. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/plugin_config_player/config/plugin_config_player.yaml +0 -0
  841. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/plugin_config_player/modes/mode1/config/mode1.yaml +0 -0
  842. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/plugin_config_player/modes/mode1/shows/show2.yaml +0 -0
  843. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/plugin_config_player/modes/mode1/shows/show3.yaml +0 -0
  844. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/plugin_config_player/shows/show1.yaml +0 -0
  845. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/pololu_maestro/config/pololu_maestro.yaml +0 -0
  846. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/pololu_tic/config/config.yaml +0 -0
  847. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/randomizer/config/randomizer.yaml +0 -0
  848. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/rpi/config/config.yaml +0 -0
  849. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/rpi_dmd/config/config.yaml +0 -0
  850. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/score_queue/config/config.yaml +0 -0
  851. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/score_queue/modes/mode1/config/mode1.yaml +0 -0
  852. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/score_reels/config/config.yaml +0 -0
  853. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/segment_display/config/config.yaml +0 -0
  854. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/segment_display/config/config_colors.yaml +0 -0
  855. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/segment_display/config/config_flashing.yaml +0 -0
  856. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/segment_display/config/config_transition.yaml +0 -0
  857. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/segment_display/config/game.yaml +0 -0
  858. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/segment_display/modes/mode1/config/mode1.yaml +0 -0
  859. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/sequence_shot/config/config.yaml +0 -0
  860. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/sequence_shot/modes/mode1/config/mode1.yaml +0 -0
  861. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/servo/config/config.yaml +0 -0
  862. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/config/test_shot_group_rotate_with_exclude.yaml +0 -0
  863. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/config/test_shot_groups.yaml +0 -0
  864. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/config/test_shots.yaml +0 -0
  865. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/base/config/base.yaml +0 -0
  866. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/base2/config/base2.yaml +0 -0
  867. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/base3/config/base3.yaml +0 -0
  868. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/mode1/config/mode1.yaml +0 -0
  869. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/mode2/config/mode2.yaml +0 -0
  870. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/mode3/config/mode3.yaml +0 -0
  871. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shots/modes/rotate_with_exclude/config/rotate_with_exclude.yaml +0 -0
  872. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/config/test_show_player_queue.yaml +0 -0
  873. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/config/test_show_pools.yaml +0 -0
  874. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/config/test_shows.yaml +0 -0
  875. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/config/test_sync_ms.yaml +0 -0
  876. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/modes/mode1/config/mode1.yaml +0 -0
  877. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/modes/mode2/config/mode2.yaml +0 -0
  878. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/modes/mode3/config/mode3.yaml +0 -0
  879. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/modes/mode4/config/mode4.yaml +0 -0
  880. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/8linesweep.yaml +0 -0
  881. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/myparentshow.yaml +0 -0
  882. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/on_demand/mychildshow.yaml +0 -0
  883. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/test_show1.yaml +0 -0
  884. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/test_show2.yaml +0 -0
  885. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/test_show3.yaml +0 -0
  886. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/test_show_key_token.yaml +0 -0
  887. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/shows/shows/test_variable_show.yaml +0 -0
  888. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smart_matrix/config/config.yaml +0 -0
  889. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smart_matrix/config/old_cookie.yaml +0 -0
  890. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smart_virtual_platform/config/test_coil_fired_plunger.yaml +0 -0
  891. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smart_virtual_platform/config/test_entrance_switch.yaml +0 -0
  892. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smart_virtual_platform/config/test_smart_virtual.yaml +0 -0
  893. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smart_virtual_platform/config/test_smart_virtual_initial.yaml +0 -0
  894. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/smbus2/config/config.yaml +0 -0
  895. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/snux/config/config.yaml +0 -0
  896. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/spi_bit_bang/config/config.yaml +0 -0
  897. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/spike/config/config.yaml +0 -0
  898. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/spinners/config/test_spinners.yaml +0 -0
  899. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/state_machine/config/config.yaml +0 -0
  900. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/state_machine/modes/game_mode/config/game_mode.yaml +0 -0
  901. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/state_machine/modes/non_game_mode/config/non_game_mode.yaml +0 -0
  902. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/step_stick/config/config.yaml +0 -0
  903. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/stepper/config/config.yaml +0 -0
  904. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/switch_controller/config/config.yaml +0 -0
  905. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/switch_player/config/config.yaml +0 -0
  906. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt/config/config.yaml +0 -0
  907. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt/config/config_mechanical_eject.yaml +0 -0
  908. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt/config/config_system_11_trough.yaml +0 -0
  909. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt/config/settings.yaml +0 -0
  910. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt/modes/base/config/base.yaml +0 -0
  911. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt/modes/tilt/config/tilt.yaml +0 -0
  912. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/tilt_defaults/config/config.yaml +0 -0
  913. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/timed_switches/config/timed_switches.yaml +0 -0
  914. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/timed_switches/modes/mode1/config/mode1.yaml +0 -0
  915. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/timer/config/test_timer.yaml +0 -0
  916. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/timer/modes/mode_with_timers/config/mode_with_timers.yaml +0 -0
  917. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/timer/modes/mode_with_timers2/config/mode_with_timers2.yaml +0 -0
  918. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/trinamics_steprocker/config/trinamics_steprocker.yaml +0 -0
  919. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/variable_player/config/config.yaml +0 -0
  920. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/variable_player/modes/mode1/config/mode1.yaml +0 -0
  921. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/variable_player/modes/mode2/config/mode2.yaml +0 -0
  922. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/variable_player/modes/mode3/config/mode3.yaml +0 -0
  923. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/variable_player/modes/mode_for_logic_block/config/mode_for_logic_block.yaml +0 -0
  924. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/variable_player/modes/non_game_mode/config/non_game_mode.yaml +0 -0
  925. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/virtual_pinball/config/config.yaml +0 -0
  926. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/virtual_segment_display_connector/config/config.yaml +0 -0
  927. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/vpe/config/config.yaml +0 -0
  928. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/machine_files/vpx/config/config.yaml +0 -0
  929. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/platforms/pinproc.py +0 -0
  930. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/regression_tests/light_player_subscriptions.yaml +0 -0
  931. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/regression_tests/shot_same_show_differnent_token.yaml +0 -0
  932. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/regression_tests/shots_with_token_in_profile_and_shot.yaml +0 -0
  933. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/regression_tests/show_player_subscriptions.yaml +0 -0
  934. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Accelerometer.py +0 -0
  935. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Achievement.py +0 -0
  936. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_AssetManager.py +0 -0
  937. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Attract.py +0 -0
  938. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Auditor.py +0 -0
  939. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Autofire.py +0 -0
  940. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallController.py +0 -0
  941. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDevice.py +0 -0
  942. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceAutoManualPlunger.py +0 -0
  943. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceEnableCoil.py +0 -0
  944. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceEventConfirmation.py +0 -0
  945. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceEventEjector.py +0 -0
  946. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceHoldCoil.py +0 -0
  947. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceJamSwitch.py +0 -0
  948. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceManualWithTarget.py +0 -0
  949. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceModernTroughPlungerSetup.py +0 -0
  950. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceNoPlungerSwitch.py +0 -0
  951. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDevicePlayfieldLock.py +0 -0
  952. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDevicePulseEject.py +0 -0
  953. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceRouting.py +0 -0
  954. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceSingle.py +0 -0
  955. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceSwitchConfirmation.py +0 -0
  956. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDeviceTriggerEvents.py +0 -0
  957. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallDevice_SmartVirtual.py +0 -0
  958. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallHold.py +0 -0
  959. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallRouting.py +0 -0
  960. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallSave.py +0 -0
  961. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BallSearch.py +0 -0
  962. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BcpInterface.py +0 -0
  963. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BcpMc.py +0 -0
  964. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BcpServer.py +0 -0
  965. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BcpSocketClient.py +0 -0
  966. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Blinkenlight.py +0 -0
  967. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_BlockingEvents.py +0 -0
  968. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Bonus.py +0 -0
  969. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_CarouselMode.py +0 -0
  970. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Clock.py +0 -0
  971. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_CoilPlayer.py +0 -0
  972. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ComboSwitches.py +0 -0
  973. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_CommandCreateConfig.py +0 -0
  974. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Commands.py +0 -0
  975. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Config.py +0 -0
  976. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ConfigErrors.py +0 -0
  977. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ConfigLoader.py +0 -0
  978. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ConfigMissingVersion.py +0 -0
  979. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ConfigOldVersion.py +0 -0
  980. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ConfigPlayers.py +0 -0
  981. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ConfigProcessor.py +0 -0
  982. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_CreditsMode.py +0 -0
  983. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DataManager.py +0 -0
  984. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Delay.py +0 -0
  985. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DeviceCollection.py +0 -0
  986. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DeviceDriver.py +0 -0
  987. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DeviceFlasher.py +0 -0
  988. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DeviceGI.py +0 -0
  989. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DeviceLight.py +0 -0
  990. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DeviceMatrixLight.py +0 -0
  991. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DigitalOutput.py +0 -0
  992. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DigitalScoreReels.py +0 -0
  993. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Diverter.py +0 -0
  994. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Dmd.py +0 -0
  995. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DropTargets.py +0 -0
  996. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_DualWoundCoil.py +0 -0
  997. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_EventPlayer.py +0 -0
  998. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ExtraBall.py +0 -0
  999. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fadecandy.py +0 -0
  1000. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast.py +0 -0
  1001. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Audio.py +0 -0
  1002. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Dmd.py +0 -0
  1003. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Exp.py +0 -0
  1004. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Nano.py +0 -0
  1005. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Neuron.py +0 -0
  1006. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Retro.py +0 -0
  1007. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Fast_Seg.py +0 -0
  1008. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Flippers.py +0 -0
  1009. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_FlippersHoldNoEos.py +0 -0
  1010. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_FlippersSoftwareEosRepulse.py +0 -0
  1011. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Game.py +0 -0
  1012. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_GottliebTrough.py +0 -0
  1013. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Head2Head.py +0 -0
  1014. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_HighScoreMode.py +0 -0
  1015. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_HighScoreModeWithVars.py +0 -0
  1016. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_I2cServoController.py +0 -0
  1017. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_InfoLights.py +0 -0
  1018. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Kickback.py +0 -0
  1019. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_LightPlayer.py +0 -0
  1020. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_LightPositions.py +0 -0
  1021. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_LightSegmentDisplays.py +0 -0
  1022. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Lisy.py +0 -0
  1023. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_LogicBlocks.py +0 -0
  1024. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MMA8451.py +0 -0
  1025. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MachineVariables.py +0 -0
  1026. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Magnet.py +0 -0
  1027. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MatchMode.py +0 -0
  1028. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Modes.py +0 -0
  1029. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ModesConfigValidation.py +0 -0
  1030. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Motors.py +0 -0
  1031. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MpfTestCase.py +0 -0
  1032. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MultiBall.py +0 -0
  1033. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MultiballLock.py +0 -0
  1034. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_MyPinballs.py +0 -0
  1035. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_OPP.py +0 -0
  1036. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Openpixel.py +0 -0
  1037. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Osc.py +0 -0
  1038. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_P3_Roc.py +0 -0
  1039. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PKONE.py +0 -0
  1040. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_P_Roc.py +0 -0
  1041. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PlaceholderManager.py +0 -0
  1042. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Platform.py +0 -0
  1043. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PlayerVars.py +0 -0
  1044. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Playfield.py +0 -0
  1045. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PlayfieldTransfer.py +0 -0
  1046. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PluginConfigPlayer.py +0 -0
  1047. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PololuMaestro.py +0 -0
  1048. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_PololuTic.py +0 -0
  1049. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_QueueEventPlayer.py +0 -0
  1050. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_RGBColor.py +0 -0
  1051. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Randomizer.py +0 -0
  1052. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Rpi.py +0 -0
  1053. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_RpiDmd.py +0 -0
  1054. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ScoreQueue.py +0 -0
  1055. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ScoreReels.py +0 -0
  1056. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SegmentDisplay.py +0 -0
  1057. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SegmentMappings.py +0 -0
  1058. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SequenceShot.py +0 -0
  1059. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ServiceMode.py +0 -0
  1060. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Servo.py +0 -0
  1061. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ShotGroups.py +0 -0
  1062. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Shots.py +0 -0
  1063. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_ShowPools.py +0 -0
  1064. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Shows.py +0 -0
  1065. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SmartMatrix.py +0 -0
  1066. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SmartVirtualPlatform.py +0 -0
  1067. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Smbus2.py +0 -0
  1068. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Snux.py +0 -0
  1069. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SpiBitBang.py +0 -0
  1070. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Spike.py +0 -0
  1071. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Spinners.py +0 -0
  1072. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_StateMachine.py +0 -0
  1073. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_StepStick.py +0 -0
  1074. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Stepper.py +0 -0
  1075. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SwitchController.py +0 -0
  1076. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SwitchPlayer.py +0 -0
  1077. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_SwitchPositions.py +0 -0
  1078. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_System11Trough.py +0 -0
  1079. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Tilt.py +0 -0
  1080. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_TimedSwitch.py +0 -0
  1081. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Timer.py +0 -0
  1082. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_TooLongExitCountDelay.py +0 -0
  1083. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_TrinamicsStepRocker.py +0 -0
  1084. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_TroughEntranceSwitch.py +0 -0
  1085. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_VPX.py +0 -0
  1086. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_VariablePlayer.py +0 -0
  1087. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_Virtual.py +0 -0
  1088. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_VirtualPinball.py +0 -0
  1089. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_VirtualSegmentDisplayConnector.py +0 -0
  1090. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/test_VisualPinballEngine.py +0 -0
  1091. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/tests/vpe_simulator.py +0 -0
  1092. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/wire/base.py +0 -0
  1093. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf/wire/fast.py +0 -0
  1094. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf-logo-200.png +0 -0
  1095. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.egg-info/dependency_links.txt +0 -0
  1096. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.egg-info/entry_points.txt +0 -0
  1097. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.egg-info/requires.txt +0 -0
  1098. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.egg-info/top_level.txt +0 -0
  1099. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mpf.spec +0 -0
  1100. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/mypy.ini +0 -0
  1101. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/pyproject.toml +0 -0
  1102. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/setup.cfg +0 -0
  1103. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/setup.py +0 -0
  1104. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/test_machine.py +0 -0
  1105. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/test_regression.py +0 -0
  1106. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/tools/afl_fuzz.py +0 -0
  1107. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/tools/afl_howto.txt +0 -0
  1108. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/tools/convert_segments.py +0 -0
  1109. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/tools/debug_run_game.py +0 -0
  1110. {mpf-0.81.0.dev2 → mpf-0.81.0.dev4}/tools/p3_switch_test.py +0 -0
@@ -96,7 +96,7 @@ jobs:
96
96
 
97
97
  - name: Upload coverage data to coveralls.io
98
98
  if: matrix.os != 'windows-latest'
99
- run: coveralls --service=github
99
+ run: coveralls --service=github-actions
100
100
  env:
101
101
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
102
102
  COVERALLS_FLAG_NAME: ${{ matrix.python-version }}-${{ matrix.os }}
@@ -111,6 +111,6 @@ jobs:
111
111
  - name: Finished
112
112
  run: |
113
113
  pip3 install --upgrade coveralls
114
- coveralls --service=github --finish
114
+ coveralls --service=github-actions --finish
115
115
  env:
116
116
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mpf
3
- Version: 0.81.0.dev2
3
+ Version: 0.81.0.dev4
4
4
  Summary: The Mission Pinball Framework (MPF)
5
5
  Author-email: The Mission Pinball Framework Team <brian@missionpinball.org>
6
6
  License: MIT
@@ -85,7 +85,7 @@ What is Mission Pinball Framework?
85
85
  Mission Pinball Framework (MPF) is open source, cross-platform software for powering real pinball
86
86
  machines. MPF is a community-developed project released under the MIT license. It's supported by volunteers in their spare time.
87
87
 
88
- [![Coverage Status](https://coveralls.io/repos/missionpinball/mpf/badge.svg?branch=dev&service=github)](https://coveralls.io/github/missionpinball/mpf?branch=dev)
88
+ [![Coverage Status](https://coveralls.io/repos/github/missionpinball/mpf/badge.svg?branch=dev)](https://coveralls.io/github/missionpinball/mpf?branch=dev)
89
89
  [![Test Status](https://github.com/missionpinball/mpf/actions/workflows/run_tests.yml/badge.svg)](https://github.com/missionpinball/mpf/actions/workflows/run_tests.yml)
90
90
  [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1687/badge)](https://bestpractices.coreinfrastructure.org/projects/1687)
91
91
 
@@ -11,7 +11,7 @@ What is Mission Pinball Framework?
11
11
  Mission Pinball Framework (MPF) is open source, cross-platform software for powering real pinball
12
12
  machines. MPF is a community-developed project released under the MIT license. It's supported by volunteers in their spare time.
13
13
 
14
- [![Coverage Status](https://coveralls.io/repos/missionpinball/mpf/badge.svg?branch=dev&service=github)](https://coveralls.io/github/missionpinball/mpf?branch=dev)
14
+ [![Coverage Status](https://coveralls.io/repos/github/missionpinball/mpf/badge.svg?branch=dev)](https://coveralls.io/github/missionpinball/mpf?branch=dev)
15
15
  [![Test Status](https://github.com/missionpinball/mpf/actions/workflows/run_tests.yml/badge.svg)](https://github.com/missionpinball/mpf/actions/workflows/run_tests.yml)
16
16
  [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1687/badge)](https://bestpractices.coreinfrastructure.org/projects/1687)
17
17
 
@@ -6,7 +6,7 @@ http://developer.missionpinball.org/en/dev/api/self.machine.events.html?highligh
6
6
 
7
7
  The best example here is to use the communication between MPF and MPF MC.
8
8
  MPF MC can pretty much only read variables from ``self.player`` from MPF (``self.mc.player`` in MC), however you simply don't want
9
- to create extra variables in here just to make it readable readable in MC. This would result in having to much unnecessary data.
9
+ to create extra variables in here just to make it readable readable in MC. This would result in having to much unnecessary data.
10
10
  Instead you can use ``self.machine.events.post`` just like you would write a function in python.
11
11
 
12
12
  For example we set this up in a mode code in MPF:
@@ -21,7 +21,7 @@ It should always start with the ``event`` that you want to post. After this you
21
21
  In MC code we create a function that will be activated once the event is posted. Make sure you have added a event_handler first or else it won't work.
22
22
 
23
23
  .. code-block:: python
24
-
24
+
25
25
  def awesome_event(self, data1, data2, **kwargs):
26
26
  print("i really love the game {} I always end up {}".format(data1, data2)
27
27
 
@@ -47,8 +47,8 @@ In order to build the developer documentation, you will also need:
47
47
  * ``sphinxcontrib.napoleon``
48
48
  * ``gitpython``
49
49
 
50
- Building the developer documentation requires a symbolic link from ``mpf\docs\examples`` to a checkout of the ``mpf-examples`` repository.
51
- This is normally automatically created when the documentation is built, but under Windows 10 and higher, symlinks can only be created by
52
- administrators, so the process will fail. If you would prefer not to run the build as an administrator, you can create the link manually
50
+ Building the developer documentation requires a symbolic link from ``mpf\docs\examples`` to a checkout of the ``mpf-examples`` repository.
51
+ This is normally automatically created when the documentation is built, but under Windows 10 and higher, symlinks can only be created by
52
+ administrators, so the process will fail. If you would prefer not to run the build as an administrator, you can create the link manually
53
53
  by running ``mklink /d examples <examples directory>`` at the command line from inside the ``docs`` directory.
54
54
 
@@ -14,8 +14,8 @@ test that's run), and then when it's done, you should see a message showing
14
14
  how many tests were run and that they were successful. The whole process should
15
15
  take less a minute or so.
16
16
 
17
- Note that ``mpf-mc`` must be installed as well as ``mpf`` for all tests to run.
18
- If it isn't, some tests will fail with the error "start took more than 20s", because
17
+ Note that ``mpf-mc`` must be installed as well as ``mpf`` for all tests to run.
18
+ If it isn't, some tests will fail with the error "start took more than 20s", because
19
19
  MPF waited endlessly for the nonexistent media controller to be available.
20
20
 
21
21
  (If you see any messages about some tests taking more than 0.5s, that's ok.)
@@ -10,7 +10,7 @@ PyPI.
10
10
 
11
11
  """
12
12
 
13
- __version__ = '0.81.0.dev2'
13
+ __version__ = '0.81.0.dev4'
14
14
  '''The full version of MPF.'''
15
15
 
16
16
  __short_version__ = '0.81'
@@ -2,15 +2,15 @@
2
2
  import re
3
3
  from collections import namedtuple
4
4
 
5
- from typing import List, Dict, Any, Optional
5
+ from typing import List, Dict, Any, Optional, TYPE_CHECKING
6
6
 
7
7
  from mpf.core.assets import AssetPool
8
8
  from mpf.core.config_validator import RuntimeToken
9
9
  from mpf.core.utility_functions import Util
10
10
  from mpf.exceptions.config_file_error import ConfigFileError
11
11
 
12
- MYPY = False
13
- if MYPY: # pragma: no cover
12
+
13
+ if TYPE_CHECKING:
14
14
  from typing import NoReturn # pylint: disable-msg=cyclic-import,unused-import
15
15
 
16
16
  __api__ = ['Show', 'RunningShow', 'ShowPool']
@@ -169,6 +169,8 @@ class Command:
169
169
  console_log.setFormatter(logging.Formatter(
170
170
  '%(asctime)s.%(msecs)03d : %(levelname)s [%(name)s] %(message)s', "%H:%M:%S"))
171
171
 
172
+ console_log.addFilter(ConsoleCustomLevelFilter())
173
+
172
174
  # initialize async handler for console
173
175
  console_log_queue = Queue()
174
176
  console_queue_handler = QueueHandler(console_log_queue)
@@ -183,6 +185,7 @@ class Command:
183
185
  else:
184
186
  formatter = logging.Formatter('%(asctime)s : %(levelname)s : %(name)s : %(message)s')
185
187
  file_log.setFormatter(formatter)
188
+ file_log.addFilter(FileCustomLevelFilter())
186
189
 
187
190
  # initialize async handler for file log
188
191
  file_log_queue = Queue()
@@ -237,6 +240,8 @@ class Command:
237
240
  def sigint_handler(self, signum=None, frame=None):
238
241
  """Handle SIGINT."""
239
242
  del signum, frame
243
+ if self.machine:
244
+ self.machine.error_log("SIGINT received")
240
245
  self._sigint_count += 1
241
246
  if self._sigint_count > 1:
242
247
  self.exit("Received second SIGINT. Will exit ungracefully!")
@@ -273,3 +278,25 @@ class Command:
273
278
  input('Press ENTER to continue...') # nosec
274
279
 
275
280
  sys.exit()
281
+
282
+
283
+ class ConsoleCustomLevelFilter(logging.Filter):
284
+
285
+ """Filters out custom levels meant strictly for files."""
286
+
287
+ def filter(self, record):
288
+ """Filters: 11 = DEBUG (File Only), 21 = INFO (File Only)."""
289
+ if record.levelno in (11, 21):
290
+ return False
291
+ return True
292
+
293
+
294
+ class FileCustomLevelFilter(logging.Filter):
295
+
296
+ """Filters out custom levels meant strictly for console."""
297
+
298
+ def filter(self, record):
299
+ """Filters: 12 = DEBUG (Console Only), 22 = INFO (Console Only)."""
300
+ if record.levelno in (12, 22):
301
+ return False
302
+ return True
@@ -1,10 +1,10 @@
1
1
  """Config player for sounds on an external sound card."""
2
- from typing import List
2
+ from typing import List, TYPE_CHECKING
3
3
 
4
4
  from mpf.config_players.device_config_player import DeviceConfigPlayer
5
5
 
6
- MYPY = False
7
- if MYPY: # pragma: no cover
6
+
7
+ if TYPE_CHECKING:
8
8
  from mpf.devices.hardware_sound_system import HardwareSoundSystem # pylint: disable-msg=cyclic-import,unused-import; # noqa
9
9
 
10
10
 
@@ -1,12 +1,14 @@
1
1
  """Config player for text on segment displays."""
2
+ from typing import TYPE_CHECKING
3
+
2
4
  from mpf.core.delays import DelayManager
3
5
 
4
6
  from mpf.config_players.device_config_player import DeviceConfigPlayer
5
7
  from mpf.platforms.interfaces.segment_display_platform_interface import FlashingType
6
8
  from mpf.devices.segment_display.transition_manager import TransitionManager
7
9
 
8
- MYPY = False
9
- if MYPY: # pragma: no cover
10
+
11
+ if TYPE_CHECKING:
10
12
  from typing import Dict # pylint: disable-msg=cyclic-import,unused-import
11
13
  from mpf.devices.segment_display.segment_display import \
12
14
  SegmentDisplay # pylint: disable-msg=cyclic-import,unused-import
@@ -83,8 +83,8 @@ auditor:
83
83
  audit: list|str|None
84
84
  autosave: single|bool|true
85
85
  autosave_events: single|bool|true
86
- events: list|event_handler|None
87
- player: list|str|None
86
+ events: set|event_handler|None
87
+ player: set|str|None
88
88
  audit_shots: single|bool|true
89
89
  missing_switch_min_games: single|int|10
90
90
  num_player_top_records: single|int|1
@@ -311,6 +311,18 @@ coils:
311
311
  custom_code:
312
312
  __valid_in__: machine
313
313
  __type__: list
314
+ dc_motors:
315
+ __valid_in__: machine
316
+ __type__: device
317
+ default_power: single|float|0.0
318
+ number: single|str|
319
+ control_events: dict|str:subconfig(dc_motors_pulse_settings)|None
320
+ platform: single|str|None
321
+ platform_settings: single|dict|None
322
+ dc_motors_pulse_settings:
323
+ action: single|enum(pulse,reverse_pulse,stop)|pulse
324
+ power: single|float|None
325
+ duration: single|template_secs|None
314
326
  digital_outputs:
315
327
  __valid_in__: machine
316
328
  __type__: device
@@ -544,7 +556,7 @@ fast:
544
556
  __type__: config
545
557
  net: single|subconfig(fast_net)|None
546
558
  exp: single|subconfig(fast_exp)|None
547
- exp_int: single|subconfig(fast_exp)|None
559
+ exp_int: single|subconfig(fast_exp)|None
548
560
  aud: single|subconfig(fast_aud)|None
549
561
  seg: single|subconfig(fast_seg)|None
550
562
  dmd: single|subconfig(fast_dmd)|None
@@ -561,7 +573,7 @@ fast_net:
561
573
  console_log: single|enum(none,basic,full)|none
562
574
  file_log: single|enum(none,basic,full)|basic
563
575
  controller: single|enum(neuron,nano,sys11,wpc89,wpc95)|
564
- watchdog: single|ms|1000
576
+ watchdog: single|ms|500
565
577
  default_quick_debounce_open: single|ms|2
566
578
  default_quick_debounce_close: single|ms|2
567
579
  default_normal_debounce_open: single|ms|4
@@ -569,6 +581,8 @@ fast_net:
569
581
  mute_unconfigured_switches: single|bool|false
570
582
  gi_hz: single|int|30
571
583
  lamp_hz: single|int|30
584
+ soft_power_hold_ms: single|ms|2500
585
+ soft_power_powerdown_delay: single|ms|4000
572
586
  fast_io_loop:
573
587
  model: single|str| # FP-I/O-0804, etc.
574
588
  order: single|enum(1,2,3,4,5,6,7,8,9)|
@@ -736,6 +750,7 @@ hardware:
736
750
  i2c: list|str|default
737
751
  stepper_controllers: list|str|default
738
752
  shaker_controllers: list|str|default
753
+ motor_controllers: list|str|default
739
754
  hardware_sound_system: list|str|default
740
755
  hardware_sound_systems:
741
756
  __valid_in__: machine
@@ -834,7 +849,7 @@ neoseg_displays:
834
849
  number_template: single|str|None
835
850
  start_x: single|float|None
836
851
  start_y: single|float|None
837
- size: single|enum(2digit,8digit)|8digit
852
+ size: single|enum(2digit,8digit,2digit-rg-swapped,8digit-rg-swapped)|8digit
838
853
  light_template: single|subconfig(lights,device)|
839
854
  lights:
840
855
  __valid_in__: machine
@@ -929,6 +944,7 @@ machine:
929
944
  __type__: config
930
945
  balls_installed: single|int|1
931
946
  min_balls: single|int|1
947
+ soft_shutdown_exit_command: single|str|None
932
948
  machine_vars:
933
949
  __valid_in__: machine
934
950
  __type__: config_dict
@@ -1013,6 +1029,10 @@ mpf:
1013
1029
  paths: ignore
1014
1030
  report_crashes: single|enum(ask,never,always)|never
1015
1031
  rgbw_white_behavior: single|enum(white_only,min_rgb,duck_rgb)|duck_rgb
1032
+ data_manager:
1033
+ __valid_in__: machine
1034
+ __type__: config
1035
+ use_fsync: single|bool|None
1016
1036
  multiballs:
1017
1037
  __valid_in__: machine, mode
1018
1038
  __type__: device
@@ -1414,7 +1434,7 @@ settings:
1414
1434
  label: single|str|
1415
1435
  sort: single|int|
1416
1436
  values: dict|str:str|
1417
- key_type: single|enum(str,float,int)|str
1437
+ key_type: single|enum(str,float,int,bool)|str
1418
1438
  default: single|str|
1419
1439
  machine_var: single|str|None
1420
1440
  settingType: single|str|standard
@@ -1831,15 +1851,6 @@ trinamics_steprocker:
1831
1851
  __valid_in__: machine
1832
1852
  __type__: config
1833
1853
  port: single|str|
1834
- twitch_client:
1835
- __valid_in__: machine
1836
- __type__: config
1837
- user: single|str|None
1838
- password: single|str|None
1839
- channel: single|str|None
1840
- user_var: single|str|None
1841
- password_var: single|str|None
1842
- channel_var: single|str|None
1843
1854
  variable_player:
1844
1855
  __valid_in__: machine, mode
1845
1856
  __type__: config_player
@@ -1,13 +1,13 @@
1
1
  """Base class for asyncio modes."""
2
- from typing import Optional
2
+ from typing import Optional, TYPE_CHECKING
3
3
 
4
4
  import abc
5
5
  import asyncio
6
6
 
7
7
  from mpf.core.mode import Mode
8
8
 
9
- MYPY = False
10
- if MYPY: # pragma: no cover
9
+
10
+ if TYPE_CHECKING:
11
11
  from mpf.core.machine import MachineController # pylint: disable-msg=cyclic-import,unused-import
12
12
 
13
13
 
@@ -1,14 +1,14 @@
1
1
  """Implements the ball search procedure."""
2
2
  from collections import namedtuple
3
3
 
4
- from typing import List
4
+ from typing import List, TYPE_CHECKING
5
5
 
6
6
  from mpf.core.delays import DelayManager
7
7
  from mpf.core.machine import MachineController
8
8
  from mpf.core.mpf_controller import MpfController
9
9
 
10
- MYPY = False
11
- if MYPY: # pragma: no cover
10
+
11
+ if TYPE_CHECKING:
12
12
  from mpf.devices.playfield import Playfield # pylint: disable-msg=cyclic-import,unused-import
13
13
 
14
14
  BallSearchCallback = namedtuple("BallSearchCallback", ["priority", "callback", "name", "restore_callback"])
@@ -1,7 +1,7 @@
1
1
  """BCP module."""
2
2
  import asyncio
3
3
  from functools import partial
4
- from typing import List
4
+ from typing import List, TYPE_CHECKING
5
5
 
6
6
  from mpf.core.events import QueuedEvent
7
7
  from mpf.core.mpf_controller import MpfController
@@ -12,8 +12,8 @@ from mpf.core.utility_functions import Util
12
12
  from mpf.core.bcp.bcp_interface import BcpInterface
13
13
  from mpf.core.bcp.bcp_transport import BcpTransportManager
14
14
 
15
- MYPY = False
16
- if MYPY: # pragma: no cover
15
+
16
+ if TYPE_CHECKING:
17
17
  from mpf.core.machine import MachineController # pylint: disable-msg=cyclic-import,unused-import
18
18
 
19
19
 
@@ -1,13 +1,13 @@
1
1
  """Classes which manage BCP transports."""
2
2
  from collections import defaultdict
3
3
 
4
- from typing import Union
4
+ from typing import Union, TYPE_CHECKING
5
5
 
6
6
  from mpf.core.bcp.bcp_client import BaseBcpClient
7
7
  from mpf.core.utility_functions import Util
8
8
 
9
- MYPY = False # noqa
10
- if MYPY:
9
+ # noqa
10
+ if TYPE_CHECKING:
11
11
  from mpf.core.machine import MachineController # pylint: disable-msg=cyclic-import,unused-import
12
12
 
13
13
 
@@ -3,7 +3,7 @@ import abc
3
3
  import asyncio
4
4
  import re
5
5
  from functools import partial
6
- from typing import List
6
+ from typing import List, TYPE_CHECKING
7
7
 
8
8
  from mpf.core.machine import MachineController
9
9
  from mpf.core.mode import Mode
@@ -11,8 +11,8 @@ from mpf.core.logging import LogMixin
11
11
  from mpf.exceptions.config_file_error import ConfigFileError
12
12
  from mpf.core.placeholder_manager import ConditionalEvent
13
13
 
14
- MYPY = False
15
- if MYPY: # pragma: no cover
14
+
15
+ if TYPE_CHECKING:
16
16
  from mpf.core.placeholder_manager import BoolTemplate # pylint: disable-msg=cyclic-import,unused-import
17
17
  from typing import Dict # pylint: disable-msg=cyclic-import,unused-import
18
18
 
@@ -1,11 +1,13 @@
1
1
  """Parse config_spec."""
2
+ from typing import TYPE_CHECKING
3
+
2
4
  from pkg_resources import iter_entry_points
3
5
 
4
6
  from mpf.core.utility_functions import Util
5
7
  from mpf.file_interfaces.yaml_interface import YamlInterface
6
8
 
7
- MYPY = False
8
- if MYPY: # pragma: no cover
9
+
10
+ if TYPE_CHECKING:
9
11
  from mpf.core.device import Device # pylint: disable-msg=cyclic-import,unused-import
10
12
 
11
13
 
@@ -6,8 +6,7 @@ import re
6
6
  from collections import namedtuple
7
7
  from copy import deepcopy
8
8
 
9
- from typing import Any
10
- from typing import Dict
9
+ from typing import Any, Dict, TYPE_CHECKING
11
10
 
12
11
  from mpf.core.config_spec_loader import ConfigSpecLoader
13
12
  from mpf.core.rgb_color import NAMED_RGB_COLORS, RGBColor
@@ -15,8 +14,8 @@ from mpf.exceptions.config_file_error import ConfigFileError
15
14
  from mpf.file_interfaces.yaml_interface import YamlInterface
16
15
  from mpf.core.utility_functions import Util
17
16
 
18
- MYPY = False
19
- if MYPY: # pragma: no cover
17
+
18
+ if TYPE_CHECKING:
20
19
  from mpf.core.machine import MachineController # pylint: disable-msg=cyclic-import,unused-import
21
20
 
22
21
 
@@ -3,6 +3,7 @@
3
3
  import copy
4
4
  import os
5
5
  import errno
6
+ import sys
6
7
  import threading
7
8
  import time
8
9
  import _thread
@@ -17,10 +18,10 @@ class DataManager(MpfController):
17
18
 
18
19
  config_name = "data_manager"
19
20
 
20
- __slots__ = ["name", "min_wait_secs", "filename", "data", "_dirty"]
21
+ __slots__ = ["config", "name", "min_wait_secs", "filename", "data", "_dirty", "use_fsync"]
21
22
 
22
23
  def __init__(self, machine, name, min_wait_secs=1):
23
- """Initialize data manger.
24
+ """Initialize data manager.
24
25
 
25
26
  The DataManager is responsible for reading and writing data to/from a
26
27
  file on disk.
@@ -48,6 +49,14 @@ class DataManager(MpfController):
48
49
  else:
49
50
  raise AssertionError("Invalid path {} for {}".format(config_path, name))
50
51
 
52
+ self.config = self.machine.config_validator.validate_config(
53
+ "data_manager", self.machine.config.get('data_manager'))
54
+
55
+ maybe_use_fsync = self.config.get('use_fsync', None)
56
+ if maybe_use_fsync is None:
57
+ maybe_use_fsync = sys.platform != 'win32'
58
+ self.use_fsync = maybe_use_fsync
59
+
51
60
  self.data = dict()
52
61
  self._dirty = threading.Event()
53
62
 
@@ -116,29 +125,22 @@ class DataManager(MpfController):
116
125
 
117
126
  def _writing_thread(self): # pragma: no cover
118
127
  # prevent early writes at start-up
119
- data = None
120
128
  time.sleep(self.min_wait_secs)
121
129
  while not self.machine.thread_stopper.is_set():
122
130
  if not self._dirty.wait(1):
123
131
  continue
124
- while FileManager.is_busy:
125
- time.sleep(0.2)
126
132
  self._dirty.clear()
127
133
 
128
- data = copy.deepcopy(self.data)
129
134
  # save data
130
135
  try:
131
- FileManager.save(self.filename, data)
136
+ FileManager.save(self.filename, copy.deepcopy(self.data), self.use_fsync)
132
137
  except Exception as e: # pylint: disable=broad-exception-caught
133
138
  # If the file writer has an exception handle it here. Otherwise
134
139
  # this thread will die and all subsequent write attempts will no-op.
135
140
  self.info_log("ERROR writing file %s: %s", self.filename, e)
136
- data = None
137
141
  # prevent too many writes
138
142
  time.sleep(self.min_wait_secs)
139
143
 
140
144
  # if dirty write data one last time during shutdown
141
- if data and self._dirty.is_set():
142
- while FileManager.is_busy:
143
- time.sleep(0.2)
144
- FileManager.save(self.filename, data)
145
+ if self._dirty.is_set():
146
+ FileManager.save(self.filename, copy.deepcopy(self.data), self.use_fsync)
@@ -2,11 +2,11 @@
2
2
 
3
3
  import uuid
4
4
  from functools import partial
5
- from typing import Any, Callable, Dict, Tuple
5
+ from typing import Any, Callable, Dict, Tuple, TYPE_CHECKING
6
6
  from mpf.core.mpf_controller import MpfController
7
7
 
8
- MYPY = False
9
- if MYPY: # pragma: no cover
8
+
9
+ if TYPE_CHECKING:
10
10
  from mpf.core.machine import MachineController # pylint: disable-msg=cyclic-import,unused-import
11
11
 
12
12
  __api__ = ['DelayManager']
@@ -1,13 +1,13 @@
1
1
  """Contains the Device base class."""
2
2
  import abc
3
3
 
4
- from typing import List, Any, Optional
4
+ from typing import List, Any, Optional, TYPE_CHECKING
5
5
 
6
6
  from mpf.core.machine import MachineController
7
7
  from mpf.core.logging import LogMixin
8
8
 
9
- MYPY = False
10
- if MYPY: # pragma: no cover
9
+
10
+ if TYPE_CHECKING:
11
11
  from mpf.core.mode import Mode # pylint: disable-msg=cyclic-import,unused-import
12
12
  from mpf.core.platform import BasePlatform # pylint: disable-msg=cyclic-import,unused-import; # noqa
13
13
 
@@ -1,13 +1,13 @@
1
1
  """Contains the DeviceManager base class."""
2
2
  import asyncio
3
3
 
4
- from typing import Callable, Tuple, List, Generator, Dict
4
+ from typing import Callable, Tuple, List, Generator, Dict, TYPE_CHECKING
5
5
 
6
6
  from mpf.core.utility_functions import Util
7
7
  from mpf.core.mpf_controller import MpfController
8
8
 
9
- MYPY = False
10
- if MYPY: # pragma: no cover
9
+
10
+ if TYPE_CHECKING:
11
11
  from mpf.core.device import Device # pylint: disable-msg=cyclic-import,unused-import
12
12
 
13
13
 
@@ -172,7 +172,20 @@ class DeviceManager(MpfController):
172
172
  for device_name in config:
173
173
  futures.append(collection[device_name].device_added_system_wide())
174
174
 
175
- await asyncio.wait([asyncio.create_task(futures) for futures in futures])
175
+ fs = [asyncio.create_task(future) for future in futures]
176
+ done, pending = await asyncio.wait(fs, return_when=asyncio.FIRST_EXCEPTION)
177
+
178
+ # Check if any of the futures returned an exception and throw it
179
+ for task in done:
180
+ if task.cancelled():
181
+ continue
182
+
183
+ exc = task.exception()
184
+ if exc is not None:
185
+ for pending_task in pending:
186
+ pending_task.cancel()
187
+ await asyncio.gather(*pending, return_exceptions=True)
188
+ raise exc
176
189
 
177
190
  # pylint: disable-msg=too-many-nested-blocks
178
191
  def get_device_control_events(self, config) -> Generator[Tuple[str, Callable, int, "Device"], None, None]:
@@ -1,5 +1,5 @@
1
1
  """Implements enable and disable events for devices."""
2
- from typing import Optional
2
+ from typing import Optional, TYPE_CHECKING
3
3
 
4
4
  import abc
5
5
 
@@ -12,8 +12,8 @@ from mpf.core.events import event_handler
12
12
  from mpf.core.mode_device import ModeDevice
13
13
  from mpf.core.machine import MachineController
14
14
 
15
- MYPY = False
16
- if MYPY: # pragma: no cover
15
+
16
+ if TYPE_CHECKING:
17
17
  from mpf.core.mode import Mode # pylint: disable-msg=cyclic-import,unused-import
18
18
  from mpf.core.player import Player # pylint: disable-msg=cyclic-import,unused-import
19
19
 
@@ -7,12 +7,12 @@ import asyncio
7
7
  from functools import partial, lru_cache
8
8
  from unittest.mock import MagicMock
9
9
 
10
- from typing import Dict, Any, Tuple, Optional, Callable, List
10
+ from typing import Dict, Any, Tuple, Optional, Callable, List, TYPE_CHECKING
11
11
 
12
12
  from mpf.core.mpf_controller import MpfController
13
13
 
14
- MYPY = False
15
- if MYPY: # pragma: no cover
14
+
15
+ if TYPE_CHECKING:
16
16
  from mpf.core.machine import MachineController # pylint: disable-msg=cyclic-import,unused-import
17
17
  from mpf.core.placeholder_manager import BaseTemplate # pylint: disable-msg=cyclic-import,unused-import
18
18
  from typing import Deque # pylint: disable-msg=cyclic-import,unused-import
@@ -224,14 +224,15 @@ class EventManager(MpfController):
224
224
  'handler you passed?'.format(handler, event))
225
225
 
226
226
  sig = inspect.signature(handler)
227
- if 'kwargs' not in sig.parameters:
228
- raise AssertionError("Handler {} for event '{}' is missing **kwargs. Actual signature: {}".format(
229
- handler, event, sig))
230
-
231
- if sig.parameters['kwargs'].kind != inspect.Parameter.VAR_KEYWORD:
232
- raise AssertionError("Handler {} for event '{}' param kwargs is missing '**'. "
227
+ catchall_name = next((name for name in ('kwargs', '_kwargs') if name in sig.parameters), None)
228
+ if catchall_name is None:
229
+ raise AssertionError("Handler {} for event '{}' is missing **kwargs. "
233
230
  "Actual signature: {}".format(handler, event, sig))
234
231
 
232
+ if sig.parameters[catchall_name].kind != inspect.Parameter.VAR_KEYWORD:
233
+ raise AssertionError("Handler {} for event '{}' param {} is missing '**'. "
234
+ "Actual signature: {}".format(handler, event, catchall_name, sig))
235
+
235
236
  event, condition, additional_priority = self.get_event_and_condition_from_string(event)
236
237
  priority += additional_priority
237
238
 
@@ -457,6 +458,8 @@ class EventManager(MpfController):
457
458
  _future=future,
458
459
  _keys=keys,
459
460
  event=event_name)))
461
+
462
+ future.add_done_callback(lambda f: [self.remove_handler_by_key(k) for k in keys])
460
463
  return future
461
464
 
462
465
  def _wait_handler(self, _future: asyncio.Future, _keys: List[EventHandlerKey], **kwargs):