dsf-python 3.6.0b2__tar.gz → 3.6.0b2.post2__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 (192) hide show
  1. {dsf_python-3.6.0b2/src/dsf_python.egg-info → dsf_python-3.6.0b2.post2}/PKG-INFO +1 -1
  2. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/setup.py +1 -1
  3. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/__init__.py +2 -0
  4. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/http.py +49 -9
  5. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2/src/dsf_python.egg-info}/PKG-INFO +1 -1
  6. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/LICENSE +0 -0
  7. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/MANIFEST.in +0 -0
  8. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/README.md +0 -0
  9. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/pyproject.toml +0 -0
  10. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/setup.cfg +0 -0
  11. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/__init__.py +0 -0
  12. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/base_command.py +0 -0
  13. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/code.py +0 -0
  14. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/code_channel.py +0 -0
  15. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/code_flags.py +0 -0
  16. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/code_interception.py +0 -0
  17. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/code_parameter.py +0 -0
  18. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/code_type.py +0 -0
  19. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/condition_type.py +0 -0
  20. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/files.py +0 -0
  21. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/generic.py +0 -0
  22. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/http_endpoints.py +0 -0
  23. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/model_subscription.py +0 -0
  24. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/object_model.py +0 -0
  25. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/packages.py +0 -0
  26. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/plugins.py +0 -0
  27. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/responses.py +0 -0
  28. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/commands/user_sessions.py +0 -0
  29. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/__init__.py +0 -0
  30. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/base_command_connection.py +0 -0
  31. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/base_connection.py +0 -0
  32. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/command_connection.py +0 -0
  33. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/exceptions.py +0 -0
  34. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/init_messages/__init__.py +0 -0
  35. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/init_messages/client_init_messages.py +0 -0
  36. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/init_messages/server_init_message.py +0 -0
  37. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/intercept_connection.py +0 -0
  38. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/connections/subscribe_connection.py +0 -0
  39. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/exceptions.py +0 -0
  40. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/__init__.py +0 -0
  41. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/__init__.py +0 -0
  42. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/accelerometer.py +0 -0
  43. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/board_closed_loop.py +0 -0
  44. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/boards.py +0 -0
  45. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/direct_display/__init__.py +0 -0
  46. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/direct_display/direct_display.py +0 -0
  47. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/direct_display/direct_display_controller.py +0 -0
  48. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/direct_display/direct_display_encoder.py +0 -0
  49. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/direct_display/direct_display_screen.py +0 -0
  50. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/direct_display/direct_display_screen_st7567.py +0 -0
  51. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/driver.py +0 -0
  52. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/driver_closed_loop.py +0 -0
  53. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/inductive_sensor.py +0 -0
  54. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/boards/min_max_current.py +0 -0
  55. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/directories/__init__.py +0 -0
  56. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/directories/directories.py +0 -0
  57. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/fans/__init__.py +0 -0
  58. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/fans/fan_thermostatic_control.py +0 -0
  59. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/fans/fans.py +0 -0
  60. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/heat/__init__.py +0 -0
  61. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/heat/heat.py +0 -0
  62. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/heat/heater.py +0 -0
  63. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/heat/heater_model.py +0 -0
  64. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/heat/heater_model_pid.py +0 -0
  65. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/heat/heater_monitor.py +0 -0
  66. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/inputs/__init__.py +0 -0
  67. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/inputs/compatibility.py +0 -0
  68. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/inputs/distance_unit.py +0 -0
  69. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/inputs/input_channel.py +0 -0
  70. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/inputs/input_channel_state.py +0 -0
  71. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/inputs/inputs.py +0 -0
  72. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/__init__.py +0 -0
  73. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/build.py +0 -0
  74. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/build_object.py +0 -0
  75. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/gcode_fileinfo.py +0 -0
  76. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/job.py +0 -0
  77. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/layer.py +0 -0
  78. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/thumbnail_info.py +0 -0
  79. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/job/times_left.py +0 -0
  80. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/led_strips/__init__.py +0 -0
  81. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/led_strips/led_strip.py +0 -0
  82. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/limits/__init__.py +0 -0
  83. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/limits/limits.py +0 -0
  84. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/messages/__init__.py +0 -0
  85. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/messages/messages.py +0 -0
  86. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/model_collection.py +0 -0
  87. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/model_dictionary.py +0 -0
  88. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/model_object.py +0 -0
  89. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/__init__.py +0 -0
  90. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/axis.py +0 -0
  91. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/current_move.py +0 -0
  92. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/driver_id.py +0 -0
  93. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/extruder.py +0 -0
  94. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/extruder_non_linear.py +0 -0
  95. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/input_shaping.py +0 -0
  96. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/keepout_zone.py +0 -0
  97. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/__init__.py +0 -0
  98. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/core_kinematics.py +0 -0
  99. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/delta_kinematics.py +0 -0
  100. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/delta_tower.py +0 -0
  101. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/hangprinter_kinematics.py +0 -0
  102. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/kinematics.py +0 -0
  103. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/kinematics_name.py +0 -0
  104. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/polar_kinematics.py +0 -0
  105. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/scara_kinematics.py +0 -0
  106. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/tilt_correction.py +0 -0
  107. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/kinematics/zleadscrew_kinematics.py +0 -0
  108. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/microstepping.py +0 -0
  109. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/motors_idle_control.py +0 -0
  110. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move.py +0 -0
  111. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move_calibration.py +0 -0
  112. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move_compensation.py +0 -0
  113. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move_deviations.py +0 -0
  114. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move_queue_item.py +0 -0
  115. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move_rotation.py +0 -0
  116. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/move_segmentation.py +0 -0
  117. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/probe_grid.py +0 -0
  118. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/move/skew.py +0 -0
  119. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/network/__init__.py +0 -0
  120. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/network/network.py +0 -0
  121. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/network/network_interface.py +0 -0
  122. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/network/network_interface_type.py +0 -0
  123. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/network/network_protocol.py +0 -0
  124. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/network/network_state.py +0 -0
  125. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/object_model.py +0 -0
  126. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/plugins/__init__.py +0 -0
  127. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/plugins/plugin_manifest.py +0 -0
  128. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/plugins/plugins.py +0 -0
  129. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/plugins/sbc_permissions.py +0 -0
  130. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/__init__.py +0 -0
  131. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/cpu.py +0 -0
  132. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/__init__.py +0 -0
  133. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/dsf.py +0 -0
  134. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/http_endpoint.py +0 -0
  135. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/http_endpoint_type.py +0 -0
  136. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/user_sessions/__init__.py +0 -0
  137. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/user_sessions/access_level.py +0 -0
  138. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/user_sessions/session_type.py +0 -0
  139. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/dsf/user_sessions/user_sessions.py +0 -0
  140. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/memory.py +0 -0
  141. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sbc/sbc.py +0 -0
  142. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/__init__.py +0 -0
  143. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/analog_sensor.py +0 -0
  144. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/analog_sensor_type.py +0 -0
  145. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/endstop.py +0 -0
  146. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/endstop_type.py +0 -0
  147. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/Duet3DFilamentMonitor.py +0 -0
  148. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/__init__.py +0 -0
  149. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/filament_monitor.py +0 -0
  150. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/filament_monitor_enable_type.py +0 -0
  151. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/filament_monitor_status.py +0 -0
  152. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/filament_monitor_type.py +0 -0
  153. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/laser_filament_monitor.py +0 -0
  154. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/pulsed_filament_monitor.py +0 -0
  155. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/filament_monitors/rotating_magnet_filament_monitor.py +0 -0
  156. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/gp_input_port.py +0 -0
  157. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/probe.py +0 -0
  158. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/probe_type.py +0 -0
  159. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/sensors.py +0 -0
  160. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/sensors/temperature_error.py +0 -0
  161. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/spindles/__init__.py +0 -0
  162. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/spindles/spindle_state.py +0 -0
  163. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/spindles/spindles.py +0 -0
  164. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/__init__.py +0 -0
  165. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/beep_request.py +0 -0
  166. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/gp_output_port.py +0 -0
  167. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/log_level.py +0 -0
  168. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/machine_mode.py +0 -0
  169. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/machine_status.py +0 -0
  170. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/message_box.py +0 -0
  171. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/restore_point.py +0 -0
  172. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/startup_error.py +0 -0
  173. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/state/state.py +0 -0
  174. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/tools/__init__.py +0 -0
  175. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/tools/tool_retraction.py +0 -0
  176. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/tools/tool_state.py +0 -0
  177. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/tools/tools.py +0 -0
  178. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/utils.py +0 -0
  179. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/volumes/__init__.py +0 -0
  180. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/object_model/volumes/volumes.py +0 -0
  181. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/utility/__init__.py +0 -0
  182. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf/utils.py +0 -0
  183. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf_python.egg-info/SOURCES.txt +0 -0
  184. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf_python.egg-info/dependency_links.txt +0 -0
  185. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf_python.egg-info/requires.txt +0 -0
  186. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/src/dsf_python.egg-info/top_level.txt +0 -0
  187. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/tests/test_code.py +0 -0
  188. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/tests/test_custom_http_endpoint.py +0 -0
  189. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/tests/test_custom_m_codes.py +0 -0
  190. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/tests/test_object_model.py +0 -0
  191. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/tests/test_send_simple_code.py +0 -0
  192. {dsf_python-3.6.0b2 → dsf_python-3.6.0b2.post2}/tests/test_subscribe_object_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dsf-python
3
- Version: 3.6.0b2
3
+ Version: 3.6.0b2.post2
4
4
  Summary: Python interface to access DuetSoftwareFramework
5
5
  Home-page: https://github.com/Duet3D/dsf-python
6
6
  Author: Duet3D Ltd.
@@ -6,7 +6,7 @@ long_description = open("README.md", encoding="utf-8").read()
6
6
 
7
7
  setuptools.setup(
8
8
  name="dsf-python",
9
- version="3.6.0-b2",
9
+ version="3.6.0-b2.post2",
10
10
  description="Python interface to access DuetSoftwareFramework",
11
11
  long_description=long_description,
12
12
  long_description_content_type="text/markdown",
@@ -1,3 +1,5 @@
1
+ __version__ = "3.6.0-b2.post2"
2
+
1
3
  # path to unix socket file
2
4
  SOCKET_FILE = "/run/dsf/dcs.sock"
3
5
 
@@ -1,5 +1,8 @@
1
1
  import asyncio
2
2
  import json
3
+ import socket
4
+ import stat
5
+ import errno
3
6
  import os
4
7
  from concurrent.futures import ThreadPoolExecutor
5
8
  from enum import Enum
@@ -11,10 +14,11 @@ from .object_model import HttpEndpointType
11
14
  class HttpResponseType(str, Enum):
12
15
  """Enumeration of supported HTTP responses"""
13
16
 
14
- StatusCode = "StatusCode"
15
- PlainText = "PlainText"
16
- JSON = "JSON"
17
- File = "File"
17
+ StatusCode = "statuscode"
18
+ PlainText = "plainText"
19
+ JSON = "json"
20
+ File = "file"
21
+ URI = "uri"
18
22
 
19
23
 
20
24
  class ReceivedHttpRequest:
@@ -47,7 +51,7 @@ class HttpEndpointConnection:
47
51
  """Close the connection"""
48
52
  self.writer.close()
49
53
 
50
- async def read_request(self):
54
+ async def read_request(self) -> ReceivedHttpRequest:
51
55
  """
52
56
  Read information about the last HTTP request.
53
57
  Note that a call to this method may fail!
@@ -67,9 +71,9 @@ class HttpEndpointConnection:
67
71
  try:
68
72
  await self.send(
69
73
  {
70
- "StatusCode": status_code,
71
- "Response": response,
72
- "ResponseType": response_type,
74
+ "statusCode": status_code,
75
+ "response": response,
76
+ "responseType": response_type,
73
77
  }
74
78
  )
75
79
  finally:
@@ -149,11 +153,47 @@ class HttpEndpointUnixSocket:
149
153
  """Set the handler to handle client connections"""
150
154
  self.handler = handler
151
155
 
156
+ def _create_socket(self, path: str):
157
+ path = os.fspath(path)
158
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
159
+
160
+ # Check for abstract socket. `str` and `bytes` paths are supported.
161
+ if path[0] not in (0, '\x00'):
162
+ try:
163
+ if stat.S_ISSOCK(os.stat(path).st_mode):
164
+ os.remove(path)
165
+ except FileNotFoundError:
166
+ pass
167
+ except OSError as err:
168
+ # Directory may have permissions only to create socket.
169
+ # logger.error('Unable to check or remove stale UNIX socket '
170
+ # '%r: %r', path, err)
171
+ pass
172
+
173
+ try:
174
+ sock.bind(path)
175
+ os.chmod(path, os.stat(path).st_mode | stat.S_IWGRP | stat.S_IRGRP)
176
+ except OSError as exc:
177
+ sock.close()
178
+ if exc.errno == errno.EADDRINUSE:
179
+ # Let's improve the error message by adding
180
+ # with what exact address it occurs.
181
+ msg = f'Address {path!r} is already in use'
182
+ raise OSError(errno.EADDRINUSE, msg) from None
183
+ else:
184
+ raise
185
+ except:
186
+ sock.close()
187
+ raise
188
+
189
+ return sock
190
+
152
191
  def start_connection_listener(self):
153
192
  try:
154
193
  self._loop = asyncio.new_event_loop()
194
+ sock = self._create_socket(self.socket_file)
155
195
  self._server = asyncio.start_unix_server(
156
- self.handle_connection, self.socket_file, backlog=self.backlog
196
+ self.handle_connection, sock=sock, backlog=self.backlog
157
197
  )
158
198
  self._loop.create_task(self._server)
159
199
  self._loop.run_forever()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dsf-python
3
- Version: 3.6.0b2
3
+ Version: 3.6.0b2.post2
4
4
  Summary: Python interface to access DuetSoftwareFramework
5
5
  Home-page: https://github.com/Duet3D/dsf-python
6
6
  Author: Duet3D Ltd.
File without changes