PyLabRobot 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/PKG-INFO +29 -29
  2. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/PyLabRobot.egg-info/PKG-INFO +29 -29
  3. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/PyLabRobot.egg-info/SOURCES.txt +28 -9
  4. pylabrobot-0.2.1/PyLabRobot.egg-info/requires.txt +51 -0
  5. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/barcode_scanners/keyence/keyence_backend.py +12 -1
  6. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/sila/__init__.py +1 -1
  7. pylabrobot-0.2.1/pylabrobot/io/sila/discovery.py +728 -0
  8. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/sila/discovery_tests.py +113 -4
  9. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/usb.py +102 -27
  10. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/base.py +21 -9
  11. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/opentrons_backend_tests.py +4 -0
  12. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/peeling/xpeel_backend.py +12 -1
  13. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/__init__.py +2 -0
  14. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/agilent/biotek_synergyh1_backend.py +7 -1
  15. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/agilent/biotek_tests.py +4 -0
  16. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/__init__.py +1 -0
  17. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/infinite_backend.py +1340 -0
  18. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/infinite_backend_tests.py +918 -0
  19. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/__init__.py +11 -0
  20. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/base_control.py +8 -0
  21. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/camera_control.py +262 -0
  22. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/config_control.py +514 -0
  23. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/data_control.py +502 -0
  24. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/gas_control.py +76 -0
  25. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/injector_control.py +155 -0
  26. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/measurement_control.py +390 -0
  27. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/movement_control.py +931 -0
  28. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/optics_control.py +756 -0
  29. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/plate_transport_control.py +122 -0
  30. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/sensor_control.py +358 -0
  31. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/spark_enums.py +635 -0
  32. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/controls/system_control.py +189 -0
  33. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/enums.py +48 -0
  34. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_backend.py +271 -0
  35. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_backend_tests.py +147 -0
  36. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_packet_parser.py +480 -0
  37. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_packet_parser_test.py +77 -0
  38. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_processor.py +234 -0
  39. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_processor_tests.py +368 -0
  40. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_reader_async.py +405 -0
  41. pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m/spark_reader_async_tests.py +392 -0
  42. pylabrobot-0.2.1/pylabrobot/plate_reading/utils.py +59 -0
  43. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/agrowpumps/agrowdosepump_backend.py +5 -0
  44. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/agrowpumps/agrowdosepump_tests.py +4 -0
  45. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/cole_parmer/masterflex_backend.py +12 -1
  46. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/container.py +40 -2
  47. pylabrobot-0.2.1/pylabrobot/resources/container_tests.py +167 -0
  48. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/plates.py +15 -17
  49. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/eppendorf/plates.py +38 -0
  50. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/eppendorf/tubes.py +22 -56
  51. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/trough_carriers.py +1 -1
  52. pylabrobot-0.2.1/pylabrobot/resources/hamilton/troughs.py +201 -0
  53. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/petri_dish.py +3 -1
  54. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/petri_dish_tests.py +1 -0
  55. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/thermo_fisher/plates.py +36 -0
  56. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/trash.py +2 -0
  57. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/trough.py +3 -1
  58. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tube.py +5 -1
  59. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/well.py +5 -1
  60. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/well_tests.py +1 -0
  61. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/sealing/a4s_backend.py +12 -1
  62. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/cytomat.py +12 -1
  63. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/heraeus_cytomat_backend.py +12 -1
  64. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/incubator_shaker_backend.py +5 -0
  65. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/liconic/liconic_backend.py +12 -1
  66. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/liconic/liconic_backend_tests.py +4 -0
  67. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/opentrons_backend_tests.py +4 -0
  68. pylabrobot-0.2.1/pylabrobot/version.txt +1 -0
  69. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/lib.js +231 -0
  70. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/visualizer.py +6 -5
  71. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/visualizer_tests.py +1 -1
  72. pylabrobot-0.2.1/pyproject.toml +63 -0
  73. pylabrobot-0.2.0/PyLabRobot.egg-info/entry_points.txt +0 -2
  74. pylabrobot-0.2.0/PyLabRobot.egg-info/requires.txt +0 -51
  75. pylabrobot-0.2.0/pylabrobot/arms/kx2/__init__.py +0 -1
  76. pylabrobot-0.2.0/pylabrobot/arms/kx2/idk.py +0 -516
  77. pylabrobot-0.2.0/pylabrobot/arms/kx2/old.asdf.py +0 -521
  78. pylabrobot-0.2.0/pylabrobot/hamilton/__init__.py +0 -3
  79. pylabrobot-0.2.0/pylabrobot/hamilton/star.py +0 -79
  80. pylabrobot-0.2.0/pylabrobot/io/sila/discovery.py +0 -401
  81. pylabrobot-0.2.0/pylabrobot/legacy/liquid_handling/__init__.py +0 -3
  82. pylabrobot-0.2.0/pylabrobot/legacy/liquid_handling/liquid_handler.py +0 -303
  83. pylabrobot-0.2.0/pylabrobot/resources/container_tests.py +0 -53
  84. pylabrobot-0.2.0/pylabrobot/resources/hamilton/troughs.py +0 -271
  85. pylabrobot-0.2.0/pylabrobot/version.txt +0 -1
  86. pylabrobot-0.2.0/pyproject.toml +0 -64
  87. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/LICENSE +0 -0
  88. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/PyLabRobot.egg-info/dependency_links.txt +0 -0
  89. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/PyLabRobot.egg-info/top_level.txt +0 -0
  90. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/README.md +0 -0
  91. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/kx2/AsyncRW.py +0 -0
  92. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/kx2/__init__.py +0 -0
  93. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/kx2/dec14-930.py +0 -0
  94. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/kx2/oldwhatever.py +0 -0
  95. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/kx2/orig_binary_interpreter.py +0 -0
  96. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/kx2/stufffromclscan.py +0 -0
  97. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/__init__.py +0 -0
  98. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/__version__.py +0 -0
  99. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/__init__.py +0 -0
  100. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/backend.py +0 -0
  101. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/__init__.py +0 -0
  102. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/coords.py +0 -0
  103. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/error_codes.py +0 -0
  104. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/joints.py +0 -0
  105. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/pf_3400.py +0 -0
  106. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/pf_400.py +0 -0
  107. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/precise_flex_backend.py +0 -0
  108. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/precise_flex/precise_flex_backend_tests.py +0 -0
  109. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/scara.py +0 -0
  110. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/scara_tests.py +0 -0
  111. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/arms/standard.py +0 -0
  112. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/audio/__init__.py +0 -0
  113. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/audio/audio.py +0 -0
  114. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/barcode_scanners/__init__.py +0 -0
  115. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/barcode_scanners/backend.py +0 -0
  116. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/barcode_scanners/barcode_scanner.py +0 -0
  117. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/barcode_scanners/keyence/__init__.py +0 -0
  118. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/__init__.py +0 -0
  119. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/access2.py +0 -0
  120. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/backend.py +0 -0
  121. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/centrifuge.py +0 -0
  122. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/centrifuge_tests.py +0 -0
  123. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/chatterbox.py +0 -0
  124. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/standard.py +0 -0
  125. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/centrifuge/vspin_backend.py +0 -0
  126. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/__init__.py +0 -0
  127. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/config.py +0 -0
  128. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/config_tests.py +0 -0
  129. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/formats/__init__.py +0 -0
  130. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/formats/ini_config.py +0 -0
  131. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/formats/json_config.py +0 -0
  132. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/io/__init__.py +0 -0
  133. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/config/io/file.py +0 -0
  134. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/conftest.py +0 -0
  135. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/__init__.py +0 -0
  136. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/backend.py +0 -0
  137. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/bioshake_backend.py +0 -0
  138. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/chatterbox.py +0 -0
  139. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/hamilton_backend.py +0 -0
  140. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/heater_shaker.py +0 -0
  141. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/heater_shaker_tests.py +0 -0
  142. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/inheco/__init__.py +0 -0
  143. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/inheco/thermoshake.py +0 -0
  144. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/heating_shaking/inheco/thermoshake_backend.py +0 -0
  145. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/__init__.py +0 -0
  146. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/binary.py +0 -0
  147. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/capture.py +0 -0
  148. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/errors.py +0 -0
  149. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/ftdi.py +0 -0
  150. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/hid.py +0 -0
  151. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/http.py +0 -0
  152. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/io.py +0 -0
  153. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/serial.py +0 -0
  154. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/sila/grpc.py +0 -0
  155. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/sila/grpc_tests.py +0 -0
  156. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/socket.py +0 -0
  157. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/validation.py +0 -0
  158. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/io/validation_utils.py +0 -0
  159. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/__init__.py +0 -0
  160. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/__init__.py +0 -0
  161. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/backend.py +0 -0
  162. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/chatterbox.py +0 -0
  163. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/chatterbox_backend.py +0 -0
  164. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/chatterbox_tests.py +0 -0
  165. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/STAR_backend.py +0 -0
  166. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/STAR_chatterbox.py +0 -0
  167. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/STAR_tests.py +0 -0
  168. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/__init__.py +0 -0
  169. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/common.py +0 -0
  170. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/nimbus_backend.py +0 -0
  171. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/nimbus_backend_tests.py +0 -0
  172. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/planning.py +0 -0
  173. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/planning_tests.py +0 -0
  174. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/pump.py +0 -0
  175. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/__init__.py +0 -0
  176. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/commands.py +0 -0
  177. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/introspection.py +0 -0
  178. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/messages.py +0 -0
  179. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/packets.py +0 -0
  180. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/protocol.py +0 -0
  181. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp/tcp_tests.py +0 -0
  182. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/tcp_backend.py +0 -0
  183. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/vantage_backend.py +0 -0
  184. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/hamilton/vantage_tests.py +0 -0
  185. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/opentrons_backend.py +0 -0
  186. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/opentrons_simulator.py +0 -0
  187. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/serializing_backend.py +0 -0
  188. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/serializing_backend_tests.py +0 -0
  189. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/tecan/EVO_backend.py +0 -0
  190. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/tecan/EVO_tests.py +0 -0
  191. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/tecan/__init__.py +0 -0
  192. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/backends/tecan/errors.py +0 -0
  193. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/errors.py +0 -0
  194. {pylabrobot-0.2.0/pylabrobot/legacy → pylabrobot-0.2.1/pylabrobot/liquid_handling/liquid_classes}/__init__.py +0 -0
  195. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_classes/hamilton/__init__.py +0 -0
  196. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_classes/hamilton/base.py +0 -0
  197. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_classes/hamilton/star.py +0 -0
  198. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_classes/hamilton/vantage.py +0 -0
  199. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_classes/tecan.py +0 -0
  200. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_handler.py +0 -0
  201. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/liquid_handler_tests.py +0 -0
  202. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/standard.py +0 -0
  203. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/strictness.py +0 -0
  204. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/liquid_handling/utils.py +0 -0
  205. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/machines/__init__.py +0 -0
  206. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/machines/backend.py +0 -0
  207. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/machines/machine.py +0 -0
  208. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/machines/machine_tests.py +0 -0
  209. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/only_fans/__init__.py +0 -0
  210. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/only_fans/backend.py +0 -0
  211. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/only_fans/chatterbox.py +0 -0
  212. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/only_fans/fan.py +0 -0
  213. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/only_fans/hamilton_hepa_fan_backend.py +0 -0
  214. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/peeling/__init__.py +0 -0
  215. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/peeling/backend.py +0 -0
  216. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/peeling/peeler.py +0 -0
  217. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/peeling/xpeel.py +0 -0
  218. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/agilent/__init__.py +0 -0
  219. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/agilent/biotek_backend.py +0 -0
  220. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/agilent/biotek_cytation_backend.py +0 -0
  221. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/agilent/biotek_synergy_ht_backend.py +0 -0
  222. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/backend.py +0 -0
  223. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/biotek_backend.py +0 -0
  224. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/biotek_cytation_backend.py +0 -0
  225. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/biotek_synergyh1_backend.py +0 -0
  226. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/bmg_labtech/__init__.py +0 -0
  227. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/bmg_labtech/clario_star_backend.py +0 -0
  228. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/__init__.py +0 -0
  229. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/byonoy_a96a.py +0 -0
  230. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/byonoy_backend.py +0 -0
  231. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/byonoy_l96.py +0 -0
  232. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/byonoy_l96a.py +0 -0
  233. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/byonoy_tests.py +0 -0
  234. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/byonoy/parser.py +0 -0
  235. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/chatterbox.py +0 -0
  236. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/clario_star_backend.py +0 -0
  237. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/image_reader.py +0 -0
  238. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/imager.py +0 -0
  239. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/molecular_devices/__init__.py +0 -0
  240. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/molecular_devices/backend.py +0 -0
  241. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/molecular_devices/backend_tests.py +0 -0
  242. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/molecular_devices/spectramax_384_plus_backend.py +0 -0
  243. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/molecular_devices/spectramax_m5_backend.py +0 -0
  244. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/molecular_devices_backend.py +0 -0
  245. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/plate_reader.py +0 -0
  246. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/plate_reader_tests.py +0 -0
  247. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/spectramax_384_plus_backend.py +0 -0
  248. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/spectramax_m5_backend.py +0 -0
  249. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_reading/standard.py +0 -0
  250. {pylabrobot-0.2.0/pylabrobot/liquid_handling/liquid_classes → pylabrobot-0.2.1/pylabrobot/plate_reading/tecan/spark20m}/__init__.py +0 -0
  251. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/__init__.py +0 -0
  252. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/__init__.py +0 -0
  253. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/__init__.py +0 -0
  254. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/actions.py +0 -0
  255. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/actions_tests.py +0 -0
  256. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/backend.py +0 -0
  257. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/batch_tests.py +0 -0
  258. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/communication.py +0 -0
  259. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/communication_tests.py +0 -0
  260. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/enums.py +0 -0
  261. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/error_codes.py +0 -0
  262. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/errors.py +0 -0
  263. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/helpers.py +0 -0
  264. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/helpers_tests.py +0 -0
  265. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/mock_tests.py +0 -0
  266. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/protocol.py +0 -0
  267. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/queries.py +0 -0
  268. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/queries_tests.py +0 -0
  269. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/setup_tests.py +0 -0
  270. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps/__init__.py +0 -0
  271. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps/_base.py +0 -0
  272. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps/_manifold.py +0 -0
  273. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps/_peristaltic.py +0 -0
  274. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps/_shake.py +0 -0
  275. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps/_syringe.py +0 -0
  276. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps_aspirate_tests.py +0 -0
  277. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps_dispense_tests.py +0 -0
  278. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps_peristaltic_tests.py +0 -0
  279. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps_prime_tests.py +0 -0
  280. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps_shake_tests.py +0 -0
  281. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/plate_washing/biotek/el406/steps_wash_tests.py +0 -0
  282. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/powder_dispensing/__init__.py +0 -0
  283. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/powder_dispensing/backend.py +0 -0
  284. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/powder_dispensing/chatterbox.py +0 -0
  285. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/powder_dispensing/powder_dispenser.py +0 -0
  286. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/powder_dispensing/powder_dispenser_tests.py +0 -0
  287. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/__init__.py +0 -0
  288. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/agrowpumps/__init__.py +0 -0
  289. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/backend.py +0 -0
  290. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/calibration.py +0 -0
  291. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/calibration_tests.py +0 -0
  292. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/chatterbox.py +0 -0
  293. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/cole_parmer/__init__.py +0 -0
  294. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/errors.py +0 -0
  295. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/pump.py +0 -0
  296. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/pump_tests.py +0 -0
  297. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/pumps/pumparray.py +0 -0
  298. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/__init__.py +0 -0
  299. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/agenbio/__init__.py +0 -0
  300. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/agenbio/plates.py +0 -0
  301. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/agilent/__init__.py +0 -0
  302. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/agilent/plates.py +0 -0
  303. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/alpaqua/__init__.py +0 -0
  304. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/alpaqua/magnetic_racks.py +0 -0
  305. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/azenta/__init__.py +0 -0
  306. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/azenta/plates.py +0 -0
  307. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/barcode.py +0 -0
  308. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/bioer/__init__.py +0 -0
  309. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/bioer/plates.py +0 -0
  310. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/biorad/__init__.py +0 -0
  311. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/biorad/plates.py +0 -0
  312. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/boekel/__init__.py +0 -0
  313. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/boekel/tube_carriers.py +0 -0
  314. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/carrier.py +0 -0
  315. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/carrier_tests.py +0 -0
  316. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/celltreat/__init__.py +0 -0
  317. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/celltreat/plates.py +0 -0
  318. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/celltreat/tubes.py +0 -0
  319. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/cellvis/__init__.py +0 -0
  320. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/cellvis/plates.py +0 -0
  321. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/coordinate.py +0 -0
  322. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/coordinate_tests.py +0 -0
  323. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/__init__.py +0 -0
  324. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/axygen/__init__.py +0 -0
  325. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/axygen/plates.py +0 -0
  326. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/costar/__init__.py +0 -0
  327. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/costar/plates.py +0 -0
  328. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/falcon/__init__.py +0 -0
  329. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/falcon/plates.py +0 -0
  330. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/corning/falcon/tubes.py +0 -0
  331. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/deck.py +0 -0
  332. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/deck_tests.py +0 -0
  333. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/distribute_fixed_volume_w_dispense_offsets.py +0 -0
  334. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/diy/__init__.py +0 -0
  335. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/diy/davidnedrud/__init__.py +0 -0
  336. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/diy/davidnedrud/modules.py +0 -0
  337. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/diy/grindbio/__init__.py +0 -0
  338. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/diy/grindbio/modules.py +0 -0
  339. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/eppendorf/__init__.py +0 -0
  340. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/errors.py +0 -0
  341. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/falcon/__init__.py +0 -0
  342. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/falcon/plates.py +0 -0
  343. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/falcon/tubes.py +0 -0
  344. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/functional.py +0 -0
  345. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/greiner/__init__.py +0 -0
  346. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/greiner/plates.py +0 -0
  347. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/__init__.py +0 -0
  348. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/hamilton_deck_tests.py +0 -0
  349. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/hamilton_decks.py +0 -0
  350. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/mfx_carriers.py +0 -0
  351. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/mfx_modules.py +0 -0
  352. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/nimbus_decks.py +0 -0
  353. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/plate_adapters.py +0 -0
  354. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/plate_carriers.py +0 -0
  355. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/tip_carriers.py +0 -0
  356. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/tip_creators.py +0 -0
  357. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/tip_racks.py +0 -0
  358. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/tip_racks_tests.py +0 -0
  359. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/tube_carriers.py +0 -0
  360. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/hamilton/vantage_decks.py +0 -0
  361. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/height_functions.py +0 -0
  362. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/height_volume_functions.py +0 -0
  363. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/imcs/__init__.py +0 -0
  364. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/imcs/tip_racks.py +0 -0
  365. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/itemized_resource.py +0 -0
  366. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/itemized_resource_tests.py +0 -0
  367. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/liquid.py +0 -0
  368. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/nest/__init__.py +0 -0
  369. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/nest/plates.py +0 -0
  370. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/__init__.py +0 -0
  371. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/adapters.py +0 -0
  372. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/deck.py +0 -0
  373. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/deck_tests.py +0 -0
  374. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/load.py +0 -0
  375. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/module.py +0 -0
  376. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/tip_racks.py +0 -0
  377. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/opentrons/tube_racks.py +0 -0
  378. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/perkin_elmer/__init__.py +0 -0
  379. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/perkin_elmer/plates.py +0 -0
  380. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/plate.py +0 -0
  381. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/plate_adapter.py +0 -0
  382. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/plate_adapter_tests.py +0 -0
  383. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/plate_tests.py +0 -0
  384. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/porvair/__init__.py +0 -0
  385. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/porvair/plates.py +0 -0
  386. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/powder.py +0 -0
  387. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/resource.py +0 -0
  388. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/resource_holder.py +0 -0
  389. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/resource_holder_tests.py +0 -0
  390. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/resource_stack.py +0 -0
  391. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/resource_stack_tests.py +0 -0
  392. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/resource_tests.py +0 -0
  393. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/revvity/__init__.py +0 -0
  394. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/revvity/plates.py +0 -0
  395. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/rotation.py +0 -0
  396. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/sergi/__init__.py +0 -0
  397. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/sergi/plate_adapters.py +0 -0
  398. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/__init__.py +0 -0
  399. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/plate_carriers.py +0 -0
  400. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/plates.py +0 -0
  401. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/tecan_decks.py +0 -0
  402. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/tecan_resource.py +0 -0
  403. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/tip_carriers.py +0 -0
  404. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/tip_creators.py +0 -0
  405. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/tip_racks.py +0 -0
  406. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/trash.py +0 -0
  407. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tecan/wash.py +0 -0
  408. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/thermo_fisher/__init__.py +0 -0
  409. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/thermo_fisher/troughs.py +0 -0
  410. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tip.py +0 -0
  411. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tip_rack.py +0 -0
  412. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tip_rack_tests.py +0 -0
  413. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tip_tests.py +0 -0
  414. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tip_tracker.py +0 -0
  415. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tip_tracker_tests.py +0 -0
  416. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/tube_rack.py +0 -0
  417. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/utils.py +0 -0
  418. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/utils_tests.py +0 -0
  419. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/volume_functions.py +0 -0
  420. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/volume_functions_tests.py +0 -0
  421. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/volume_tracker.py +0 -0
  422. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/volume_tracker_tests.py +0 -0
  423. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/vwr/__init__.py +0 -0
  424. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/vwr/plates.py +0 -0
  425. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/resources/vwr/troughs.py +0 -0
  426. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/scales/__init__.py +0 -0
  427. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/scales/chatterbox.py +0 -0
  428. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/scales/mettler_toledo_backend.py +0 -0
  429. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/scales/scale.py +0 -0
  430. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/scales/scale_backend.py +0 -0
  431. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/sealing/__init__.py +0 -0
  432. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/sealing/a4s.py +0 -0
  433. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/sealing/backend.py +0 -0
  434. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/sealing/sealer.py +0 -0
  435. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/serializer.py +0 -0
  436. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/shaking/__init__.py +0 -0
  437. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/shaking/backend.py +0 -0
  438. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/shaking/chatterbox.py +0 -0
  439. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/shaking/shaker.py +0 -0
  440. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/shaking/shaker_tests.py +0 -0
  441. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/__init__.py +0 -0
  442. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/backend.py +0 -0
  443. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/chatterbox.py +0 -0
  444. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/__init__.py +0 -0
  445. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/constants.py +0 -0
  446. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/errors.py +0 -0
  447. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/racks.py +0 -0
  448. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/schemas.py +0 -0
  449. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/cytomat/utils.py +0 -0
  450. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/incubator.py +0 -0
  451. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/incubator_tests.py +0 -0
  452. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/__init__.py +0 -0
  453. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/incubator_shaker.py +0 -0
  454. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/scila/__init__.py +0 -0
  455. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/scila/inheco_sila_interface.py +0 -0
  456. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/scila/scila_backend.py +0 -0
  457. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/scila/scila_backend_tests.py +0 -0
  458. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/inheco/scila/soap.py +0 -0
  459. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/liconic/__init__.py +0 -0
  460. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/liconic/constants.py +0 -0
  461. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/liconic/errors.py +0 -0
  462. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/storage/liconic/racks.py +0 -0
  463. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/__init__.py +0 -0
  464. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/backend.py +0 -0
  465. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/chatterbox.py +0 -0
  466. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/inheco/__init__.py +0 -0
  467. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/inheco/control_box.py +0 -0
  468. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/inheco/cpac.py +0 -0
  469. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/inheco/cpac_backend.py +0 -0
  470. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/inheco/temperature_controller.py +0 -0
  471. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/opentrons.py +0 -0
  472. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/opentrons_backend.py +0 -0
  473. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/opentrons_backend_usb.py +0 -0
  474. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/temperature_controller.py +0 -0
  475. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/temperature_controlling/temperature_controller_tests.py +0 -0
  476. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/__init__.py +0 -0
  477. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/backend.py +0 -0
  478. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/chatterbox.py +0 -0
  479. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/chatterbox_tests.py +0 -0
  480. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/inheco/__init__.py +0 -0
  481. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/inheco/odtc_backend.py +0 -0
  482. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/opentrons.py +0 -0
  483. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/opentrons_backend.py +0 -0
  484. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/opentrons_backend_usb.py +0 -0
  485. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/standard.py +0 -0
  486. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermo_fisher/__init__.py +0 -0
  487. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermo_fisher/atc.py +0 -0
  488. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermo_fisher/proflex.py +0 -0
  489. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermo_fisher/proflex_tests.py +0 -0
  490. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermo_fisher/thermo_fisher_thermocycler.py +0 -0
  491. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermocycler.py +0 -0
  492. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/thermocycling/thermocycler_tests.py +0 -0
  493. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/tilting/__init__.py +0 -0
  494. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/tilting/chatterbox.py +0 -0
  495. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/tilting/hamilton.py +0 -0
  496. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/tilting/hamilton_backend.py +0 -0
  497. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/tilting/tilter.py +0 -0
  498. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/tilting/tilter_backend.py +0 -0
  499. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/__init__.py +0 -0
  500. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/file_parsing.py +0 -0
  501. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/interpolation.py +0 -0
  502. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/linalg.py +0 -0
  503. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/linalg_tests.py +0 -0
  504. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/list.py +0 -0
  505. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/list_tests.py +0 -0
  506. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/object_parsing.py +0 -0
  507. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/positions.py +0 -0
  508. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/utils/positions_tests.py +0 -0
  509. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/__init__.py +0 -0
  510. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/gif.js +0 -0
  511. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/gif.worker.js +0 -0
  512. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/index.html +0 -0
  513. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/main.css +0 -0
  514. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/pylabrobot/visualizer/vis.js +0 -0
  515. {pylabrobot-0.2.0 → pylabrobot-0.2.1}/setup.cfg +0 -0
@@ -1,51 +1,51 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLabRobot
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: A hardware agnostic platform for lab automation
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/pylabrobot/pylabrobot
7
7
  Requires-Python: >=3.9
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
- Requires-Dist: typing_extensions==4.15.0
10
+ Requires-Dist: typing_extensions
11
+ Requires-Dist: websockets
11
12
  Provides-Extra: serial
12
- Requires-Dist: pyserial==3.5; extra == "serial"
13
+ Requires-Dist: pyserial; extra == "serial"
13
14
  Provides-Extra: usb
14
- Requires-Dist: pyusb==1.3.1; extra == "usb"
15
- Requires-Dist: libusb-package==1.0.26.1; extra == "usb"
15
+ Requires-Dist: pyusb; extra == "usb"
16
+ Requires-Dist: libusb-package; extra == "usb"
16
17
  Provides-Extra: ftdi
17
- Requires-Dist: pylibftdi==0.23.0; extra == "ftdi"
18
- Requires-Dist: pyusb==1.3.1; extra == "ftdi"
18
+ Requires-Dist: pylibftdi; extra == "ftdi"
19
+ Requires-Dist: pyusb; extra == "ftdi"
19
20
  Provides-Extra: hid
20
- Requires-Dist: hid==1.0.8; extra == "hid"
21
+ Requires-Dist: hid; extra == "hid"
21
22
  Provides-Extra: modbus
22
- Requires-Dist: pymodbus==3.6.8; extra == "modbus"
23
- Provides-Extra: websockets
24
- Requires-Dist: websockets==15.0.1; extra == "websockets"
25
- Provides-Extra: visualizer
26
- Requires-Dist: websockets==15.0.1; extra == "visualizer"
23
+ Requires-Dist: pymodbus<3.7.0,>=3.0.0; extra == "modbus"
27
24
  Provides-Extra: opentrons
28
- Requires-Dist: opentrons-http-api-client; extra == "opentrons"
25
+ Requires-Dist: opentrons-http-api-client==0.2.0; extra == "opentrons"
29
26
  Provides-Extra: sila
30
27
  Requires-Dist: zeroconf>=0.131.0; extra == "sila"
31
- Provides-Extra: gui
32
- Requires-Dist: flask[async]==3.1.2; extra == "gui"
28
+ Requires-Dist: grpcio; extra == "sila"
29
+ Provides-Extra: microscopy
30
+ Requires-Dist: numpy>=1.26; extra == "microscopy"
31
+ Requires-Dist: opencv-python; extra == "microscopy"
32
+ Provides-Extra: pico
33
+ Requires-Dist: PyLabRobot[microscopy,sila]; extra == "pico"
34
+ Provides-Extra: all
35
+ Requires-Dist: PyLabRobot[ftdi,hid,modbus,opentrons,serial,sila,usb,visualizer,websockets]; extra == "all"
36
+ Provides-Extra: test
37
+ Requires-Dist: pytest; extra == "test"
38
+ Requires-Dist: pytest-timeout; extra == "test"
33
39
  Provides-Extra: dev
34
- Requires-Dist: PyLabRobot[ftdi,gui,hid,modbus,opentrons,serial,sila,usb,visualizer,websockets]; extra == "dev"
35
- Requires-Dist: grpcio; extra == "dev"
36
- Requires-Dist: numpy; extra == "dev"
37
- Requires-Dist: pytest==8.4.2; extra == "dev"
38
- Requires-Dist: pytest-timeout==2.4.0; extra == "dev"
40
+ Requires-Dist: PyLabRobot[all,test]; extra == "dev"
39
41
  Requires-Dist: mypy==1.18.2; extra == "dev"
40
- Requires-Dist: sphinx-reredirects==0.1.6; extra == "dev"
41
42
  Requires-Dist: ruff==0.15.4; extra == "dev"
42
- Requires-Dist: nbconvert==7.16.6; extra == "dev"
43
- Requires-Dist: sphinx-sitemap==2.8.0; extra == "dev"
44
- Requires-Dist: pydata-sphinx-theme==0.16.1; extra == "dev"
45
- Requires-Dist: myst_nb==1.3.0; extra == "dev"
46
- Requires-Dist: sphinx_copybutton==0.5.2; extra == "dev"
47
- Provides-Extra: all
48
- Requires-Dist: PyLabRobot[dev]; extra == "all"
43
+ Requires-Dist: sphinx-reredirects; extra == "dev"
44
+ Requires-Dist: nbconvert; extra == "dev"
45
+ Requires-Dist: sphinx-sitemap; extra == "dev"
46
+ Requires-Dist: pydata-sphinx-theme; extra == "dev"
47
+ Requires-Dist: myst_nb; extra == "dev"
48
+ Requires-Dist: sphinx_copybutton; extra == "dev"
49
49
  Dynamic: license-file
50
50
 
51
51
  <div style="text-align: center" align="center">
@@ -1,51 +1,51 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLabRobot
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: A hardware agnostic platform for lab automation
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/pylabrobot/pylabrobot
7
7
  Requires-Python: >=3.9
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
- Requires-Dist: typing_extensions==4.15.0
10
+ Requires-Dist: typing_extensions
11
+ Requires-Dist: websockets
11
12
  Provides-Extra: serial
12
- Requires-Dist: pyserial==3.5; extra == "serial"
13
+ Requires-Dist: pyserial; extra == "serial"
13
14
  Provides-Extra: usb
14
- Requires-Dist: pyusb==1.3.1; extra == "usb"
15
- Requires-Dist: libusb-package==1.0.26.1; extra == "usb"
15
+ Requires-Dist: pyusb; extra == "usb"
16
+ Requires-Dist: libusb-package; extra == "usb"
16
17
  Provides-Extra: ftdi
17
- Requires-Dist: pylibftdi==0.23.0; extra == "ftdi"
18
- Requires-Dist: pyusb==1.3.1; extra == "ftdi"
18
+ Requires-Dist: pylibftdi; extra == "ftdi"
19
+ Requires-Dist: pyusb; extra == "ftdi"
19
20
  Provides-Extra: hid
20
- Requires-Dist: hid==1.0.8; extra == "hid"
21
+ Requires-Dist: hid; extra == "hid"
21
22
  Provides-Extra: modbus
22
- Requires-Dist: pymodbus==3.6.8; extra == "modbus"
23
- Provides-Extra: websockets
24
- Requires-Dist: websockets==15.0.1; extra == "websockets"
25
- Provides-Extra: visualizer
26
- Requires-Dist: websockets==15.0.1; extra == "visualizer"
23
+ Requires-Dist: pymodbus<3.7.0,>=3.0.0; extra == "modbus"
27
24
  Provides-Extra: opentrons
28
- Requires-Dist: opentrons-http-api-client; extra == "opentrons"
25
+ Requires-Dist: opentrons-http-api-client==0.2.0; extra == "opentrons"
29
26
  Provides-Extra: sila
30
27
  Requires-Dist: zeroconf>=0.131.0; extra == "sila"
31
- Provides-Extra: gui
32
- Requires-Dist: flask[async]==3.1.2; extra == "gui"
28
+ Requires-Dist: grpcio; extra == "sila"
29
+ Provides-Extra: microscopy
30
+ Requires-Dist: numpy>=1.26; extra == "microscopy"
31
+ Requires-Dist: opencv-python; extra == "microscopy"
32
+ Provides-Extra: pico
33
+ Requires-Dist: PyLabRobot[microscopy,sila]; extra == "pico"
34
+ Provides-Extra: all
35
+ Requires-Dist: PyLabRobot[ftdi,hid,modbus,opentrons,serial,sila,usb,visualizer,websockets]; extra == "all"
36
+ Provides-Extra: test
37
+ Requires-Dist: pytest; extra == "test"
38
+ Requires-Dist: pytest-timeout; extra == "test"
33
39
  Provides-Extra: dev
34
- Requires-Dist: PyLabRobot[ftdi,gui,hid,modbus,opentrons,serial,sila,usb,visualizer,websockets]; extra == "dev"
35
- Requires-Dist: grpcio; extra == "dev"
36
- Requires-Dist: numpy; extra == "dev"
37
- Requires-Dist: pytest==8.4.2; extra == "dev"
38
- Requires-Dist: pytest-timeout==2.4.0; extra == "dev"
40
+ Requires-Dist: PyLabRobot[all,test]; extra == "dev"
39
41
  Requires-Dist: mypy==1.18.2; extra == "dev"
40
- Requires-Dist: sphinx-reredirects==0.1.6; extra == "dev"
41
42
  Requires-Dist: ruff==0.15.4; extra == "dev"
42
- Requires-Dist: nbconvert==7.16.6; extra == "dev"
43
- Requires-Dist: sphinx-sitemap==2.8.0; extra == "dev"
44
- Requires-Dist: pydata-sphinx-theme==0.16.1; extra == "dev"
45
- Requires-Dist: myst_nb==1.3.0; extra == "dev"
46
- Requires-Dist: sphinx_copybutton==0.5.2; extra == "dev"
47
- Provides-Extra: all
48
- Requires-Dist: PyLabRobot[dev]; extra == "all"
43
+ Requires-Dist: sphinx-reredirects; extra == "dev"
44
+ Requires-Dist: nbconvert; extra == "dev"
45
+ Requires-Dist: sphinx-sitemap; extra == "dev"
46
+ Requires-Dist: pydata-sphinx-theme; extra == "dev"
47
+ Requires-Dist: myst_nb; extra == "dev"
48
+ Requires-Dist: sphinx_copybutton; extra == "dev"
49
49
  Dynamic: license-file
50
50
 
51
51
  <div style="text-align: center" align="center">
@@ -4,7 +4,6 @@ pyproject.toml
4
4
  PyLabRobot.egg-info/PKG-INFO
5
5
  PyLabRobot.egg-info/SOURCES.txt
6
6
  PyLabRobot.egg-info/dependency_links.txt
7
- PyLabRobot.egg-info/entry_points.txt
8
7
  PyLabRobot.egg-info/requires.txt
9
8
  PyLabRobot.egg-info/top_level.txt
10
9
  kx2/AsyncRW.py
@@ -23,9 +22,6 @@ pylabrobot/arms/backend.py
23
22
  pylabrobot/arms/scara.py
24
23
  pylabrobot/arms/scara_tests.py
25
24
  pylabrobot/arms/standard.py
26
- pylabrobot/arms/kx2/__init__.py
27
- pylabrobot/arms/kx2/idk.py
28
- pylabrobot/arms/kx2/old.asdf.py
29
25
  pylabrobot/arms/precise_flex/__init__.py
30
26
  pylabrobot/arms/precise_flex/coords.py
31
27
  pylabrobot/arms/precise_flex/error_codes.py
@@ -57,8 +53,6 @@ pylabrobot/config/formats/ini_config.py
57
53
  pylabrobot/config/formats/json_config.py
58
54
  pylabrobot/config/io/__init__.py
59
55
  pylabrobot/config/io/file.py
60
- pylabrobot/hamilton/__init__.py
61
- pylabrobot/hamilton/star.py
62
56
  pylabrobot/heating_shaking/__init__.py
63
57
  pylabrobot/heating_shaking/backend.py
64
58
  pylabrobot/heating_shaking/bioshake_backend.py
@@ -87,9 +81,6 @@ pylabrobot/io/sila/discovery.py
87
81
  pylabrobot/io/sila/discovery_tests.py
88
82
  pylabrobot/io/sila/grpc.py
89
83
  pylabrobot/io/sila/grpc_tests.py
90
- pylabrobot/legacy/__init__.py
91
- pylabrobot/legacy/liquid_handling/__init__.py
92
- pylabrobot/legacy/liquid_handling/liquid_handler.py
93
84
  pylabrobot/liquid_handling/__init__.py
94
85
  pylabrobot/liquid_handling/errors.py
95
86
  pylabrobot/liquid_handling/liquid_handler.py
@@ -167,6 +158,7 @@ pylabrobot/plate_reading/plate_reader_tests.py
167
158
  pylabrobot/plate_reading/spectramax_384_plus_backend.py
168
159
  pylabrobot/plate_reading/spectramax_m5_backend.py
169
160
  pylabrobot/plate_reading/standard.py
161
+ pylabrobot/plate_reading/utils.py
170
162
  pylabrobot/plate_reading/agilent/__init__.py
171
163
  pylabrobot/plate_reading/agilent/biotek_backend.py
172
164
  pylabrobot/plate_reading/agilent/biotek_cytation_backend.py
@@ -187,6 +179,33 @@ pylabrobot/plate_reading/molecular_devices/backend.py
187
179
  pylabrobot/plate_reading/molecular_devices/backend_tests.py
188
180
  pylabrobot/plate_reading/molecular_devices/spectramax_384_plus_backend.py
189
181
  pylabrobot/plate_reading/molecular_devices/spectramax_m5_backend.py
182
+ pylabrobot/plate_reading/tecan/__init__.py
183
+ pylabrobot/plate_reading/tecan/infinite_backend.py
184
+ pylabrobot/plate_reading/tecan/infinite_backend_tests.py
185
+ pylabrobot/plate_reading/tecan/spark20m/__init__.py
186
+ pylabrobot/plate_reading/tecan/spark20m/enums.py
187
+ pylabrobot/plate_reading/tecan/spark20m/spark_backend.py
188
+ pylabrobot/plate_reading/tecan/spark20m/spark_backend_tests.py
189
+ pylabrobot/plate_reading/tecan/spark20m/spark_packet_parser.py
190
+ pylabrobot/plate_reading/tecan/spark20m/spark_packet_parser_test.py
191
+ pylabrobot/plate_reading/tecan/spark20m/spark_processor.py
192
+ pylabrobot/plate_reading/tecan/spark20m/spark_processor_tests.py
193
+ pylabrobot/plate_reading/tecan/spark20m/spark_reader_async.py
194
+ pylabrobot/plate_reading/tecan/spark20m/spark_reader_async_tests.py
195
+ pylabrobot/plate_reading/tecan/spark20m/controls/__init__.py
196
+ pylabrobot/plate_reading/tecan/spark20m/controls/base_control.py
197
+ pylabrobot/plate_reading/tecan/spark20m/controls/camera_control.py
198
+ pylabrobot/plate_reading/tecan/spark20m/controls/config_control.py
199
+ pylabrobot/plate_reading/tecan/spark20m/controls/data_control.py
200
+ pylabrobot/plate_reading/tecan/spark20m/controls/gas_control.py
201
+ pylabrobot/plate_reading/tecan/spark20m/controls/injector_control.py
202
+ pylabrobot/plate_reading/tecan/spark20m/controls/measurement_control.py
203
+ pylabrobot/plate_reading/tecan/spark20m/controls/movement_control.py
204
+ pylabrobot/plate_reading/tecan/spark20m/controls/optics_control.py
205
+ pylabrobot/plate_reading/tecan/spark20m/controls/plate_transport_control.py
206
+ pylabrobot/plate_reading/tecan/spark20m/controls/sensor_control.py
207
+ pylabrobot/plate_reading/tecan/spark20m/controls/spark_enums.py
208
+ pylabrobot/plate_reading/tecan/spark20m/controls/system_control.py
190
209
  pylabrobot/plate_washing/__init__.py
191
210
  pylabrobot/plate_washing/biotek/__init__.py
192
211
  pylabrobot/plate_washing/biotek/el406/__init__.py
@@ -0,0 +1,51 @@
1
+ typing_extensions
2
+ websockets
3
+
4
+ [all]
5
+ PyLabRobot[ftdi,hid,modbus,opentrons,serial,sila,usb,visualizer,websockets]
6
+
7
+ [dev]
8
+ PyLabRobot[all,test]
9
+ mypy==1.18.2
10
+ ruff==0.15.4
11
+ sphinx-reredirects
12
+ nbconvert
13
+ sphinx-sitemap
14
+ pydata-sphinx-theme
15
+ myst_nb
16
+ sphinx_copybutton
17
+
18
+ [ftdi]
19
+ pylibftdi
20
+ pyusb
21
+
22
+ [hid]
23
+ hid
24
+
25
+ [microscopy]
26
+ numpy>=1.26
27
+ opencv-python
28
+
29
+ [modbus]
30
+ pymodbus<3.7.0,>=3.0.0
31
+
32
+ [opentrons]
33
+ opentrons-http-api-client==0.2.0
34
+
35
+ [pico]
36
+ PyLabRobot[microscopy,sila]
37
+
38
+ [serial]
39
+ pyserial
40
+
41
+ [sila]
42
+ zeroconf>=0.131.0
43
+ grpcio
44
+
45
+ [test]
46
+ pytest
47
+ pytest-timeout
48
+
49
+ [usb]
50
+ pyusb
51
+ libusb-package
@@ -2,7 +2,13 @@ import asyncio
2
2
  import logging
3
3
  import time
4
4
 
5
- import serial
5
+ try:
6
+ import serial
7
+
8
+ HAS_SERIAL = True
9
+ except ImportError as e:
10
+ HAS_SERIAL = False
11
+ _SERIAL_IMPORT_ERROR = e
6
12
 
7
13
  from pylabrobot.barcode_scanners.backend import (
8
14
  BarcodeScannerBackend,
@@ -24,6 +30,11 @@ class KeyenceBarcodeScannerBackend(BarcodeScannerBackend):
24
30
  self,
25
31
  port: str,
26
32
  ):
33
+ if not HAS_SERIAL:
34
+ raise RuntimeError(
35
+ "pyserial is not installed. Install with: pip install pylabrobot[serial]. "
36
+ f"Import error: {_SERIAL_IMPORT_ERROR}"
37
+ )
27
38
  super().__init__()
28
39
 
29
40
  # BL-1300 Barcode reader factory default serial communication settings
@@ -1,4 +1,4 @@
1
- from pylabrobot.io.sila.discovery import SiLADevice, discover
1
+ from pylabrobot.io.sila.discovery import SiLADevice, discover, discover_iter
2
2
  from pylabrobot.io.sila.grpc import (
3
3
  WIRE_32BIT,
4
4
  WIRE_64BIT,