wirestudio 0.26.2__tar.gz → 0.26.3__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 (303) hide show
  1. {wirestudio-0.26.2/wirestudio.egg-info → wirestudio-0.26.3}/PKG-INFO +1 -1
  2. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_fleet.py +30 -6
  3. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/__init__.py +1 -1
  4. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/fleet/client.py +7 -3
  5. {wirestudio-0.26.2 → wirestudio-0.26.3/wirestudio.egg-info}/PKG-INFO +1 -1
  6. {wirestudio-0.26.2 → wirestudio-0.26.3}/LICENSE +0 -0
  7. {wirestudio-0.26.2 → wirestudio-0.26.3}/README.md +0 -0
  8. {wirestudio-0.26.2 → wirestudio-0.26.3}/pyproject.toml +0 -0
  9. {wirestudio-0.26.2 → wirestudio-0.26.3}/setup.cfg +0 -0
  10. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_active_design.py +0 -0
  11. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_agent.py +0 -0
  12. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_agent_stream.py +0 -0
  13. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_api.py +0 -0
  14. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_api_route.py +0 -0
  15. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_ascii_gen.py +0 -0
  16. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_build_backend.py +0 -0
  17. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_chirpstack.py +0 -0
  18. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_circuitpython.py +0 -0
  19. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_codec.py +0 -0
  20. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_compatibility.py +0 -0
  21. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_compile.py +0 -0
  22. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_coverage_baseline.py +0 -0
  23. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_design_events.py +0 -0
  24. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_designs.py +0 -0
  25. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_designs_seed.py +0 -0
  26. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_enclosure.py +0 -0
  27. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_enclosure_gate.py +0 -0
  28. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_enclosure_search.py +0 -0
  29. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_firmware_gen.py +0 -0
  30. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_footprints.py +0 -0
  31. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_intent.py +0 -0
  32. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_inventory.py +0 -0
  33. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_jlcpcb.py +0 -0
  34. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad.py +0 -0
  35. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_fab.py +0 -0
  36. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_import.py +0 -0
  37. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_pcb.py +0 -0
  38. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_render.py +0 -0
  39. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_route.py +0 -0
  40. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_library_rtttl.py +0 -0
  41. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_lorawan.py +0 -0
  42. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_lorawan_api.py +0 -0
  43. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_mcp_auth.py +0 -0
  44. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_mcp_resources.py +0 -0
  45. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_mcp_server.py +0 -0
  46. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_meshtastic.py +0 -0
  47. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_modules.py +0 -0
  48. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_pin_solver.py +0 -0
  49. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_recommend.py +0 -0
  50. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_schema.py +0 -0
  51. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_schematics_gate.py +0 -0
  52. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_security_cors.py +0 -0
  53. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_seed_onboard.py +0 -0
  54. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_serve.py +0 -0
  55. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_strict.py +0 -0
  56. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_targets.py +0 -0
  57. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_tasmota.py +0 -0
  58. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_tools_add_bus.py +0 -0
  59. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_tools_solve_pins.py +0 -0
  60. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_validate.py +0 -0
  61. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_workbench.py +0 -0
  62. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_workbench_provision.py +0 -0
  63. {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_yaml_gen.py +0 -0
  64. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/__init__.py +0 -0
  65. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/agent.py +0 -0
  66. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/session.py +0 -0
  67. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/tools.py +0 -0
  68. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/__init__.py +0 -0
  69. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/__main__.py +0 -0
  70. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/app.py +0 -0
  71. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/circuitpython.py +0 -0
  72. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/meshtastic.py +0 -0
  73. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/schemas.py +0 -0
  74. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/serve.py +0 -0
  75. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/workbench.py +0 -0
  76. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/csp/__init__.py +0 -0
  77. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/csp/compatibility.py +0 -0
  78. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/csp/pin_solver.py +0 -0
  79. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/__init__.py +0 -0
  80. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/active.py +0 -0
  81. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/events.py +0 -0
  82. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/seed.py +0 -0
  83. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/store.py +0 -0
  84. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/enclosure/__init__.py +0 -0
  85. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/enclosure/openscad.py +0 -0
  86. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/enclosure/search.py +0 -0
  87. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/__init__.py +0 -0
  88. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/analog-node.json +0 -0
  89. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atom-echo.json +0 -0
  90. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atom-lite.json +0 -0
  91. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atom-matrix.json +0 -0
  92. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atoms3-lcd.json +0 -0
  93. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atoms3-lite.json +0 -0
  94. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atoms3-onboard.json +0 -0
  95. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atomu-onboard.json +0 -0
  96. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atomu.json +0 -0
  97. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/attic-logger.json +0 -0
  98. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/awning-control.json +0 -0
  99. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/bl0906-mainmeter.json +0 -0
  100. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/blind-stepper.json +0 -0
  101. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/bluemotion.json +0 -0
  102. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/bluesonoff.json +0 -0
  103. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/button-toggles-light.json +0 -0
  104. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/c3-supermini.json +0 -0
  105. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/c6-supermini.json +0 -0
  106. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/desk-climate.json +0 -0
  107. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/desk-matrix.json +0 -0
  108. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/distance-sensor.json +0 -0
  109. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/encoder-drives-stepper.json +0 -0
  110. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/esp32-audio.json +0 -0
  111. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/esp32cam-wrover.json +0 -0
  112. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/esp32cam.json +0 -0
  113. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/flow-meter.json +0 -0
  114. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/garage-motion.json +0 -0
  115. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/grill-probe.json +0 -0
  116. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/guarded-button-light.json +0 -0
  117. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/keypad.json +0 -0
  118. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/kitchen-scale.json +0 -0
  119. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/led-display.json +0 -0
  120. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/lorawan-battery-uplink.json +0 -0
  121. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/motion-turns-on-light.json +0 -0
  122. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/multi-temp.json +0 -0
  123. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/nextion-thermostat.json +0 -0
  124. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/oled-knob.json +0 -0
  125. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/oled.json +0 -0
  126. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/parking-distance.json +0 -0
  127. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/presence-rf.json +0 -0
  128. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/rc522.json +0 -0
  129. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/room-climate.json +0 -0
  130. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/rs485-energy.json +0 -0
  131. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/s3-devkitc.json +0 -0
  132. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/s3-supermini.json +0 -0
  133. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/securitypanel.json +0 -0
  134. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/smart-plug-v1.json +0 -0
  135. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/smart-plug.json +0 -0
  136. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/solder-fan.json +0 -0
  137. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/subghz-rfid.json +0 -0
  138. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/t-beam.json +0 -0
  139. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/temp-above-turns-on-fan.json +0 -0
  140. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/temp-turns-on-fan.json +0 -0
  141. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/tft-touch.json +0 -0
  142. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/ttgo-lora32.json +0 -0
  143. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/tuya-smart-plug.json +0 -0
  144. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/wasserpir.json +0 -0
  145. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/weather-station.json +0 -0
  146. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/wemosgps.json +0 -0
  147. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/xiao-grove-climate.json +0 -0
  148. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/fleet/__init__.py +0 -0
  149. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/__init__.py +0 -0
  150. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/__main__.py +0 -0
  151. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/ascii_gen.py +0 -0
  152. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/yaml_gen.py +0 -0
  153. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/intent.py +0 -0
  154. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/__init__.py +0 -0
  155. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/check.py +0 -0
  156. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/csv_io.py +0 -0
  157. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/store.py +0 -0
  158. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/__init__.py +0 -0
  159. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/__main__.py +0 -0
  160. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/check.py +0 -0
  161. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/client.py +0 -0
  162. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/__init__.py +0 -0
  163. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/fab.py +0 -0
  164. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/generator.py +0 -0
  165. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/import.py +0 -0
  166. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/importer.py +0 -0
  167. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/netlist.py +0 -0
  168. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/pcb.py +0 -0
  169. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/pcbnew_bridge.py +0 -0
  170. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/render.py +0 -0
  171. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/route.py +0 -0
  172. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/symbol_parser.py +0 -0
  173. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/__init__.py +0 -0
  174. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp01_1m.yaml +0 -0
  175. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-c3-devkitm-1.yaml +0 -0
  176. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-c3-supermini.yaml +0 -0
  177. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-c6-supermini.yaml +0 -0
  178. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-devkitc-v4.yaml +0 -0
  179. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-s3-devkitc-1.yaml +0 -0
  180. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-s3-supermini.yaml +0 -0
  181. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-wrover-cam.yaml +0 -0
  182. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32cam-ai-thinker.yaml +0 -0
  183. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp8285-1m.yaml +0 -0
  184. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v2.yaml +0 -0
  185. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v3.yaml +0 -0
  186. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v4.yaml +0 -0
  187. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atom-echo.yaml +0 -0
  188. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atom-matrix.yaml +0 -0
  189. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atom.yaml +0 -0
  190. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atoms3-lite.yaml +0 -0
  191. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atoms3.yaml +0 -0
  192. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atomu.yaml +0 -0
  193. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/nodemcu-32s.yaml +0 -0
  194. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/nodemcu-v2.yaml +0 -0
  195. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/seeed-xiao-esp32c3.yaml +0 -0
  196. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/ttgo-lora32-v1.yaml +0 -0
  197. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/ttgo-lora32-v2.yaml +0 -0
  198. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/ttgo-t-beam.yaml +0 -0
  199. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/wemos-d1-mini.yaml +0 -0
  200. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/adc.yaml +0 -0
  201. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ads1115.yaml +0 -0
  202. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ads1115_channel.yaml +0 -0
  203. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/aht10.yaml +0 -0
  204. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/apa102.yaml +0 -0
  205. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/axp192.yaml +0 -0
  206. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/battery_adc.yaml +0 -0
  207. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bh1750.yaml +0 -0
  208. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bl0906.yaml +0 -0
  209. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bme280.yaml +0 -0
  210. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bmp180.yaml +0 -0
  211. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bmp280.yaml +0 -0
  212. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/cc1101.yaml +0 -0
  213. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/cse7766.yaml +0 -0
  214. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/dht.yaml +0 -0
  215. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ds18b20.yaml +0 -0
  216. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/esp32_camera.yaml +0 -0
  217. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/esp32_rmt_led_strip.yaml +0 -0
  218. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/gpio_input.yaml +0 -0
  219. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/gpio_output.yaml +0 -0
  220. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/grove-aht20.yaml +0 -0
  221. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hc-sr04.yaml +0 -0
  222. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hc-sr501.yaml +0 -0
  223. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hlw8012.yaml +0 -0
  224. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/htu21d.yaml +0 -0
  225. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hx711.yaml +0 -0
  226. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/i2s_microphone.yaml +0 -0
  227. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ili9xxx.yaml +0 -0
  228. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/lcd_pcf8574.yaml +0 -0
  229. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ld2420.yaml +0 -0
  230. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/max31855.yaml +0 -0
  231. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/max7219.yaml +0 -0
  232. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/max98357a.yaml +0 -0
  233. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mcp23008.yaml +0 -0
  234. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mcp23017.yaml +0 -0
  235. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/modbus.yaml +0 -0
  236. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mpu6050.yaml +0 -0
  237. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mpu6886.yaml +0 -0
  238. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/nextion.yaml +0 -0
  239. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/pcf8574.yaml +0 -0
  240. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/potentiometer.yaml +0 -0
  241. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/pulse_counter.yaml +0 -0
  242. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/pwm_fan.yaml +0 -0
  243. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rc522.yaml +0 -0
  244. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rcwl-0516.yaml +0 -0
  245. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rdm6300.yaml +0 -0
  246. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/remote_transmitter.yaml +0 -0
  247. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rf_bridge.yaml +0 -0
  248. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rotary_encoder.yaml +0 -0
  249. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rtttl.yaml +0 -0
  250. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/sdm_meter.yaml +0 -0
  251. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/sht3xd.yaml +0 -0
  252. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ssd1306.yaml +0 -0
  253. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/st7789.yaml +0 -0
  254. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/sx127x.yaml +0 -0
  255. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tm1638.yaml +0 -0
  256. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tsl2561.yaml +0 -0
  257. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tuya.yaml +0 -0
  258. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tuya_sensor.yaml +0 -0
  259. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tuya_switch.yaml +0 -0
  260. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/uart_gps.yaml +0 -0
  261. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/uln2003.yaml +0 -0
  262. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/vl53l0x.yaml +0 -0
  263. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ws2812b.yaml +0 -0
  264. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/xpt2046.yaml +0 -0
  265. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/env-display.yaml +0 -0
  266. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/fan-controller.yaml +0 -0
  267. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/motion-light.yaml +0 -0
  268. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/oled-knob-13.yaml +0 -0
  269. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/relay-4ch.yaml +0 -0
  270. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/mcp/__init__.py +0 -0
  271. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/mcp/auth.py +0 -0
  272. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/mcp/server.py +0 -0
  273. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/model.py +0 -0
  274. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/recommend/__init__.py +0 -0
  275. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/recommend/recommender.py +0 -0
  276. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/schema/__init__.py +0 -0
  277. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/schema/design.schema.json +0 -0
  278. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/seed.py +0 -0
  279. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/__init__.py +0 -0
  280. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/base.py +0 -0
  281. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/build_backend.py +0 -0
  282. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/esphome.py +0 -0
  283. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/__init__.py +0 -0
  284. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/__main__.py +0 -0
  285. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/api.py +0 -0
  286. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/build_local.py +0 -0
  287. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/chirpstack.py +0 -0
  288. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/codec.py +0 -0
  289. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/compile.py +0 -0
  290. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/firmware_gen.py +0 -0
  291. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/templates/main.cpp.j2 +0 -0
  292. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/templates/platformio.ini.j2 +0 -0
  293. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/workbench_provision.py +0 -0
  294. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/tasmota.py +0 -0
  295. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/validate.py +0 -0
  296. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/workbench/__init__.py +0 -0
  297. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/workbench/client.py +0 -0
  298. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/workbench/serial.py +0 -0
  299. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/SOURCES.txt +0 -0
  300. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/dependency_links.txt +0 -0
  301. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/entry_points.txt +0 -0
  302. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/requires.txt +0 -0
  303. {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wirestudio
3
- Version: 0.26.2
3
+ Version: 0.26.3
4
4
  Summary: Agent-driven IoT device design tool that produces ESPHome YAML.
5
5
  Author: wirestudio contributors
6
6
  License: MIT
@@ -58,14 +58,18 @@ class FakeFleetAddon:
58
58
  method = req.method
59
59
 
60
60
  if method == "GET" and path == "/ui/api/targets":
61
+ # Shape verified against a live addon: a bare list whose
62
+ # entries key the filename as `target`. The previous fake
63
+ # returned {"filename", "name"}, which the client happened
64
+ # to read -- so an existence check that never matched
65
+ # anything still looked correct here.
61
66
  return httpx.Response(
62
67
  200,
63
- json={
64
- "targets": [
65
- {"filename": f, "name": f}
66
- for f in sorted(self.files.keys())
67
- ],
68
- },
68
+ json=[
69
+ {"target": f, "device_name": f.removesuffix(".yaml"),
70
+ "esp_type": "ESP32", "archived": False}
71
+ for f in sorted(self.files.keys())
72
+ ],
69
73
  )
70
74
 
71
75
  if method == "POST" and path == "/ui/api/targets":
@@ -790,3 +794,23 @@ async def test_get_firmware_reports_the_jobs_it_tried():
790
794
  fc = addon.make_client()
791
795
  with pytest.raises(FleetUnavailable, match="job"):
792
796
  await fc.get_firmware("run-1")
797
+
798
+
799
+ async def test_push_overwrites_an_existing_target():
800
+ """The addon keys its target list by `target`. Reading only `filename`
801
+ made the existence check always empty, so every push took the create
802
+ branch and re-pushing a device 400'd with 'already exists' -- you could
803
+ push a design once and never update it."""
804
+ addon = FakeFleetAddon()
805
+ addon.files["dev.yaml"] = "esphome:\n name: dev\n"
806
+ fc = addon.make_client()
807
+ await fc.push_device(device_name="dev", yaml="esphome:\n name: dev2\n")
808
+ assert addon.files["dev.yaml"] == "esphome:\n name: dev2\n"
809
+
810
+
811
+ async def test_push_creates_when_absent():
812
+ addon = FakeFleetAddon()
813
+ fc = addon.make_client()
814
+ res = await fc.push_device(device_name="fresh", yaml="esphome:\n name: fresh\n")
815
+ assert res.created is True
816
+ assert "fresh.yaml" in addon.files
@@ -1,3 +1,3 @@
1
1
  """wirestudio: design.json -> ESPHome YAML + ASCII diagram."""
2
2
 
3
- __version__ = "0.26.2"
3
+ __version__ = "0.26.3"
@@ -364,15 +364,19 @@ class FleetClient:
364
364
  f"list targets failed: http {resp.status_code} {resp.text}"
365
365
  )
366
366
  body = resp.json()
367
- # The addon returns either {"targets": [...]} with each entry a
368
- # dict ({"filename": "..."}) or a bare list -- accept both.
367
+ # The addon returns a bare list whose entries key the filename as
368
+ # `target`; older/other shapes use `filename` or `name`, or a plain
369
+ # string. Missing the real key here is not a cosmetic bug: the set
370
+ # comes back empty, every push looks like a create, and re-pushing
371
+ # an existing device fails with "already exists" instead of
372
+ # overwriting it.
369
373
  items = body.get("targets", body) if isinstance(body, dict) else body
370
374
  out: set[str] = set()
371
375
  for it in items or []:
372
376
  if isinstance(it, str):
373
377
  out.add(it)
374
378
  elif isinstance(it, dict):
375
- f = it.get("filename") or it.get("name")
379
+ f = it.get("target") or it.get("filename") or it.get("name")
376
380
  if isinstance(f, str):
377
381
  out.add(f)
378
382
  return out
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wirestudio
3
- Version: 0.26.2
3
+ Version: 0.26.3
4
4
  Summary: Agent-driven IoT device design tool that produces ESPHome YAML.
5
5
  Author: wirestudio contributors
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes