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.
- {wirestudio-0.26.2/wirestudio.egg-info → wirestudio-0.26.3}/PKG-INFO +1 -1
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_fleet.py +30 -6
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/__init__.py +1 -1
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/fleet/client.py +7 -3
- {wirestudio-0.26.2 → wirestudio-0.26.3/wirestudio.egg-info}/PKG-INFO +1 -1
- {wirestudio-0.26.2 → wirestudio-0.26.3}/LICENSE +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/README.md +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/pyproject.toml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/setup.cfg +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_active_design.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_agent.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_agent_stream.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_api.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_api_route.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_ascii_gen.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_build_backend.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_chirpstack.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_circuitpython.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_codec.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_compatibility.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_compile.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_coverage_baseline.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_design_events.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_designs.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_designs_seed.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_enclosure.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_enclosure_gate.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_enclosure_search.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_firmware_gen.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_footprints.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_intent.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_inventory.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_jlcpcb.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_fab.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_import.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_pcb.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_render.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_kicad_route.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_library_rtttl.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_lorawan.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_lorawan_api.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_mcp_auth.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_mcp_resources.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_mcp_server.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_meshtastic.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_modules.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_pin_solver.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_recommend.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_schema.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_schematics_gate.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_security_cors.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_seed_onboard.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_serve.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_strict.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_targets.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_tasmota.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_tools_add_bus.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_tools_solve_pins.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_validate.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_workbench.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_workbench_provision.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/tests/test_yaml_gen.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/agent.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/session.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/agent/tools.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/__main__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/app.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/circuitpython.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/meshtastic.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/schemas.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/serve.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/api/workbench.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/csp/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/csp/compatibility.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/csp/pin_solver.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/active.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/events.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/seed.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/designs/store.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/enclosure/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/enclosure/openscad.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/enclosure/search.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/analog-node.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atom-echo.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atom-lite.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atom-matrix.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atoms3-lcd.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atoms3-lite.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atoms3-onboard.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atomu-onboard.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/atomu.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/attic-logger.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/awning-control.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/bl0906-mainmeter.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/blind-stepper.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/bluemotion.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/bluesonoff.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/button-toggles-light.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/c3-supermini.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/c6-supermini.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/desk-climate.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/desk-matrix.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/distance-sensor.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/encoder-drives-stepper.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/esp32-audio.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/esp32cam-wrover.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/esp32cam.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/flow-meter.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/garage-motion.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/grill-probe.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/guarded-button-light.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/keypad.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/kitchen-scale.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/led-display.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/lorawan-battery-uplink.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/motion-turns-on-light.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/multi-temp.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/nextion-thermostat.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/oled-knob.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/oled.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/parking-distance.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/presence-rf.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/rc522.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/room-climate.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/rs485-energy.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/s3-devkitc.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/s3-supermini.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/securitypanel.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/smart-plug-v1.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/smart-plug.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/solder-fan.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/subghz-rfid.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/t-beam.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/temp-above-turns-on-fan.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/temp-turns-on-fan.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/tft-touch.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/ttgo-lora32.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/tuya-smart-plug.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/wasserpir.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/weather-station.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/wemosgps.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/examples/xiao-grove-climate.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/fleet/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/__main__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/ascii_gen.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/generate/yaml_gen.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/intent.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/check.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/csv_io.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/inventory/store.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/__main__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/check.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/jlcpcb/client.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/fab.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/generator.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/import.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/importer.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/netlist.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/pcb.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/pcbnew_bridge.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/render.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/route.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/kicad/symbol_parser.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp01_1m.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-c3-devkitm-1.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-c3-supermini.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-c6-supermini.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-devkitc-v4.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-s3-devkitc-1.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-s3-supermini.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32-wrover-cam.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp32cam-ai-thinker.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/esp8285-1m.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v2.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v3.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v4.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atom-echo.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atom-matrix.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atom.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atoms3-lite.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atoms3.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/m5stack-atomu.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/nodemcu-32s.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/nodemcu-v2.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/seeed-xiao-esp32c3.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/ttgo-lora32-v1.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/ttgo-lora32-v2.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/ttgo-t-beam.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/wemos-d1-mini.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/adc.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ads1115.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ads1115_channel.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/aht10.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/apa102.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/axp192.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/battery_adc.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bh1750.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bl0906.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bme280.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bmp180.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/bmp280.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/cc1101.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/cse7766.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/dht.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ds18b20.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/esp32_camera.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/esp32_rmt_led_strip.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/gpio_input.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/gpio_output.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/grove-aht20.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hc-sr04.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hc-sr501.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hlw8012.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/htu21d.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/hx711.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/i2s_microphone.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ili9xxx.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/lcd_pcf8574.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ld2420.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/max31855.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/max7219.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/max98357a.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mcp23008.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mcp23017.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/modbus.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mpu6050.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/mpu6886.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/nextion.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/pcf8574.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/potentiometer.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/pulse_counter.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/pwm_fan.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rc522.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rcwl-0516.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rdm6300.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/remote_transmitter.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rf_bridge.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rotary_encoder.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/rtttl.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/sdm_meter.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/sht3xd.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ssd1306.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/st7789.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/sx127x.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tm1638.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tsl2561.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tuya.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tuya_sensor.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/tuya_switch.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/uart_gps.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/uln2003.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/vl53l0x.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/ws2812b.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/components/xpt2046.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/env-display.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/fan-controller.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/motion-light.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/oled-knob-13.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/modules/relay-4ch.yaml +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/mcp/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/mcp/auth.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/mcp/server.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/model.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/recommend/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/recommend/recommender.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/schema/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/schema/design.schema.json +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/seed.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/base.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/build_backend.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/esphome.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/__main__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/api.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/build_local.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/chirpstack.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/codec.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/compile.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/firmware_gen.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/templates/main.cpp.j2 +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/templates/platformio.ini.j2 +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/lorawan/workbench_provision.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/targets/tasmota.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/validate.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/workbench/__init__.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/workbench/client.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/workbench/serial.py +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/SOURCES.txt +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/dependency_links.txt +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/entry_points.txt +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/requires.txt +0 -0
- {wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio.egg-info/top_level.txt +0 -0
|
@@ -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
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
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
|
|
@@ -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
|
|
368
|
-
#
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v2.yaml
RENAMED
|
File without changes
|
{wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v3.yaml
RENAMED
|
File without changes
|
{wirestudio-0.26.2 → wirestudio-0.26.3}/wirestudio/library/boards/heltec-wifi-lora32-v4.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|