atopile 0.3.7.dev0__tar.gz → 0.3.9.dev0__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 (749) hide show
  1. atopile-0.3.9.dev0/.cursorrules +18 -0
  2. atopile-0.3.7.dev0/.github/workflows/wheels.yml → atopile-0.3.9.dev0/.github/workflows/deploy.yml +64 -3
  3. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/workflows/pre-commit.yml +4 -0
  4. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/workflows/pytest.yml +30 -2
  5. atopile-0.3.9.dev0/.github/workflows/website.yml +66 -0
  6. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/PKG-INFO +3 -2
  7. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/dockerfiles/Dockerfile.kicad +2 -2
  8. atopile-0.3.9.dev0/docs/CHANGELOG.md +28 -0
  9. atopile-0.3.9.dev0/docs/CNAME +1 -0
  10. atopile-0.3.9.dev0/docs/assets/images/cell-sim.png +0 -0
  11. atopile-0.3.9.dev0/docs/assets/images/quickstart-layout.png +0 -0
  12. atopile-0.3.9.dev0/docs/assets/images/spin-showing-off-the-very-goods.jpg +0 -0
  13. atopile-0.3.9.dev0/docs/assets/logo/emblem-white.svg +20 -0
  14. atopile-0.3.9.dev0/docs/development.md +31 -0
  15. atopile-0.3.9.dev0/docs/guides/faebryk.md +24 -0
  16. atopile-0.3.9.dev0/docs/guides/git.md +50 -0
  17. atopile-0.3.9.dev0/docs/guides/installation.md +38 -0
  18. atopile-0.3.9.dev0/docs/index.md +62 -0
  19. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/home.html +1 -1
  20. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/main.html +11 -3
  21. atopile-0.3.9.dev0/docs/quickstart.md +152 -0
  22. atopile-0.3.9.dev0/docs/reference/attributes.md +23 -0
  23. atopile-0.3.9.dev0/docs/reference/config.md +93 -0
  24. atopile-0.3.9.dev0/docs/stylesheets/extra.css +240 -0
  25. atopile-0.3.7.dev0/docs/maths.md → atopile-0.3.9.dev0/docs/tutorial/the-ato-language.md +73 -29
  26. atopile-0.3.9.dev0/examples/ch1_1_ato.ato +16 -0
  27. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_1_fab.py +2 -2
  28. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/mkdocs.yml +28 -36
  29. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/pyproject.toml +8 -8
  30. atopile-0.3.7.dev0/src/atopile/_shim.py → atopile-0.3.9.dev0/src/atopile/attributes.py +243 -74
  31. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/buildutil.py +116 -92
  32. atopile-0.3.9.dev0/src/atopile/cli/build.py +174 -0
  33. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/cli.py +24 -0
  34. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/create.py +291 -38
  35. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/install.py +57 -99
  36. atopile-0.3.9.dev0/src/atopile/config.py +882 -0
  37. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/errors.py +12 -0
  38. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/front_end.py +130 -51
  39. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/layout.py +20 -14
  40. atopile-0.3.9.dev0/src/atopile/packages/C_0201_0603Metric.kicad_mod +197 -0
  41. atopile-0.3.9.dev0/src/atopile/packages/C_0402_1005Metric.kicad_mod +203 -0
  42. atopile-0.3.9.dev0/src/atopile/packages/C_0603_1608Metric.kicad_mod +203 -0
  43. atopile-0.3.9.dev0/src/atopile/packages/C_0805_2012Metric.kicad_mod +203 -0
  44. atopile-0.3.9.dev0/src/atopile/packages/L_0201_0603Metric.kicad_mod +197 -0
  45. atopile-0.3.9.dev0/src/atopile/packages/L_0402_1005Metric.kicad_mod +183 -0
  46. atopile-0.3.9.dev0/src/atopile/packages/L_0603_1608Metric.kicad_mod +203 -0
  47. atopile-0.3.9.dev0/src/atopile/packages/L_0805_2012Metric.kicad_mod +203 -0
  48. atopile-0.3.9.dev0/src/atopile/packages/R_0201_0603Metric.kicad_mod +197 -0
  49. atopile-0.3.9.dev0/src/atopile/packages/R_0402_1005Metric.kicad_mod +203 -0
  50. atopile-0.3.9.dev0/src/atopile/packages/R_0603_1608Metric.kicad_mod +203 -0
  51. atopile-0.3.9.dev0/src/atopile/packages/R_0805_2012Metric.kicad_mod +203 -0
  52. atopile-0.3.9.dev0/src/atopile/packages/__init__.py +20 -0
  53. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/moduleinterface.py +1 -1
  54. atopile-0.3.9.dev0/src/faebryk/core/solver/__init__.py +0 -0
  55. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/trait.py +8 -4
  56. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/netlist/graph.py +24 -77
  57. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/netlist/kicad/netlist_kicad.py +26 -0
  58. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/netlist/netlist.py +1 -1
  59. atopile-0.3.9.dev0/src/faebryk/exporters/pcb/kicad/pcb.py +73 -0
  60. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/kicad/transformer.py +697 -57
  61. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/heuristic_decoupling.py +5 -4
  62. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/schematic/kicad/transformer.py +3 -3
  63. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Analog_Devices_ADM2587EBRWZ.py +1 -1
  64. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/B0505S_1WR3.py +1 -1
  65. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/B4B_ZR_SM4_TF.py +1 -1
  66. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/BH1750FVI_TR.py +1 -1
  67. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/BJT.py +1 -1
  68. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Button.py +1 -1
  69. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ButtonCell.py +1 -1
  70. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CBM9002A_56ILG.py +1 -1
  71. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH340x.py +1 -3
  72. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH342.py +1 -1
  73. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH342F.py +2 -2
  74. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH344.py +1 -4
  75. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH344Q_ReferenceDesign.py +2 -0
  76. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Capacitor.py +2 -2
  77. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Common_Mode_Filter.py +1 -1
  78. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Comparator.py +1 -1
  79. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Crystal.py +1 -3
  80. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/DE9Connector.py +1 -1
  81. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Diode.py +1 -1
  82. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Diodes_Incorporated_AP255x_x.py +1 -1
  83. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/EEPROM.py +1 -1
  84. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ESP32_C3.py +1 -1
  85. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ESP32_C3_MINI_1.py +1 -1
  86. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ElecSuper_PSM712_ES.py +1 -1
  87. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/EnablePin.py +3 -2
  88. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Fuse.py +1 -1
  89. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/GDT.py +1 -1
  90. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/HLK_LD2410B_P.py +1 -1
  91. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Header.py +1 -1
  92. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/INA228.py +1 -1
  93. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ISO1540.py +1 -1
  94. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Inductor.py +1 -1
  95. atopile-0.3.9.dev0/src/faebryk/library/KicadFootprint.py +83 -0
  96. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/LDO.py +3 -3
  97. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Logic74xx.py +1 -3
  98. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/M24C08_FMN6TP.py +1 -1
  99. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/MCP2221A.py +1 -1
  100. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ME6211C33M5G_N.py +1 -1
  101. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/MOSFET.py +1 -1
  102. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Mounting_Hole.py +6 -5
  103. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Net.py +6 -2
  104. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/OLED_Module.py +1 -1
  105. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/OpAmp.py +1 -1
  106. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PANASONIC_AQY212EHAX.py +1 -1
  107. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PJ398SM.py +1 -1
  108. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/QWIIC_Connector.py +1 -1
  109. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RJ45_Receptacle.py +1 -1
  110. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RP2040.py +1 -1
  111. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RP2040_ReferenceDesign.py +7 -6
  112. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RaspberryPiPico.py +1 -1
  113. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RaspberryPiPicoBase_ReferenceDesign.py +11 -5
  114. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Relay.py +1 -1
  115. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Resistor.py +1 -1
  116. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SCD40.py +1 -1
  117. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SK6812.py +1 -1
  118. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SK9822_EC20.py +1 -1
  119. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SNx4LVC541A.py +1 -1
  120. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SP3243E.py +1 -1
  121. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SPIFlash.py +1 -1
  122. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SWDConnector.py +1 -1
  123. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Shenzhen_Kinghelm_Elec_KH_BNC75_3511.py +1 -1
  124. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Switch.py +1 -1
  125. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TD541S485H.py +1 -1
  126. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TPS2116.py +1 -1
  127. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TXS0102DCUR.py +1 -1
  128. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/UART_RS485.py +1 -1
  129. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB2514B.py +1 -1
  130. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB2_0_ESD_Protection.py +1 -1
  131. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB3_connector.py +1 -1
  132. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USBLC6_2P6.py +1 -1
  133. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_Type_C_Receptacle_14_pin_Vertical.py +1 -1
  134. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_Type_C_Receptacle_16_pin.py +1 -1
  135. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_Type_C_Receptacle_24_pin.py +1 -1
  136. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/WCHJiangsu_Qin_Heng_CH224K.py +3 -2
  137. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/WCHJiangsu_Qin_Heng_CH224K_ReferenceDesign.py +2 -2
  138. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Winbond_Elec_W25Q128JVSIQ.py +1 -1
  139. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Wuxi_I_core_Elec_AiP74LVC1T45GB236_TR.py +1 -1
  140. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/XL_3528RGBW_WS2812B.py +1 -1
  141. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/_F.py +10 -11
  142. atopile-0.3.7.dev0/src/faebryk/library/has_designator_defined.py → atopile-0.3.9.dev0/src/faebryk/library/has_designator.py +2 -2
  143. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_designator_prefix.py +71 -4
  144. atopile-0.3.9.dev0/src/faebryk/library/has_footprint_impl.py +22 -0
  145. atopile-0.3.9.dev0/src/faebryk/library/has_package.py +114 -0
  146. atopile-0.3.9.dev0/src/faebryk/library/has_package_requirement.py +25 -0
  147. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/pf_533984002.py +1 -1
  148. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/pf_74AHCT2G125.py +1 -1
  149. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/app/designators.py +9 -24
  150. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/app/pcb.py +100 -80
  151. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/fileformats.py +14 -15
  152. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/picker/api/api.py +24 -29
  153. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/picker/api/models.py +12 -18
  154. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/picker/api/picker_lib.py +7 -7
  155. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/picker/lcsc.py +33 -24
  156. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/picker/picker.py +1 -1
  157. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/util.py +29 -10
  158. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/tools/main.py +0 -2
  159. atopile-0.3.9.dev0/test/conftest.py +33 -0
  160. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/solver/test_solver.py +1 -0
  161. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_performance.py +3 -0
  162. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/exporters/netlist/kicad/test_netlist_kicad.py +8 -6
  163. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/front_end/test_front_end.py +29 -20
  164. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/front_end/test_front_end_pick.py +4 -11
  165. atopile-0.3.9.dev0/test/library/test_names.py +34 -0
  166. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/picker/components.py +18 -21
  167. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/picker/test_pickers.py +10 -4
  168. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_lcsc.py +4 -1
  169. atopile-0.3.9.dev0/test/libs/util/test_yield_missing.py +29 -0
  170. atopile-0.3.9.dev0/test/test_config.py +65 -0
  171. atopile-0.3.9.dev0/test/test_create.py +63 -0
  172. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_errors.py +5 -8
  173. atopile-0.3.9.dev0/test/test_examples.py +67 -0
  174. atopile-0.3.9.dev0/test/test_packages.py +51 -0
  175. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_parse_utils.py +2 -5
  176. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_regressions.py +3 -32
  177. atopile-0.3.9.dev0/tools/atopile_mkdocs_plugin/plugin.py +42 -0
  178. atopile-0.3.9.dev0/tools/atopile_mkdocs_plugin/pyproject.toml +19 -0
  179. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/uv.lock +370 -19
  180. atopile-0.3.7.dev0/.github/workflows/cd.yml +0 -124
  181. atopile-0.3.7.dev0/.github/workflows/website.yml +0 -40
  182. atopile-0.3.7.dev0/docs/CNAME +0 -1
  183. atopile-0.3.7.dev0/docs/api/solver.md +0 -8
  184. atopile-0.3.7.dev0/docs/assets/images/assertion-checks-2.png +0 -0
  185. atopile-0.3.7.dev0/docs/assets/images/assertion-checks.png +0 -0
  186. atopile-0.3.7.dev0/docs/assets/images/assertion-solver.png +0 -0
  187. atopile-0.3.7.dev0/docs/assets/images/block_diagram_example.png +0 -0
  188. atopile-0.3.7.dev0/docs/assets/images/buck_ic.png +0 -0
  189. atopile-0.3.7.dev0/docs/assets/images/buck_topology.png +0 -0
  190. atopile-0.3.7.dev0/docs/assets/images/capacitor_definition.png +0 -0
  191. atopile-0.3.7.dev0/docs/assets/images/ci-generated-gerbers-githash.png +0 -0
  192. atopile-0.3.7.dev0/docs/assets/images/ci-generated-gerbers.avif +0 -0
  193. atopile-0.3.7.dev0/docs/assets/images/ci-generated-gerbers.gif +0 -0
  194. atopile-0.3.7.dev0/docs/assets/images/cloud_bom.png +0 -0
  195. atopile-0.3.7.dev0/docs/assets/images/code-layout-pcb.png +0 -0
  196. atopile-0.3.7.dev0/docs/assets/images/code-loading.png +0 -0
  197. atopile-0.3.7.dev0/docs/assets/images/equation-preview.gif +0 -0
  198. atopile-0.3.7.dev0/docs/assets/images/extension-python-setup.gif +0 -0
  199. atopile-0.3.7.dev0/docs/assets/images/file-import.png +0 -0
  200. atopile-0.3.7.dev0/docs/assets/images/footprints.png +0 -0
  201. atopile-0.3.7.dev0/docs/assets/images/groups.png +0 -0
  202. atopile-0.3.7.dev0/docs/assets/images/import-settings.png +0 -0
  203. atopile-0.3.7.dev0/docs/assets/images/ldo-demo.png +0 -0
  204. atopile-0.3.7.dev0/docs/assets/images/mosfet.png +0 -0
  205. atopile-0.3.7.dev0/docs/assets/images/schematic_example.png +0 -0
  206. atopile-0.3.7.dev0/docs/assets/images/swoop-block-diagram.png +0 -0
  207. atopile-0.3.7.dev0/docs/assets/images/swoop-bringup.png +0 -0
  208. atopile-0.3.7.dev0/docs/assets/images/swoop.png +0 -0
  209. atopile-0.3.7.dev0/docs/blog/.authors.yml +0 -16
  210. atopile-0.3.7.dev0/docs/blog/index.md +0 -2
  211. atopile-0.3.7.dev0/docs/blog/posts/assertions.md +0 -34
  212. atopile-0.3.7.dev0/docs/blog/posts/ci-generated-gerbers.md +0 -30
  213. atopile-0.3.7.dev0/docs/blog/posts/cloud_components.md +0 -69
  214. atopile-0.3.7.dev0/docs/blog/posts/dsl.md +0 -27
  215. atopile-0.3.7.dev0/docs/blog/posts/layout-reuse-2.md +0 -22
  216. atopile-0.3.7.dev0/docs/blog/posts/layout-reuse.md +0 -30
  217. atopile-0.3.7.dev0/docs/blog/posts/matts-story.md +0 -24
  218. atopile-0.3.7.dev0/docs/blog/posts/narayans-story.md +0 -44
  219. atopile-0.3.7.dev0/docs/blog/posts/traits.md +0 -111
  220. atopile-0.3.7.dev0/docs/building.md +0 -55
  221. atopile-0.3.7.dev0/docs/ci.md +0 -16
  222. atopile-0.3.7.dev0/docs/class.md +0 -88
  223. atopile-0.3.7.dev0/docs/component_selection.md +0 -22
  224. atopile-0.3.7.dev0/docs/config.md +0 -67
  225. atopile-0.3.7.dev0/docs/connect.md +0 -5
  226. atopile-0.3.7.dev0/docs/development.md +0 -66
  227. atopile-0.3.7.dev0/docs/doc-strings.md +0 -13
  228. atopile-0.3.7.dev0/docs/first_project.md +0 -86
  229. atopile-0.3.7.dev0/docs/git.md +0 -47
  230. atopile-0.3.7.dev0/docs/how-to.md +0 -82
  231. atopile-0.3.7.dev0/docs/import.md +0 -16
  232. atopile-0.3.7.dev0/docs/index.md +0 -144
  233. atopile-0.3.7.dev0/docs/install.md +0 -100
  234. atopile-0.3.7.dev0/docs/kicad.md +0 -80
  235. atopile-0.3.7.dev0/docs/overrides/assets/stylesheets/custom.css +0 -570
  236. atopile-0.3.7.dev0/docs/roadmap.md +0 -60
  237. atopile-0.3.7.dev0/docs/types.md +0 -118
  238. atopile-0.3.7.dev0/docs/view.md +0 -84
  239. atopile-0.3.7.dev0/docs/yc-hardware-meetup.md +0 -22
  240. atopile-0.3.7.dev0/examples/ch1_1_ato.ato +0 -14
  241. atopile-0.3.7.dev0/examples/ch1_2_ldo_demo.ato +0 -88
  242. atopile-0.3.7.dev0/src/atopile/cli/build.py +0 -169
  243. atopile-0.3.7.dev0/src/atopile/cli/common.py +0 -221
  244. atopile-0.3.7.dev0/src/atopile/config.py +0 -483
  245. atopile-0.3.7.dev0/src/faebryk/exporters/pcb/kicad/pcb.py +0 -453
  246. atopile-0.3.7.dev0/src/faebryk/library/KicadFootprint.py +0 -36
  247. atopile-0.3.7.dev0/src/faebryk/library/has_designator.py +0 -11
  248. atopile-0.3.7.dev0/src/faebryk/library/has_designator_prefix_defined.py +0 -13
  249. atopile-0.3.7.dev0/src/faebryk/library/has_footprint_impl.py +0 -14
  250. atopile-0.3.7.dev0/src/faebryk/library/has_package_requirement.py +0 -15
  251. atopile-0.3.7.dev0/src/faebryk/tools/libadd.py +0 -395
  252. atopile-0.3.7.dev0/test/conftest.py +0 -13
  253. atopile-0.3.7.dev0/test/library/test_names.py +0 -28
  254. atopile-0.3.7.dev0/test/test_config.py +0 -45
  255. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.git-blame-ignore-revs +0 -0
  256. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.gitattributes +0 -0
  257. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/CODEOWNERS +0 -0
  258. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  259. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  260. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  261. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/dependabot.yml +0 -0
  262. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/pull_request_template.md +0 -0
  263. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/workflows/regression.yml +0 -0
  264. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.github/workflows/vsx.yml +0 -0
  265. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.gitignore +0 -0
  266. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.gitmodules +0 -0
  267. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.pre-commit-config.yaml +0 -0
  268. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.vscode/extensions.json +0 -0
  269. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.vscode/launch.shared.json +0 -0
  270. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.vscode/settings.shared.json +0 -0
  271. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/.vscode/tasks.shared.json +0 -0
  272. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/LICENSE +0 -0
  273. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/README.md +0 -0
  274. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/atopile-custom-words.txt +0 -0
  275. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/cspell.json +0 -0
  276. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/dockerfiles/README.md +0 -0
  277. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/CODE_OF_CONDUCT.md +0 -0
  278. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/CODING_GUIDELINES.md +0 -0
  279. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/CONTRIBUTING.md +0 -0
  280. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/api/cli.md +0 -0
  281. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/ato_extension.png +0 -0
  282. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/debugger-vscode.png +0 -0
  283. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/discord-qr.png +0 -0
  284. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/download.png +0 -0
  285. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/kicad_buttons.png +0 -0
  286. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/placement-reuse.avif +0 -0
  287. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/placement-reuse.gif +0 -0
  288. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/reload.png +0 -0
  289. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/slice.png +0 -0
  290. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/slow-to-fast-hq.gif +0 -0
  291. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/trace-reuse.avif +0 -0
  292. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/trace-reuse.gif +0 -0
  293. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/images/upload.png +0 -0
  294. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/logo/ato_logo_256x256.png +0 -0
  295. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/logo/ato_logo_32x32.png +0 -0
  296. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/logo/emblem.svg +0 -0
  297. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/logo/faebryk_logo.png +0 -0
  298. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/logo/logo-with-text-dark.png +0 -0
  299. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/assets/logo/logo-with-text.png +0 -0
  300. /atopile-0.3.7.dev0/src/atopile/__init__.py → /atopile-0.3.9.dev0/docs/guides/best-practices.md +0 -0
  301. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-Black.ttf +0 -0
  302. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-Bold.ttf +0 -0
  303. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-ExtraBold.ttf +0 -0
  304. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-ExtraLight.ttf +0 -0
  305. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-Light.ttf +0 -0
  306. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-Medium.ttf +0 -0
  307. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-Regular.ttf +0 -0
  308. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/Inconsolata-SemiBold.ttf +0 -0
  309. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/SpaceMono-Bold.ttf +0 -0
  310. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/SpaceMono-BoldItalic.ttf +0 -0
  311. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/SpaceMono-Italic.ttf +0 -0
  312. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/SpaceMono-Regular.ttf +0 -0
  313. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/assets/javascripts/custom.129bd6ad.min.js +0 -0
  314. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/assets/javascripts/custom.129bd6ad.min.js.map +0 -0
  315. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/assets/javascripts/iconsearch_index.json +0 -0
  316. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/hooks/shortcodes.py +0 -0
  317. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/hooks/translations.html +0 -0
  318. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/overrides/hooks/translations.py +0 -0
  319. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/spin.md +0 -0
  320. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/docs/swoop.md +0 -0
  321. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/.ato/modules/generics/README.md +0 -0
  322. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/.ato/modules/generics/capacitors.ato +0 -0
  323. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/.ato/modules/generics/resistors.ato +0 -0
  324. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/.gitignore +0 -0
  325. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/README.md +0 -0
  326. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ato.yaml +0 -0
  327. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_2_minimal_led.py +0 -0
  328. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_3_minimal_led_explicit_parts.py +0 -0
  329. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_4_maximal_led.py +0 -0
  330. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_5_signal_processing.py +0 -0
  331. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_6_route.py +0 -0
  332. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_7_pcb_layout.py +0 -0
  333. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_8_mcu.py +0 -0
  334. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/ch2_9_iterative_design_nand.py +0 -0
  335. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/layout/ato/fp-lib-table +0 -0
  336. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/layout/ato/pcb.kicad_pcb +0 -0
  337. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/layout/ato/pcb.kicad_pro +0 -0
  338. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/layout/fab/fp-lib-table +0 -0
  339. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/layout/fab/pcb.kicad_pcb +0 -0
  340. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/examples/layout/fab/pcb.kicad_pro +0 -0
  341. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/scripts/attach_license.py +0 -0
  342. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/scripts/clean_issues.py +0 -0
  343. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/scripts/find_duplicate_test_files.sh +0 -0
  344. {atopile-0.3.7.dev0/src/atopile/cli → atopile-0.3.9.dev0/src/atopile}/__init__.py +0 -0
  345. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/__main__.py +0 -0
  346. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/address.py +0 -0
  347. {atopile-0.3.7.dev0/src/faebryk → atopile-0.3.9.dev0/src/atopile/cli}/__init__.py +0 -0
  348. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/configure.py +0 -0
  349. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/console.py +0 -0
  350. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/excepthook.py +0 -0
  351. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/inspect.py +0 -0
  352. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/logging.py +0 -0
  353. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/cli/view.py +0 -0
  354. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/datatypes.py +0 -0
  355. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/.gitignore +0 -0
  356. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/README.md +0 -0
  357. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/__init__.py +0 -0
  358. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/buttons.svg +0 -0
  359. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/common.py +0 -0
  360. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/download.png +0 -0
  361. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/pullgroup.py +0 -0
  362. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/pushgroup.py +0 -0
  363. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/reload.png +0 -0
  364. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/reloadgroup.py +0 -0
  365. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/kicad_plugin/upload.png +0 -0
  366. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parse.py +0 -0
  367. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parse_utils.py +0 -0
  368. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/.gitignore +0 -0
  369. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoLexer.g4 +0 -0
  370. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoLexer.interp +0 -0
  371. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoLexer.py +0 -0
  372. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoLexer.tokens +0 -0
  373. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoLexerBase.py +0 -0
  374. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoParser.g4 +0 -0
  375. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoParser.interp +0 -0
  376. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoParser.py +0 -0
  377. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoParser.tokens +0 -0
  378. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoParserBase.py +0 -0
  379. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/AtoParserVisitor.py +0 -0
  380. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/README.md +0 -0
  381. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/__init__.py +0 -0
  382. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/parser/build.sh +0 -0
  383. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/telemetry.py +0 -0
  384. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/atopile/version.py +0 -0
  385. {atopile-0.3.7.dev0/src/faebryk/core → atopile-0.3.9.dev0/src/faebryk}/__init__.py +0 -0
  386. {atopile-0.3.7.dev0/src/faebryk/core/solver → atopile-0.3.9.dev0/src/faebryk/core}/__init__.py +0 -0
  387. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/core.py +0 -0
  388. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/.clang-format +0 -0
  389. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/CMakeLists.txt +0 -0
  390. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/__init__.py +0 -0
  391. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/__init__.pyi +0 -0
  392. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/cpp_helpers.py +0 -0
  393. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/graph/graph.hpp +0 -0
  394. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/graph/graphinterfaces.hpp +0 -0
  395. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/graph/links.hpp +0 -0
  396. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/nano.hpp +0 -0
  397. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/pathfinder/bfs.hpp +0 -0
  398. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/pathfinder/pathcounter.hpp +0 -0
  399. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/pathfinder/pathfinder.hpp +0 -0
  400. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/perf.hpp +0 -0
  401. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/pyutil.hpp +0 -0
  402. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/include/util.hpp +0 -0
  403. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/graph.cpp +0 -0
  404. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/graphinterface.cpp +0 -0
  405. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/graphinterfaces.cpp +0 -0
  406. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/link.cpp +0 -0
  407. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/links.cpp +0 -0
  408. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/node.cpp +0 -0
  409. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/path.cpp +0 -0
  410. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/graph/type.cpp +0 -0
  411. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/main.cpp +0 -0
  412. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/pathfinder/bfs.cpp +0 -0
  413. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/pathfinder/pathcounter.cpp +0 -0
  414. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/pathfinder/pathfinder.cpp +0 -0
  415. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/cpp/src/perf.cpp +0 -0
  416. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/graph.py +0 -0
  417. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/graphinterface.py +0 -0
  418. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/link.py +0 -0
  419. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/module.py +0 -0
  420. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/node.py +0 -0
  421. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/parameter.py +0 -0
  422. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/pathfinder.py +0 -0
  423. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/reference.py +0 -0
  424. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/solver/analytical.py +0 -0
  425. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/solver/canonical.py +0 -0
  426. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/solver/defaultsolver.py +0 -0
  427. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/solver/literal_folding.py +0 -0
  428. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/solver/solver.py +0 -0
  429. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/core/solver/utils.py +0 -0
  430. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/bom/jlcpcb.py +0 -0
  431. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/documentation/datasheets.py +0 -0
  432. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/esphome/esphome.py +0 -0
  433. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/parameters/parameters_to_file.py +0 -0
  434. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/kicad/artifacts.py +0 -0
  435. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/absolute.py +0 -0
  436. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/extrude.py +0 -0
  437. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/font.py +0 -0
  438. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/heuristic_pulls.py +0 -0
  439. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/layout.py +0 -0
  440. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/matrix.py +0 -0
  441. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/next_to.py +0 -0
  442. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/next_to_pin.py +0 -0
  443. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/layout/typehierarchy.py +0 -0
  444. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/pick_and_place/jlcpcb.py +0 -0
  445. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/pcb/routing/util.py +0 -0
  446. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/project/faebryk/project_faebryk.py +0 -0
  447. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/visualize/interactive_graph.py +0 -0
  448. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/visualize/interactive_params.py +0 -0
  449. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/visualize/interactive_params_base.py +0 -0
  450. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/exporters/visualize/util.py +0 -0
  451. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/importers/netlist/kicad/netlist_kicad.py +0 -0
  452. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Analog_Devices_ADM2587EBRWZ_ReferenceDesign.py +0 -0
  453. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Battery.py +0 -0
  454. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CBM9002A_56ILG_ReferenceDesign.py +0 -0
  455. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CD4011.py +0 -0
  456. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH342F_ReferenceDesign.py +0 -0
  457. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH342K.py +0 -0
  458. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH342K_ReferenceDesign.py +0 -0
  459. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/CH344Q.py +0 -0
  460. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Crystal_Oscillator.py +0 -0
  461. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/DE9RS232Connector.py +0 -0
  462. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/DIP.py +0 -0
  463. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/DifferentialPair.py +0 -0
  464. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Diodes_Incorporated_AP2552W6_7.py +0 -0
  465. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Diodes_Incorporated_AP2553W6_7.py +0 -0
  466. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ESP32_C3_MINI_1_ReferenceDesign.py +0 -0
  467. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ElectricLogic.py +0 -0
  468. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ElectricLogicGate.py +0 -0
  469. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ElectricLogicGates.py +0 -0
  470. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ElectricPower.py +0 -0
  471. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Electrical.py +0 -0
  472. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Ethernet.py +0 -0
  473. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Fan.py +0 -0
  474. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Filter.py +0 -0
  475. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/FilterElectricalLC.py +0 -0
  476. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/FilterElectricalRC.py +0 -0
  477. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Footprint.py +0 -0
  478. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/GenericBusProtection.py +0 -0
  479. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/HDMI.py +0 -0
  480. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/I2C.py +0 -0
  481. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/I2S.py +0 -0
  482. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/INA228_ReferenceDesign.py +0 -0
  483. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ISO1540_ReferenceDesign.py +0 -0
  484. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/JTAG.py +0 -0
  485. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/LED.py +0 -0
  486. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/LEDIndicator.py +0 -0
  487. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Logic.py +0 -0
  488. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/LogicGate.py +0 -0
  489. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/LogicGates.py +0 -0
  490. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/LogicOps.py +0 -0
  491. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Mechanical.py +0 -0
  492. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/MultiCapacitor.py +0 -0
  493. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/MultiSPI.py +0 -0
  494. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PM1006.py +0 -0
  495. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Pad.py +0 -0
  496. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Pinmux.py +0 -0
  497. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Potentiometer.py +0 -0
  498. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Power.py +0 -0
  499. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PowerMux.py +0 -0
  500. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PowerSwitch.py +0 -0
  501. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PowerSwitchMOSFET.py +0 -0
  502. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PowerSwitchStatic.py +0 -0
  503. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/PoweredLED.py +0 -0
  504. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Powered_Relay.py +0 -0
  505. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/QFN.py +0 -0
  506. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RP2040Pinmux.py +0 -0
  507. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RS232.py +0 -0
  508. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RS485HalfDuplex.py +0 -0
  509. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/RS485_Bus_Protection.py +0 -0
  510. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/ResistorVoltageDivider.py +0 -0
  511. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Resistor_Voltage_Divider.py +0 -0
  512. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SMDTwoPin.py +0 -0
  513. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SOIC.py +0 -0
  514. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SP3243E_ReferenceDesign.py +0 -0
  515. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SPI.py +0 -0
  516. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SWD.py +0 -0
  517. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Sercom.py +0 -0
  518. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Signal.py +0 -0
  519. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SignalElectrical.py +0 -0
  520. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/SurgeProtection.py +0 -0
  521. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Symbol.py +0 -0
  522. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TECH_PUBLIC_USBLC6_2SC6.py +0 -0
  523. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TI_CD4011BE.py +0 -0
  524. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TVS.py +0 -0
  525. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/TXS0102DCUR_UART.py +0 -0
  526. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/UART.py +0 -0
  527. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/UART_Base.py +0 -0
  528. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB2514B_ReferenceDesign.py +0 -0
  529. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB2_0.py +0 -0
  530. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB2_0_IF.py +0 -0
  531. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB3.py +0 -0
  532. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB3_IF.py +0 -0
  533. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_C.py +0 -0
  534. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_C_5V_PSU.py +0 -0
  535. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_C_PSU_Vertical.py +0 -0
  536. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_C_PowerOnly.py +0 -0
  537. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/USB_RS485.py +0 -0
  538. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/Winbond_W25Q16JVUXIQ.py +0 -0
  539. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/XtalIF.py +0 -0
  540. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_attach_to_footprint.py +0 -0
  541. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_attach_to_footprint_symmetrically.py +0 -0
  542. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_attach_to_footprint_via_pinmap.py +0 -0
  543. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_attach_via_pinmap.py +0 -0
  544. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_attach_via_pinmap_equal.py +0 -0
  545. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_attach_via_pinmap_pinlist.py +0 -0
  546. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_be_decoupled.py +0 -0
  547. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_be_decoupled_rails.py +0 -0
  548. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_be_surge_protected.py +0 -0
  549. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_be_surge_protected_defined.py +0 -0
  550. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_bridge.py +0 -0
  551. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_bridge_defined.py +0 -0
  552. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_specialize.py +0 -0
  553. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_specialize_defined.py +0 -0
  554. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_switch_power.py +0 -0
  555. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/can_switch_power_defined.py +0 -0
  556. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_capacitance.py +0 -0
  557. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_construction_dependency.py +0 -0
  558. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_datasheet.py +0 -0
  559. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_datasheet_defined.py +0 -0
  560. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_descriptive_properties.py +0 -0
  561. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_descriptive_properties_defined.py +0 -0
  562. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_equal_pins.py +0 -0
  563. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_equal_pins_in_ifs.py +0 -0
  564. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_esphome_config.py +0 -0
  565. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_esphome_config_defined.py +0 -0
  566. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_explicit_part.py +0 -0
  567. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_footprint.py +0 -0
  568. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_footprint_defined.py +0 -0
  569. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_kicad_footprint.py +0 -0
  570. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_kicad_footprint_equal_ifs.py +0 -0
  571. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_kicad_footprint_equal_ifs_defined.py +0 -0
  572. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_kicad_manual_footprint.py +0 -0
  573. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_kicad_ref.py +0 -0
  574. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_layout_transform.py +0 -0
  575. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_linked_pad.py +0 -0
  576. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_linked_pad_defined.py +0 -0
  577. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_net_name.py +0 -0
  578. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_overriden_name.py +0 -0
  579. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_overriden_name_defined.py +0 -0
  580. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_part_picked.py +0 -0
  581. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_part_removed.py +0 -0
  582. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_layout.py +0 -0
  583. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_layout_defined.py +0 -0
  584. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_position.py +0 -0
  585. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_position_defined.py +0 -0
  586. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_position_defined_relative.py +0 -0
  587. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_position_defined_relative_to_parent.py +0 -0
  588. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_routing_strategy.py +0 -0
  589. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_routing_strategy_greedy_direct_line.py +0 -0
  590. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_routing_strategy_manual.py +0 -0
  591. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pcb_routing_strategy_via_to_layer.py +0 -0
  592. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pin_association_heuristic.py +0 -0
  593. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_pin_association_heuristic_lookup_table.py +0 -0
  594. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_reference.py +0 -0
  595. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_reference_layout.py +0 -0
  596. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_resistance.py +0 -0
  597. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_simple_value_representation.py +0 -0
  598. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_simple_value_representation_based_on_params.py +0 -0
  599. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_simple_value_representation_based_on_params_chain.py +0 -0
  600. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_simple_value_representation_defined.py +0 -0
  601. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_single_connection.py +0 -0
  602. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_single_connection_impl.py +0 -0
  603. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_single_electric_reference.py +0 -0
  604. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_single_electric_reference_defined.py +0 -0
  605. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_symbol_layout.py +0 -0
  606. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/has_symbol_layout_defined.py +0 -0
  607. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_app_root.py +0 -0
  608. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_bus_parameter.py +0 -0
  609. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_decoupled.py +0 -0
  610. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_esphome_bus.py +0 -0
  611. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_esphome_bus_defined.py +0 -0
  612. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_not_pickable.py +0 -0
  613. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_optional.py +0 -0
  614. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_optional_defined.py +0 -0
  615. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_pickable.py +0 -0
  616. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_pickable_by_part_number.py +0 -0
  617. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_pickable_by_supplier_id.py +0 -0
  618. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_pickable_by_type.py +0 -0
  619. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_representable_by_single_value.py +0 -0
  620. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_representable_by_single_value_defined.py +0 -0
  621. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_surge_protected.py +0 -0
  622. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/library/is_surge_protected_defined.py +0 -0
  623. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/algorithm.py +0 -0
  624. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/app/checks.py +0 -0
  625. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/app/erc.py +0 -0
  626. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/app/manufacturing.py +0 -0
  627. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/app/picking.py +0 -0
  628. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/brightness.py +0 -0
  629. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/examples/resources/example/example.kicad_pcb +0 -0
  630. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/examples/resources/example/example.kicad_pro +0 -0
  631. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/examples/resources/example/fp-lib-table +0 -0
  632. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/exceptions.py +0 -0
  633. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/font.py +0 -0
  634. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/geometry/basic.py +0 -0
  635. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/header.py +0 -0
  636. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/iso_metric_screw_thread.py +0 -0
  637. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/fileformats_common.py +0 -0
  638. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/fileformats_sch.py +0 -0
  639. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/fileformats_v5.py +0 -0
  640. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/fileformats_v6.py +0 -0
  641. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/fileformats_version.py +0 -0
  642. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/kicad/paths.py +0 -0
  643. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/library/L.py +0 -0
  644. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/logging.py +0 -0
  645. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/pycodegen.py +0 -0
  646. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/sets/numeric_sets.py +0 -0
  647. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/sets/quantity_sets.py +0 -0
  648. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/sets/sets.py +0 -0
  649. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/sexp/dataclass_sexp.py +0 -0
  650. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/sexp/util.py +0 -0
  651. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/test/fileformats.py +0 -0
  652. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/test/times.py +0 -0
  653. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/titlecase.py +0 -0
  654. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/tools/typer.py +0 -0
  655. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/libs/units.py +0 -0
  656. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/tools/project.py +0 -0
  657. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/faebryk/tools/refactor.py +0 -0
  658. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/.eslintrc.json +0 -0
  659. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/.gitignore +0 -0
  660. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/.prettierrc.js +0 -0
  661. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/.vscodeignore +0 -0
  662. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/CODE_OF_CONDUCT.md +0 -0
  663. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/DEVELOPMENT.md +0 -0
  664. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/LICENSE +0 -0
  665. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/README.md +0 -0
  666. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/SECURITY.md +0 -0
  667. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/SUPPORT.md +0 -0
  668. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/ato_logo_256x256.png +0 -0
  669. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/bundled/tool/__init__.py +0 -0
  670. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/bundled/tool/_debug_server.py +0 -0
  671. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/bundled/tool/lsp_jsonrpc.py +0 -0
  672. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/bundled/tool/lsp_runner.py +0 -0
  673. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/bundled/tool/lsp_server.py +0 -0
  674. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/bundled/tool/lsp_utils.py +0 -0
  675. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/demo.gif +0 -0
  676. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/language-configuration.json +0 -0
  677. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/package-lock.json +0 -0
  678. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/package.json +0 -0
  679. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/runtime.txt +0 -0
  680. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/snippets/snippets.json +0 -0
  681. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/constants.ts +0 -0
  682. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/log/logging.ts +0 -0
  683. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/python.ts +0 -0
  684. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/server.ts +0 -0
  685. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/settings.ts +0 -0
  686. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/setup.ts +0 -0
  687. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/utilities.ts +0 -0
  688. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/common/vscodeapi.ts +0 -0
  689. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/extension.ts +0 -0
  690. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/src/ui/ui.ts +0 -0
  691. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/syntaxes/ato.tmLanguage.json +0 -0
  692. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/tsconfig.json +0 -0
  693. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/src/vscode-atopile/webpack.config.js +0 -0
  694. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/libs/footprints/logos.pretty/faebryk_logo.kicad_mod +0 -0
  695. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v5/fp/C0603.kicad_mod +0 -0
  696. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v5/fp/KMR211NGLFS.kicad_mod +0 -0
  697. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v6/fp/SOT-23-5_RIT.kicad_mod +0 -0
  698. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v7/fplib/fp-lib-table +0 -0
  699. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v8/fp/test.kicad_mod +0 -0
  700. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v8/netlist/test_e.net +0 -0
  701. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v8/pcb/test.kicad_pcb +0 -0
  702. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v8/prj/test.kicad_pro +0 -0
  703. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v8/sch/test.kicad_sch +0 -0
  704. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/fileformats/kicad/v8/sym/test.kicad_sym +0 -0
  705. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/test-project/ato.yaml +0 -0
  706. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/test-project/unconstructable.py +0 -0
  707. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/test-project/unimportable.py +0 -0
  708. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/test.net +0 -0
  709. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/common/resources/test_essentials.net +0 -0
  710. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/cpp/test_importcpp.py +0 -0
  711. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/solver/test_solver_util.py +0 -0
  712. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_core.py +0 -0
  713. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_core_util.py +0 -0
  714. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_mif_connect.py +0 -0
  715. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_node.py +0 -0
  716. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_parameters.py +0 -0
  717. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/core/test_traits.py +0 -0
  718. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/exporters/netlist/test_graph.py +0 -0
  719. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/exporters/pcb/kicad/test_pcb_transformer.py +0 -0
  720. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/exporters/schematic/kicad/test_schematic_transformer.py +0 -0
  721. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/front_end/test_literals.py +0 -0
  722. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/integration/netlist/kicad2faebryk/test_netlist_kicad_2_faebryk_prj.py +0 -0
  723. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/library/nodes/test_decouple.py +0 -0
  724. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/library/nodes/test_electricpower.py +0 -0
  725. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/library/nodes/test_has_simple_value_representation.py +0 -0
  726. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/library/test_footprints.py +0 -0
  727. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/library/test_instance_library_modules.py +0 -0
  728. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/library/test_reference.py +0 -0
  729. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/geometry/test_basic_transformations.py +0 -0
  730. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/kicad/test_fileformats.py +0 -0
  731. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_exceptions.py +0 -0
  732. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_sets.py +0 -0
  733. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_units.py +0 -0
  734. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_util.py +0 -0
  735. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_util_atexit.py +0 -0
  736. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_util_func_collections.py +0 -0
  737. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/test_util_importers.py +0 -0
  738. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/util/test_has_attr_or_property.py +0 -0
  739. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/util/test_has_instance_settable_attr.py +0 -0
  740. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/libs/util/test_write_only_property.py +0 -0
  741. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/runpytest.sh +0 -0
  742. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/runtest.py +0 -0
  743. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_address.py +0 -0
  744. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_cli.py +0 -0
  745. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_datatypes.py +0 -0
  746. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_telemetry.py +0 -0
  747. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/test/test_version.py +0 -0
  748. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/tools/library/gen_F.py +0 -0
  749. {atopile-0.3.7.dev0 → atopile-0.3.9.dev0}/tools/profile.py +0 -0
@@ -0,0 +1,18 @@
1
+ You an expert Python programmer, cpp programmer and electrical engineer.
2
+
3
+ You are developing an application called "atopile", which is a tool to design PCBs using a new language called "ato", or in Python with a framework called "fabll".
4
+
5
+ You will follow the following rules and best practices during development:
6
+
7
+ - When directed to "consider" something, assume it's an imperfect suggestion. Contemplate whether it's a good idea, and if it's not, suggest an alternative with reasoning.
8
+ - Add comments to your code such that a future developer, also an expert in the field, but without the immediate context of the reason for development can understand the code.
9
+
10
+ ## Test Writing
11
+
12
+ - Use pytest best practices
13
+ - Use `pytest.mark.parametrize` to run tests on multiple inputs, rather than for loops within the a single test function
14
+ - Run tests you have created or modified with `pytest <path_to_test_file>::<test_name>`
15
+ - If you have made large changes, run the most appropriate of:
16
+ - `pytest -m <module_name>` for a single modules' changes
17
+ - `pytest -m "not regression"` to run all tests except for LONG regression tests
18
+ - `pytest` to run all tests
@@ -1,6 +1,6 @@
1
1
  # Taken from https://github.com/pybind/scikit_build_example/blob/master/.github/workflows/wheels.yml
2
2
 
3
- name: Wheels
3
+ name: deploy
4
4
 
5
5
  on:
6
6
  workflow_dispatch:
@@ -88,10 +88,12 @@ jobs:
88
88
  path: wheelhouse/*.whl
89
89
 
90
90
 
91
- upload_all:
92
- name: Upload if release
91
+ publish_wheels:
92
+ name: Publish Wheels
93
93
  needs: [build_wheels, build_sdist]
94
94
  runs-on: ubuntu-latest
95
+ # Publish wheels properly on release
96
+ # or to testpypi on main branch pushes to validate the workflow
95
97
  if: github.event_name == 'release' && github.event.action == 'published' || github.event_name == 'push' && github.ref == 'refs/heads/main'
96
98
  environment: pypi
97
99
  permissions:
@@ -123,3 +125,62 @@ jobs:
123
125
  uses: pypa/gh-action-pypi-publish@release/v1
124
126
  with:
125
127
  attestations: true
128
+
129
+
130
+ docker:
131
+ name: Docker Build and Publish
132
+ runs-on: ubuntu-latest
133
+ needs: build_wheels
134
+
135
+ strategy:
136
+ matrix:
137
+ include:
138
+ - dockerfile: "Dockerfile.kicad"
139
+ image: "atopile-kicad"
140
+
141
+ # Sets the permissions granted to the `GITHUB_TOKEN`
142
+ # for the actions in this job.
143
+ permissions:
144
+ contents: read
145
+ packages: write
146
+
147
+ steps:
148
+ - uses: actions/checkout@v4
149
+
150
+ - name: Download wheel artifacts
151
+ uses: actions/download-artifact@v4
152
+ with:
153
+ pattern: cibw-*
154
+ merge-multiple: true
155
+ path: dist
156
+
157
+ - name: Docker meta
158
+ id: meta
159
+ uses: docker/metadata-action@v5
160
+ with:
161
+ images: |
162
+ ghcr.io/atopile/${{ matrix.image }}
163
+ flavor: |
164
+ latest=${{github.event_name == 'release' && github.event.action == 'published' && !github.event.release.prerelease && !github.event.release.draft}}
165
+ tags: |
166
+ type=ref,event=branch
167
+ type=ref,event=pr
168
+ type=semver,pattern={{version}}
169
+ type=semver,pattern={{major}}.{{minor}}
170
+ type=sha
171
+
172
+ - name: Log in to the Container registry
173
+ uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446
174
+ with:
175
+ registry: ghcr.io
176
+ username: ${{ github.actor }}
177
+ password: ${{ secrets.GITHUB_TOKEN }}
178
+
179
+ - name: Build and push
180
+ uses: docker/build-push-action@v6
181
+ with:
182
+ context: .
183
+ file: dockerfiles/${{ matrix.dockerfile }}
184
+ push: true
185
+ tags: ${{ steps.meta.outputs.tags }}
186
+ labels: ${{ steps.meta.outputs.labels }}
@@ -2,6 +2,10 @@ name: pre-commit
2
2
 
3
3
  on:
4
4
  push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_dispatch:
5
9
 
6
10
  jobs:
7
11
  pre-commit:
@@ -2,6 +2,10 @@ name: pytest
2
2
 
3
3
  on:
4
4
  push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_dispatch:
5
9
 
6
10
  jobs:
7
11
  pytest:
@@ -29,12 +33,36 @@ jobs:
29
33
  - name: Setup cmake
30
34
  uses: jwlawson/actions-setup-cmake@v2
31
35
 
36
+ # Required by examples
37
+ # TODO: remove dependency on global fp-lib-table
38
+ - name: Configure AWS Credentials
39
+ uses: aws-actions/configure-aws-credentials@v4
40
+ with:
41
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
42
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
43
+ aws-region: ${{ secrets.AWS_REGION }}
44
+
45
+ - name: Prepare test environment
46
+ run: |
47
+ mkdir -p ~/.config/kicad/8.0/
48
+ aws s3 cp "s3://${{ secrets.TEST_DATASET_BUCKET }}/kicad-8.0-fp-lib-table" ~/.config/kicad/8.0/fp-lib-table
49
+
50
+ mkdir -p /usr/share/kicad/
51
+ aws s3 cp "s3://${{ secrets.TEST_DATASET_BUCKET }}/kicad-8.0-footprints.tar.gz" - | tar -xz -C /usr/share/kicad/
52
+
32
53
  - name: Run pytest
33
54
  id: pytest
34
55
  continue-on-error: true
35
- run: |
36
- uv run --dev --no-editable --frozen pytest -m "not not_in_ci and not slow and not regression" --timeout=300
56
+ run: >
57
+ uv run --dev --no-editable --frozen
58
+ --with pytest-github-actions-annotate-failures
59
+ pytest
60
+ -m "not not_in_ci and not slow and not regression"
61
+ --timeout=300
37
62
  env:
63
+ GH_TOKEN: ${{ github.token }}
64
+ PYTEST_HISTORY_EMAIL: ${{ vars.PYTEST_HISTORY_EMAIL }}
65
+ PYTEST_HISTORY_PASSWORD: ${{ secrets.PYTEST_HISTORY_PASSWORD }}
38
66
  COLUMNS: 150 # rich console width will be pulled from this
39
67
 
40
68
  - name: Upload all test logs
@@ -0,0 +1,66 @@
1
+ name: website-deploy
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ release:
7
+ types: [published]
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-latest
15
+ environment: github-pages
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ fetch-depth: 0 # Required for mike to work with git history
20
+
21
+ - name: Configure Git Credentials
22
+ run: |
23
+ git config user.name github-actions[bot]
24
+ git config user.email 41898282+github-actions[bot]@users.noreply.github.com
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version-file: 'pyproject.toml'
30
+
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v4
33
+ with:
34
+ version: '0.5.5'
35
+ enable-cache: true
36
+ cache-dependency-glob: "uv.lock"
37
+
38
+ - name: Get version
39
+ id: get_version
40
+ # Uses hatch rather than ato to get the version
41
+ # because currently ato might also produce logging output
42
+ # which contaminates stdout
43
+ run: |
44
+ VERSION=$(uv run --dev hatch version)
45
+ MAJOR_MINOR=$(echo $VERSION | cut -d. -f1,2)
46
+ echo "VERSION=$VERSION" >> $GITHUB_ENV
47
+ echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV
48
+
49
+ # FIXME: enable deployment access restrictions
50
+ # - enforce https://github.com/atopile/atopile/settings/rules/3213715
51
+ # - specify the --remote in `mike deploy` to include the app token https://stackoverflow.com/questions/18935539/authenticate-with-github-using-a-token
52
+ # - uses: actions/create-github-app-token@v1
53
+ # id: app-token
54
+ # with:
55
+ # app-id: ${{ vars.WEBSITE_DEPLOYER_APP_ID }}
56
+ # private-key: ${{ secrets.WEBSITE_DEPLOYER_KEY }}
57
+
58
+ - name: Deploy development docs
59
+ if: github.event_name == 'push'
60
+ # TODO: it'd be nice to have the upcoming version number here as well
61
+ # but it clobbers the latest release in case they're the same
62
+ run: uv run mike deploy --push --update-aliases dev
63
+
64
+ - name: Deploy release docs
65
+ if: github.event_name == 'release' && !github.event.release.prerelease && !github.event.release.draft
66
+ run: uv run mike deploy --push --update-aliases $MAJOR_MINOR latest
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atopile
3
- Version: 0.3.7.dev0
3
+ Version: 0.3.9.dev0
4
4
  Summary: A toolchain bringing the best of software development to the real-world!
5
5
  Project-URL: Homepage, https://github.com/atopile/atopile
6
6
  Project-URL: Bug Tracker, https://github.com/atopile/atopile/issues
@@ -48,7 +48,7 @@ Requires-Dist: isort<5.14.0,>=5.6.4
48
48
  Requires-Dist: jinja2>=3.1.3
49
49
  Requires-Dist: kicadcliwrapper<2.0.0,>=1.0.0
50
50
  Requires-Dist: matplotlib<4.0.0,>=3.7.1
51
- Requires-Dist: more-itertools<10.6,>=10.4
51
+ Requires-Dist: more-itertools<10.7,>=10.4
52
52
  Requires-Dist: natsort>=8.4.0
53
53
  Requires-Dist: numpy<3.0.0,>=2.2.0
54
54
  Requires-Dist: packaging>=23.2
@@ -56,6 +56,7 @@ Requires-Dist: pandas>=2.1.4
56
56
  Requires-Dist: patool<2.4.0,>=2.3.0
57
57
  Requires-Dist: pint<1.0.0,>=0.24.4
58
58
  Requires-Dist: psutil<7.0.0,>=6.0.0
59
+ Requires-Dist: pydantic-settings>=2.7.1
59
60
  Requires-Dist: pygls>=1.3.0
60
61
  Requires-Dist: quart-cors>=0.7.0
61
62
  Requires-Dist: quart-schema[pydantic]>=0.20.0
@@ -34,8 +34,8 @@ COPY --from=ghcr.io/astral-sh/uv:0.5.5 /uv /bin/uv
34
34
  # @python3.14
35
35
  RUN uv python install 3.13
36
36
 
37
- COPY --chown=kicad:kicad dist/atopile-*.whl /tmp/
37
+ COPY --chown=kicad:kicad dist/atopile-*-cp313-cp313-manylinux*.whl /tmp/
38
38
 
39
- RUN uv tool install /tmp/atopile-*.whl
39
+ RUN uv tool install /tmp/atopile-*-cp313-cp313-manylinux*.whl
40
40
 
41
41
  ENTRYPOINT [ "bash", "-c", "ato install && ato build" ]
@@ -0,0 +1,28 @@
1
+ # Change Log
2
+
3
+ ## v0.3.x
4
+
5
+ Firstly, thanks for using atopile! It's been a ride, and we're glad you're here. 🙌
6
+
7
+ ### Changed Commands
8
+
9
+ Add `--help` after any command to see new options in the CLI. This is always the most accurate source of information.
10
+
11
+ | Old | New |
12
+ |-----|-----|
13
+ | `ato install --jlcpcb` | `ato create component` |
14
+
15
+
16
+ ### I'm seeing a bunch of `DeprecationWarning`
17
+
18
+ There will be a LOT of new deprecation warnings you'll see.
19
+
20
+ For the most part, it's safe to ignore them for the minute, and we plan to make the breaking changes in 0.4.0
21
+
22
+ Upgrading will give you more access to features as they're added, but there's no need to rush if you're content.
23
+
24
+ ### PCBs are now directly modified
25
+
26
+ This means no more need to open the PCB file, import the netlist and cycle.
27
+
28
+ `ato build` now directly modifies the PCB file as required on each build.
@@ -0,0 +1 @@
1
+ docs.atopile.io
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 264.12 264.12">
3
+ <defs>
4
+ <style>
5
+ .cls-1 {
6
+ fill: #fff;
7
+ stroke-width: 0px;
8
+ }
9
+ </style>
10
+ </defs>
11
+ <g id="_Слой_1" data-name="Слой 1">
12
+ <g>
13
+ <rect class="cls-1" x="0" y="229.39" width="57.39" height="34.73" rx="2.5" ry="2.5" transform="translate(57.39 493.5) rotate(180)"/>
14
+ <path class="cls-1" d="m168.54,26.23V8.5c0-4.7,3.81-8.5,8.5-8.5h78.57c4.7,0,8.5,3.81,8.5,8.5v88.27c0,4.7-3.81,8.5-8.5,8.5h-17.73c-4.7,0-8.5-3.81-8.5-8.5v-53.54c0-4.7-3.81-8.5-8.5-8.5h-43.84c-4.7,0-8.5-3.81-8.5-8.5Z"/>
15
+ <path class="cls-1" d="m0,147.08v-17.73c0-4.7,3.81-8.5,8.5-8.5h40.38c4.7,0,8.5,3.81,8.5,8.5v37.26c0,4.7,3.81,8.5,8.5,8.5h29.82c4.7,0,8.5,3.81,8.5,8.5v37.26c0,4.7,3.81,8.5,8.5,8.5h108.17c4.7,0,8.5-3.81,8.5-8.5v-56.8c0-4.7-3.81-8.5-8.5-8.5h-45.95c-4.7,0-8.5-3.81-8.5-8.5v-43.42c0-4.7-3.81-8.5-8.5-8.5h-29.67c-4.7,0-8.5-3.81-8.5-8.5v-43.43c0-4.7-3.81-8.5-8.5-8.5h-24.05c-4.7,0-8.5-3.81-8.5-8.5V8.5c0-4.7,3.81-8.5,8.5-8.5h57.25c4.7,0,8.5,3.81,8.5,8.5v43.42c0,4.7,3.81,8.5,8.5,8.5h29.67c4.7,0,8.5,3.81,8.5,8.5v43.42c0,4.7,3.81,8.5,8.5,8.5h47.48c4.7,0,8.5,3.81,8.5,8.5v126.27c0,4.7-3.81,8.5-8.5,8.5H78.95c-4.7,0-8.5-3.81-8.5-8.5v-37.26c0-4.7-3.81-8.5-8.5-8.5h-29.83c-4.7,0-8.5-3.81-8.5-8.5v-37.26c0-4.7-3.81-8.5-8.5-8.5h-6.61c-4.7,0-8.5-3.81-8.5-8.5Z"/>
16
+ <path class="cls-1" d="m25.08,86.66v-17.73c0-4.7,3.81-8.5,8.5-8.5h61.84c4.7,0,8.5,3.81,8.5,8.5v43.42c0,4.7,3.81,8.5,8.5,8.5h32.03c4.7,0,8.5,3.81,8.5,8.5v37.26c0,4.7,3.81,8.5,8.5,8.5h39.69c4.7,0,8.5,3.81,8.5,8.5v17.73c0,4.7-3.81,8.5-8.5,8.5h-73.46c-4.7,0-8.5-3.81-8.5-8.5v-37.26c0-4.7-3.81-8.5-8.5-8.5h-31.45c-4.7,0-8.5-3.81-8.5-8.5v-43.42c0-4.7-3.81-8.5-8.5-8.5h-28.65c-4.7,0-8.5-3.81-8.5-8.5Z"/>
17
+ <rect class="cls-1" x="25.08" y="0" width="34.73" height="34.73" rx="2.5" ry="2.5" transform="translate(84.9 34.73) rotate(180)"/>
18
+ </g>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,31 @@
1
+ # Development
2
+
3
+ ## Prerequisites
4
+
5
+ - [Editable atopile install](/guides/installation/#editable-installation-best-for-development)
6
+
7
+ ## Dev Tools
8
+
9
+ We recommend VSCode for development. If nothing else, it has heaps of high quality extensions and atopile language support, plus it's what we all use internally - so we know how to configure it for purpose.
10
+
11
+ You should have at minimum:
12
+ - [Cursor](https://www.cursor.com/) or [VSCode](https://code.visualstudio.com)
13
+ - [VSCode atopile extension](https://marketplace.visualstudio.com/items?itemName=atopile.atopile) (also works for Cursor)
14
+
15
+ ### Verbosity
16
+
17
+ You can increase the verbosity of atopile by using the `-v`, `-vv` or `-vvv` flags, eg. `ato -vv build`
18
+
19
+ !!! tip "Flag Location"
20
+ Flags are placed after the `ato` command and before the command you want to run. For example, `ato -vv build` will run the build command with the verbose flag set to the highest level, while `ato build -vv` will not work.
21
+
22
+ ### Debugging
23
+
24
+ You can start the CLI in debug mode by using the `--debug` flag, eg. `ato --debug build`
25
+
26
+ This will run a [`debugpy`](https://github.com/microsoft/debugpy) server on port `5678` which you can connect to with the VSCode built-in debugger.
27
+
28
+ ![connect debugger](assets/images/debugger-vscode.png)
29
+
30
+ ??? help "Syntax highlighting isn't working"
31
+ If you're having trouble with syntax highlighting in the debugger, it might be because VSCode sets up a mapping between the remote and local file paths by default - remove it.
@@ -0,0 +1,24 @@
1
+ # `faebryk` & `fabll` 🐍
2
+
3
+ `faebryk` is atopile's core. It's how we model the world.
4
+
5
+ `faebryk` is a Python module that uses a powerful and efficient core graph (nodes + edges) to represent every relationship in your design or circuit.
6
+
7
+ `fabll` is a Python framework to model circuits, much like `ato`. It unlocks a the whole Turing-complete power of Python to do design in + low-level procedural code and logic. Think of it like writing C for a Python module. It's focus is power - not ease of use like `ato`, so it's not recommended for most designs to start with.
8
+
9
+ !!! warning
10
+ `fabll` is currently in a very early stage of development. It's not publicly supported yet.
11
+
12
+ ## Building `fabll` code
13
+
14
+ To build a `fabll` module with atopile, you just need to point to the module within your `ato.yaml` configuration file.
15
+
16
+ When you run `ato build`, atopile will automatically build the `fabll` module and link it to your project.
17
+
18
+ ## Importing `fabll` code
19
+
20
+ You can just import `fabll` modules in `ato` like any other import:
21
+
22
+ ```ato
23
+ from path/to/some/fabll.py import SomeModule
24
+ ```
@@ -0,0 +1,50 @@
1
+ # Using `git` for Hardware
2
+
3
+ `git` is a powerful way to version control your design and one of the key reason we started atopile. If you don't know about `git`, we strongly recommend learning it. There is a high chance you will end up loving it.
4
+
5
+ ## Workflow Overview
6
+
7
+ `git` is the de-facto standard for version control in software development. For people who haven't used it before, it's worth explaining a few terms and the workflow
8
+
9
+ | Term | Definition |
10
+ | --- | --- |
11
+ | Repo or Repository | A collection of files and directories that is version controlled together. |
12
+ | Branch | A "branch" is an isolated space for your changes. |
13
+ | Commit | A "commit" is a snapshot of some changes in that place in time. |
14
+ | Push | A "push" is sending your changes to the remote repo. |
15
+ | Pull Request | A "pull request" is a request to merge your changes into the main branch. This is the time to review and test your changes with others on your team. |
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ AA[Find a project you want to work on on Github] --> A[**Clone** a copy of the repo to your computer]
20
+ AB[Create a new project on Github] --> A
21
+ A --> B["Create an isolated space (or **branch**) for your changes"]
22
+ B --> C[Do some work ⛏️]
23
+ C --> D[Check the **status** of your changes]
24
+ D --> E[**Stage** the changes for one topic]
25
+ E --> F[**Commit** the changes with a message explaining what you did]
26
+ F -->|More work to do on this topic| D
27
+ F -->|Ready for review| H[**Push** your branch to the **remote** repo on Github]
28
+ H --> I[Create **Pull Request** on GitHub]
29
+ I --> II["Continuous Integration (**CI**) runs tests and ensures your project still builds after your updates"]
30
+ II -->|Tests pass| J[**Review** all the changes]
31
+ II -->|Tests fail| D
32
+ J -->|Changes requested in review| D
33
+ J -->|Approved| K[**Merge** to main]
34
+ K --> L[Your changes are now combined with the work of everyone else on the project]
35
+ ```
36
+
37
+ ## Basic Usage
38
+
39
+ ```sh
40
+ git clone <repo-url>
41
+ git checkout -b <new-branch-name>
42
+ git add <file-to-commit>
43
+ git commit -m "This commits adds an LED indicator..."
44
+ git push -u origin HEAD
45
+ ```
46
+
47
+ ## More resources
48
+
49
+ - https://github.com/git-guides
50
+ - https://git-scm.com/docs/gittutorial
@@ -0,0 +1,38 @@
1
+ # Alternative Installation
2
+
3
+ !!! warning
4
+ Check out the [quickstart guide](quickstart.md) for a step-by-step guide for the recommended way to install atopile.
5
+ This page provides alternative installation methods.
6
+
7
+ Ultimately `atopile` is a python package, so you can install it where and however you want - but some python package managers are better than others. Here's how we recommend you install atopile.
8
+
9
+ ## Editable installation (Best for development)
10
+
11
+ 1. Install `uv`
12
+ See: https://docs.astral.sh/uv/getting-started/installation/
13
+
14
+ 3. Clone the repo
15
+
16
+ ``` sh
17
+ git clone https://github.com/atopile/atopile
18
+ ```
19
+
20
+ 4. `cd` into the repo
21
+
22
+ ``` sh
23
+ cd atopile
24
+ ```
25
+
26
+ 5. Install
27
+
28
+ ``` sh
29
+ uv sync --dev
30
+ ```
31
+
32
+ ## Via `brew`
33
+
34
+ We would recommend this, however it's not yet quite ready
35
+
36
+ ``` sh
37
+ brew install atopile/tap/atopile
38
+ ```
@@ -0,0 +1,62 @@
1
+ # Welcome
2
+
3
+ `atopile` is a language, compiler and toolchain to design electronics with code.
4
+
5
+ Design circuit boards with the same powerful workflows that software developers use - version control, modularity, and automated validation. Instead of point-and-click schematics, use human-readable `.ato` files that can be version controlled and shared. Capture design intelligence and validation rules in code to ensure your hardware works as intended.
6
+
7
+ ## Features
8
+
9
+ - 🚀 Auto-select components like resistors and capacitors, based on their attribute's values
10
+ - 🤖 Embed calculations in your code, which are checked on every build
11
+ - 🧱 Build you circuit from reliable configurable modules so you can focus on high level design
12
+ - 💥 Build, release and test your circuit board from the `CLI`
13
+ - 📦 Embedded package manager to install and manage modules from https://packages.atopile.io, or Github
14
+ - 🔍 Version control line-by-line diffable code w/ git
15
+
16
+ Jump right in with the [quickstart guide](quickstart.md)
17
+
18
+ ## Who's atopile for?
19
+
20
+ Currently atopile is young - which means we can't do everything yet and we're focussed on being incredible at a few things:
21
+
22
+ ### Custom Validation Equipment
23
+
24
+ > "Rome wasn't built in a day, but your HiL should be"
25
+
26
+ If you're serious about automating the validation of your production hardware, you're in the right place.
27
+
28
+ [Cell-sim](https://github.com/atopile/cell-sim/) is a 16ch, 16-bit, isolated, 0-5V, 0-500mA battery-cell simulator designed from scratch in atopile, from concept to 2-revisions in under 5 days work. Oh, and that time includes the firmware. It is a relatively complex HiL design, and required many new modules that didn't yet exist on our package manager. Simpler HiL designs are frequently just a day's work.
29
+
30
+ ![cell-sim](assets/images/cell-sim.png)
31
+
32
+ ### Young companies who need to iterate on hardware
33
+
34
+ `atopile` designed hardware is in satellites, humanoid robots and VTOL drones - all from startups within the last year.
35
+
36
+ Not every young company NEEDs to iterate on it's hardware, but many more should than do.
37
+
38
+ We're used to this in the software world, but getting the same engine running at even remotely similar speeds for hardware is a huge challenge. `atopile` let's multiple people work on different features or concepts on the same project in parallel via branches in `git`. With calculations checked and tests run automatically on every change, you can iterate as an individual - quickly trying out new ideas before committing to a design as a team and only after validating it in the real-world.
39
+
40
+ ### Huge nerds 🤓
41
+
42
+ Welcome the club!
43
+
44
+ If you like making dope stuff, like these [servo drives](https://github.com/atopile/spin-servo-drive) you're in the right place. Welcome!
45
+
46
+ ![spin-showing-off-the-very-goods](assets/images/spin-showing-off-the-very-goods.jpg)
47
+
48
+ ## Roadmap
49
+
50
+ ### Up-next
51
+
52
+ - [ ] 📦 [Package Manager](https://github.com/atopile/atopile/discussions/495) - Make finding, installing and publishing modules fast and easy
53
+ - [ ] First-party packages for HiL systems
54
+
55
+ ### Soon
56
+
57
+ - [ ] Language Server - A standard LSP server for atopile
58
+ - [ ] Plugin system - Make it easy to extend the `ato` CLI
59
+
60
+ ### Non-goals
61
+
62
+ - Integration with XXX design tool. Reliably supporting all the features of legacy EDA tools is a huge lift, and, with rapid continued improvement in the open-source EDA space, it's not currently the best use of our time.
@@ -17,7 +17,7 @@
17
17
  <a href="{{ page.next_page.url | url }}" title="{{ page.next_page.title | e }}" class="md-button md-button--primary">
18
18
  Quick start
19
19
  </a>
20
- <a href="mailto:tim@atopile.io,matt@atopile.io,narayan@atopile.io" title="Email us" class="md-button">
20
+ <a href="mailto:founders@atopile.io" title="Email us" class="md-button">
21
21
  Contact us
22
22
  </a>
23
23
  </div>
@@ -1,7 +1,12 @@
1
- {#-
2
- This file was automatically generated - do not edit
3
- -#}
4
1
  {% extends "base.html" %}
2
+
3
+ {% block outdated %}
4
+ You're not viewing the latest version.
5
+ <a href="{{ '../' ~ base_url }}">
6
+ <strong>Click here to go to latest.</strong>
7
+ </a>
8
+ {% endblock %}
9
+
5
10
  {% block announce %}
6
11
  For updates, star us on
7
12
  <a href="https://github.com/atopile/atopile">
@@ -23,6 +28,7 @@
23
28
  {% include ".icons/fontawesome/brands/youtube.svg" %}
24
29
  </span>
25
30
  <strong>YouTube</strong>
31
+ </a>
26
32
  , or join us on
27
33
  <a href="https://discord.gg/nkpC7wYRVw">
28
34
  <span class="twemoji discord">
@@ -31,9 +37,11 @@
31
37
  <strong>Discord</strong>
32
38
  </a>
33
39
  {% endblock %}
40
+
34
41
  {% block extrahead %}
35
42
  <link rel="stylesheet" href="{{ 'assets/stylesheets/custom.css' | url }}">
36
43
  {% endblock %}
44
+
37
45
  {% block scripts %}
38
46
  {{ super() }}
39
47
  <script src="{{ 'assets/javascripts/custom.129bd6ad.min.js' | url }}"></script>