gplugins 1.3.4__tar.gz → 1.3.6__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 (250) hide show
  1. {gplugins-1.3.4 → gplugins-1.3.6}/PKG-INFO +4 -12
  2. {gplugins-1.3.4 → gplugins-1.3.6}/README.md +1 -1
  3. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/__init__.py +1 -1
  4. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/base_models/component.py +79 -8
  5. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/get_meep_geometry.py +38 -13
  6. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/get_simulation.py +2 -6
  7. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/meep_adjoint_optimization.py +5 -3
  8. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/write_sparameters_meep.py +3 -1
  9. {gplugins-1.3.4 → gplugins-1.3.6}/pyproject.toml +9 -12
  10. gplugins-1.3.4/gplugins/sax/build_model.py +0 -344
  11. gplugins-1.3.4/gplugins/sax/integrations/femwell_waveguide_model.py +0 -232
  12. gplugins-1.3.4/gplugins/sax/integrations/meep_FDTD_model.py +0 -198
  13. gplugins-1.3.4/gplugins/sax/integrations/meow_eme_model.py +0 -133
  14. gplugins-1.3.4/gplugins/spice/tests/__init__.py +0 -0
  15. {gplugins-1.3.4 → gplugins-1.3.6}/LICENSE +0 -0
  16. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/__init__.py +0 -0
  17. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/base_models/__init__.py +0 -0
  18. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/base_models/simulation.py +0 -0
  19. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/config.py +0 -0
  20. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/types.py +0 -0
  21. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/__init__.py +0 -0
  22. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/add_simulation_markers.py +0 -0
  23. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/async_helpers.py +0 -0
  24. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/cache.py +0 -0
  25. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/convert_sparameters.py +0 -0
  26. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/disable_print.py +0 -0
  27. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/get_capacitance.py +0 -0
  28. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/get_component_with_net_layers.py +0 -0
  29. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/get_effective_indices.py +0 -0
  30. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/get_scattering.py +0 -0
  31. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/get_sparameters_path.py +0 -0
  32. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/optical_constants.py +0 -0
  33. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/parse_layer_stack.py +0 -0
  34. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/plot.py +0 -0
  35. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/plot_csv.py +0 -0
  36. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/port_symmetries.py +0 -0
  37. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/common/utils/tests/test_get_component_with_new_port_layers.py +0 -0
  38. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/devsim/__init__.py +0 -0
  39. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/devsim/doping.py +0 -0
  40. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/devsim/get_simulation.py +0 -0
  41. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/devsim/get_simulation_xsection.py +0 -0
  42. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/devsim/get_solver.py +0 -0
  43. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/devsim/test_devsim.py +0 -0
  44. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/elmer/__init__.py +0 -0
  45. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/elmer/electrostatic.sif.j2 +0 -0
  46. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/elmer/get_capacitance.py +0 -0
  47. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/elmer/tests/test_elmer.py +0 -0
  48. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/fdtdz/__init__.py +0 -0
  49. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/fdtdz/get_epsilon_fdtdz.py +0 -0
  50. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/fdtdz/get_ports_fdtdz.py +0 -0
  51. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/fdtdz/get_sparameters_fdtdz.py +0 -0
  52. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/femwell/__init__.py +0 -0
  53. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/femwell/mode_solver.py +0 -0
  54. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/femwell/solve_thermal.py +0 -0
  55. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/femwell/test_mode_solver.py +0 -0
  56. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/Makefile +0 -0
  57. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/__init__.py +0 -0
  58. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/b64.py +0 -0
  59. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/gfviz.py +0 -0
  60. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/netlist.py +0 -0
  61. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/serve.py +0 -0
  62. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/static/b64.js +0 -0
  63. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/static/schemedit.js +0 -0
  64. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/static/schemedit.wasm +0 -0
  65. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/templates/example.json +0 -0
  66. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gfviz/templates/index.html +0 -0
  67. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/__init__.py +0 -0
  68. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/get_material.py +0 -0
  69. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/get_port_eigenmode.py +0 -0
  70. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/get_simulation_grating_farfield.py +0 -0
  71. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/get_simulation_grating_fiber.py +0 -0
  72. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_eigenmode.py +0 -0
  73. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_materials.py +0 -0
  74. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv +0 -0
  75. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv +0 -0
  76. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_crossing.csv +0 -0
  77. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_straight.csv +0 -0
  78. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_symmetries_straight.csv +0 -0
  79. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi.csv +0 -0
  80. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi_pool.csv +0 -0
  81. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_crossing_symmetric.csv +0 -0
  82. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight.csv +0 -0
  83. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_batch.csv +0 -0
  84. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi.csv +0 -0
  85. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi_pool.csv +0 -0
  86. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_symmetric.csv +0 -0
  87. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/test_write_sparameters_meep.py +0 -0
  88. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/write_sparameters_grating.py +0 -0
  89. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/write_sparameters_meep_batch.py +0 -0
  90. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmeep/write_sparameters_meep_mpi.py +0 -0
  91. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/__init__.py +0 -0
  92. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/define_polysurfaces.py +0 -0
  93. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/get_mesh.py +0 -0
  94. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/parse_component.py +0 -0
  95. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/parse_gds.py +0 -0
  96. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/tests/test_custom_names.py +0 -0
  97. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/tests/test_meshing_2D.py +0 -0
  98. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/tests/test_meshing_3D.py +0 -0
  99. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/uz_xsection_mesh.py +0 -0
  100. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/xy_xsection_mesh.py +0 -0
  101. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/gmsh/xyz_mesh.py +0 -0
  102. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/__init__.py +0 -0
  103. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/dataprep/__init__.py +0 -0
  104. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/dataprep/regions.py +0 -0
  105. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/__init__.py +0 -0
  106. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/check_duplicated_cells.py +0 -0
  107. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/check_exclusion.py +0 -0
  108. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/check_inclusion.py +0 -0
  109. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/check_space.py +0 -0
  110. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/check_width.py +0 -0
  111. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/count_drc.py +0 -0
  112. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/samples/drc_errors.py +0 -0
  113. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/drc/write_drc.py +0 -0
  114. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/get_density.py +0 -0
  115. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/get_netlist.py +0 -0
  116. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/netlist_graph.py +0 -0
  117. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/netlist_spice_reader.py +0 -0
  118. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/plot_nets.py +0 -0
  119. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_dataprep_regions.py +0 -0
  120. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_density.py +0 -0
  121. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_drc_exclusion.py +0 -0
  122. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_drc_inclusion.py +0 -0
  123. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_drc_space.py +0 -0
  124. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_drc_width.py +0 -0
  125. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_global_density.py +0 -0
  126. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_netlist_spice_reader.py +0 -0
  127. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/klayout/tests/test_plot_nets.py +0 -0
  128. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/README.md +0 -0
  129. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/__init__.py +0 -0
  130. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/interconnect.py +0 -0
  131. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/mapping_ubcpdk.yml +0 -0
  132. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/read.py +0 -0
  133. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/settings.py +0 -0
  134. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/tests/test_lumerical_read_sparameters.py +0 -0
  135. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/tests/test_netlist.py +0 -0
  136. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/tests/test_netlist_get_routes.py +0 -0
  137. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/write_sparameters_lumerical.py +0 -0
  138. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/lumerical/write_sparameters_lumerical_components.py +0 -0
  139. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/__init__.py +0 -0
  140. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/inorganic.py +0 -0
  141. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/optical/__init__.py +0 -0
  142. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/optical/optical_mat.py +0 -0
  143. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/optical/refractive_index_info.py +0 -0
  144. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/semiconductor/__init__.py +0 -0
  145. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/materials/semiconductor/semiconductor_mat.py +0 -0
  146. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/meow/__init__.py +0 -0
  147. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/meow/meow_eme.py +0 -0
  148. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/meow/test_meow_simulation.py +0 -0
  149. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/__init__.py +0 -0
  150. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/coupler.py +0 -0
  151. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/find_coupling_vs_gap.py +0 -0
  152. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/find_mode_dispersion.py +0 -0
  153. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/find_modes.py +0 -0
  154. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/find_modes_cross_section.py +0 -0
  155. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/find_neff_ng_dw_dh.py +0 -0
  156. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/find_neff_vs_width.py +0 -0
  157. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/get_mode_solver_coupler.py +0 -0
  158. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/get_mode_solver_cross_section.py +0 -0
  159. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/get_mode_solver_rib.py +0 -0
  160. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/modes/neff_vs_width_nitride.csv +0 -0
  161. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/modes/neff_vs_width_rib.csv +0 -0
  162. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/modes/neff_vs_width_strip.csv +0 -0
  163. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/neff_convergence_test.py +0 -0
  164. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/neff_vs_width.csv +0 -0
  165. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/overlap.py +0 -0
  166. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_dw_dh/test_dw_dh.csv +0 -0
  167. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_dw_dh/test_dw_dh.obtained.csv +0 -0
  168. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_dw_dh/test_dw_dh_dispersion.csv +0 -0
  169. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_dw_dh.py +0 -0
  170. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_find_modes.py +0 -0
  171. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_find_modes_dispersion.py +0 -0
  172. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.csv +0 -0
  173. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.obtained.csv +0 -0
  174. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/tests/test_neff_vs_width.py +0 -0
  175. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/types.py +0 -0
  176. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/modes/waveguide.py +0 -0
  177. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/palace/__init__.py +0 -0
  178. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/palace/driven.json +0 -0
  179. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/palace/electrostatic.json +0 -0
  180. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/palace/get_capacitance.py +0 -0
  181. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/palace/get_scattering.py +0 -0
  182. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/palace/tests/test_palace.py +0 -0
  183. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/path_length_analysis/__init__.py +0 -0
  184. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/path_length_analysis/path_length_analysis.py +0 -0
  185. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/path_length_analysis/path_length_analysis_from_gds.py +0 -0
  186. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/path_length_analysis/test_pathlength_extraction.py +0 -0
  187. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/photonic_circuit_models/__init__.py +0 -0
  188. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/photonic_circuit_models/coupler.py +0 -0
  189. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/photonic_circuit_models/fsr.py +0 -0
  190. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/photonic_circuit_models/heater.py +0 -0
  191. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/photonic_circuit_models/mzi.py +0 -0
  192. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/photonic_circuit_models/ring.py +0 -0
  193. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/__init__.py +0 -0
  194. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/diffusion.py +0 -0
  195. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/implant_tables.py +0 -0
  196. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/pysrim.py +0 -0
  197. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/silicon.py +0 -0
  198. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/skew/antimony_si_skew.csv +0 -0
  199. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/skew/arsenic_si_skew.csv +0 -0
  200. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/skew/boron_si_skew.csv +0 -0
  201. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/process/skew/phosphorus_si_skew.csv +0 -0
  202. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/__init__.py +0 -0
  203. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/interpolators.py +0 -0
  204. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/mlp.py +0 -0
  205. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/models.py +0 -0
  206. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/parameter.py +0 -0
  207. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/plot_model.py +0 -0
  208. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/read.py +0 -0
  209. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/tests/test_mzi.py +0 -0
  210. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.obtained.yml +0 -0
  211. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.yml +0 -0
  212. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/tests/test_mzi_lattice.py +0 -0
  213. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sax/tests/test_parameters.py +0 -0
  214. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sentaurus/mask_sde.py +0 -0
  215. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sentaurus/mask_sprocess.py +0 -0
  216. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sentaurus/sde.py +0 -0
  217. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sentaurus/sdevice.py +0 -0
  218. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sentaurus/sprocess.py +0 -0
  219. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/sentaurus/svisual.py +0 -0
  220. {gplugins-1.3.4/gplugins/sax/integrations → gplugins-1.3.6/gplugins/spice}/__init__.py +0 -0
  221. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/spice/spice_to_yaml.py +0 -0
  222. {gplugins-1.3.4/gplugins/spice → gplugins-1.3.6/gplugins/spice/tests}/__init__.py +0 -0
  223. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/spice/tests/test_interconnect.py +0 -0
  224. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/__init__.py +0 -0
  225. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/component.py +0 -0
  226. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/get_results.py +0 -0
  227. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/get_simulation_grating_coupler.py +0 -0
  228. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/materials.py +0 -0
  229. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/modes.py +0 -0
  230. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_component_modeler.py +0 -0
  231. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_materials.py +0 -0
  232. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_modes/test_sweep_width.csv +0 -0
  233. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_modes/test_sweep_width.obtained.csv +0 -0
  234. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_modes_coupler.py +0 -0
  235. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_modes_waveguide.py +0 -0
  236. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_plot_simulation_grating_coupler.py +0 -0
  237. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/test_write_sparameters.py +0 -0
  238. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/tests_sparameters/sim_ref.yaml +0 -0
  239. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters.py +0 -0
  240. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters_grating_coupler.py +0 -0
  241. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/types.py +0 -0
  242. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/util.py +0 -0
  243. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/tidy3d/write_sparameters_grating_coupler.py +0 -0
  244. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/typings.py +0 -0
  245. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/vlsir/__init__.py +0 -0
  246. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/vlsir/export_netlist.py +0 -0
  247. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/vlsir/tests/resources/pads_correct.cir +0 -0
  248. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/vlsir/tests/resources/pads_correct.scs +0 -0
  249. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/vlsir/tests/resources/pads_correct.sp +0 -0
  250. {gplugins-1.3.4 → gplugins-1.3.6}/gplugins/vlsir/tests/test_vlsir.py +0 -0
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gplugins
3
- Version: 1.3.4
3
+ Version: 1.3.6
4
4
  Summary: gdsfactory plugins
5
5
  Keywords: python
6
6
  Author-email: gdsfactory <contact@gdsfactory.com>
7
7
  Requires-Python: >=3.11
8
8
  Description-Content-Type: text/markdown
9
- Classifier: Programming Language :: Python :: 3.10
10
9
  Classifier: Programming Language :: Python :: 3.11
11
10
  Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
12
  Classifier: Operating System :: OS Independent
13
13
  License-File: LICENSE
14
14
  Requires-Dist: gdsfactory>=9.3.5
@@ -29,6 +29,7 @@ Requires-Dist: matplotlib ; extra == "docs"
29
29
  Requires-Dist: jupyter-book~=1.0 ; extra == "docs"
30
30
  Requires-Dist: pyvista[all]<=0.43.8 ; extra == "docs"
31
31
  Requires-Dist: bokeh ; extra == "docs"
32
+ Requires-Dist: scikit-learn ; extra == "docs"
32
33
  Requires-Dist: femwell~=0.1.11 ; extra == "femwell"
33
34
  Requires-Dist: meshwell~=1.0.7 ; extra == "femwell"
34
35
  Requires-Dist: jinja2 ; extra == "gfviz"
@@ -58,20 +59,11 @@ Requires-Dist: jaxlib>=0.4.26 ; extra == "meow"
58
59
  Requires-Dist: flax>=0.8.2 ; extra == "meow"
59
60
  Requires-Dist: meow-sim>=0.13,<0.14 ; extra == "meow"
60
61
  Requires-Dist: tidy3d>=2.8.2,<2.9 ; extra == "meow"
61
- Requires-Dist: jax>=0.4.26 ; extra == "sax"
62
- Requires-Dist: jaxlib>=0.4.26 ; extra == "sax"
63
- Requires-Dist: flax>=0.8.2 ; extra == "sax"
64
62
  Requires-Dist: sax>=0.13.1,<0.15.0 ; extra == "sax"
65
- Requires-Dist: scikit-learn ; extra == "sax"
66
- Requires-Dist: pyvis<=0.3.1 ; extra == "sax"
67
- Requires-Dist: ray ; extra == "sax"
68
63
  Requires-Dist: bokeh ; extra == "schematic"
69
64
  Requires-Dist: ipywidgets ; extra == "schematic"
70
65
  Requires-Dist: natsort ; extra == "schematic"
71
66
  Requires-Dist: tidy3d>=2.8.2,<2.9 ; extra == "tidy3d"
72
- Requires-Dist: meshio ; extra == "tidy3d"
73
- Requires-Dist: numpy ; extra == "tidy3d"
74
- Requires-Dist: meshwell~=1.0.7 ; extra == "tidy3d"
75
67
  Requires-Dist: gdstk ; extra == "tidy3d"
76
68
  Requires-Dist: vlsir ; extra == "vlsir"
77
69
  Requires-Dist: vlsirtools ; extra == "vlsir"
@@ -90,7 +82,7 @@ Provides-Extra: schematic
90
82
  Provides-Extra: tidy3d
91
83
  Provides-Extra: vlsir
92
84
 
93
- # gplugins 1.3.4
85
+ # gplugins 1.3.6
94
86
 
95
87
  [![docs](https://github.com/gdsfactory/gplugins/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/gplugins/)
96
88
  [![PyPI](https://img.shields.io/pypi/v/gplugins)](https://pypi.org/project/gplugins/)
@@ -1,4 +1,4 @@
1
- # gplugins 1.3.4
1
+ # gplugins 1.3.6
2
2
 
3
3
  [![docs](https://github.com/gdsfactory/gplugins/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/gplugins/)
4
4
  [![PyPI](https://img.shields.io/pypi/v/gplugins)](https://pypi.org/project/gplugins/)
@@ -1,6 +1,6 @@
1
1
  """gplugins - gdsfactory plugins."""
2
2
 
3
- __version__ = "1.3.4"
3
+ __version__ = "1.3.6"
4
4
 
5
5
  import pathlib
6
6
 
@@ -2,6 +2,7 @@ from functools import cached_property
2
2
  from hashlib import md5
3
3
  from typing import TypeAlias
4
4
 
5
+ import shapely
5
6
  import gdsfactory as gf
6
7
  import numpy as np
7
8
  from gdsfactory.component import Component
@@ -15,13 +16,77 @@ from pydantic import (
15
16
  )
16
17
  from shapely import MultiPolygon, Polygon
17
18
 
18
- from gplugins.gmsh.parse_gds import cleanup_component
19
19
 
20
20
  from ..types import AnyShapelyPolygon, GFComponent
21
21
 
22
+ from gdsfactory.pdk import get_layer_stack, get_layer, get_layer_name
23
+
22
24
  Coordinate: TypeAlias = tuple[float, float]
23
25
 
24
26
 
27
+ def round_coordinates(geom, ndigits=4):
28
+ """Round coordinates to n_digits to eliminate floating point errors."""
29
+
30
+ def _round_coords(x, y, z=None):
31
+ x = round(x, ndigits)
32
+ y = round(y, ndigits)
33
+
34
+ if z is not None:
35
+ z = round(x, ndigits)
36
+
37
+ return [c for c in (x, y, z) if c is not None]
38
+
39
+ return shapely.ops.transform(_round_coords, geom)
40
+
41
+
42
+ def fuse_polygons(component, layer, round_tol=4, simplify_tol=1e-4, offset_tol=None):
43
+ """Take all polygons from a layer, and returns a single (Multi)Polygon shapely object."""
44
+ layer_region = layer.get_shapes(component)
45
+
46
+ # Convert polygons to shapely
47
+ # TODO: do all polygon processing in KLayout at the gplugins level for speed
48
+ shapely_polygons = []
49
+ for klayout_polygon in layer_region.each_merged():
50
+ exterior_points = [
51
+ (point.x / 1000, point.y / 1000)
52
+ for point in klayout_polygon.each_point_hull()
53
+ ]
54
+ interior_points = []
55
+ for hole_index in range(klayout_polygon.holes()):
56
+ holes_points = [
57
+ (point.x / 1000, point.y / 1000)
58
+ for point in klayout_polygon.each_point_hole(hole_index)
59
+ ]
60
+ interior_points.append(holes_points)
61
+
62
+ shapely_polygons.append(
63
+ round_coordinates(
64
+ shapely.geometry.Polygon(shell=exterior_points, holes=interior_points),
65
+ round_tol,
66
+ )
67
+ )
68
+
69
+ return shapely.ops.unary_union(shapely_polygons).simplify(
70
+ simplify_tol, preserve_topology=False
71
+ )
72
+
73
+
74
+ def cleanup_component(component, layer_stack, round_tol=2, simplify_tol=1e-2):
75
+ """Process component polygons before meshing."""
76
+ layer_stack_dict = layer_stack.to_dict()
77
+
78
+ return {
79
+ layername: fuse_polygons(
80
+ component,
81
+ layer["layer"],
82
+ round_tol=round_tol,
83
+ simplify_tol=simplify_tol,
84
+ )
85
+ for layername, layer in layer_stack_dict.items()
86
+ if layer["layer"] is not None
87
+ }
88
+
89
+
25
90
  def move_polar_rad_copy(
26
91
  pos: Coordinate, angle: float, length: float
27
92
  ) -> NDArray[np.float64]:
@@ -223,13 +288,19 @@ class LayeredComponentBase(BaseModel):
223
288
  )
224
289
 
225
290
  def get_port_layers(self, port: gf.Port) -> tuple[str, ...]:
226
- # FIXME: extract actual layer
227
- # this needs to be a list of all layers and derived layers that are
228
- # associated with the port layer enum
229
- return ("core",)
230
- return tuple(
231
- k for k, v in self.layer_stack.layers.items() if port.layer in v.layer
232
- )
291
+ layer_name = get_layer_name(port.layer)
292
+
293
+ derived_layers = []
294
+ for l_name, level in self.layer_stack.layers.items():
295
+ if layer_name in str(level.layer):
296
+ derived_layers.append(l_name)
297
+
298
+ return derived_layers
299
+
300
+ # return ("core",)
301
+ # return tuple(
302
+ # k for k, v in self.layer_stack.layers.items() if port.layer in v.layer
303
+ # )
233
304
 
234
305
  def get_layer_bbox(
235
306
  self, layername: str
@@ -3,9 +3,13 @@ from __future__ import annotations
3
3
  import gdsfactory as gf
4
4
  import meep as mp
5
5
  import numpy as np
6
- from gdsfactory.pdk import get_layer_stack
6
+ from kfactory import LayerEnum
7
+ from typing import cast
8
+ import shapely
9
+ from gdsfactory.pdk import get_layer_stack, get_layer, get_layer_name
7
10
  from gdsfactory.technology import LayerStack
8
- from gdsfactory.typings import ComponentSpec, CrossSectionSpec
11
+ from gdsfactory.technology import DerivedLayer, LayerStack, LayerViews, LogicalLayer
12
+ from gdsfactory.typings import ComponentSpec, CrossSectionSpec, LayerSpecs
9
13
 
10
14
  from gplugins.common.utils.parse_layer_stack import order_layer_stack
11
15
  from gplugins.gmeep.get_material import get_material
@@ -18,6 +22,7 @@ def get_meep_geometry_from_component(
18
22
  wavelength: float = 1.55,
19
23
  is_3d: bool = False,
20
24
  dispersive: bool = False,
25
+ exclude_layers: LayerSpecs | None = None,
21
26
  **kwargs,
22
27
  ) -> list[mp.GeometricObject]:
23
28
  """Returns Meep geometry from a gdsfactory component.
@@ -32,6 +37,9 @@ def get_meep_geometry_from_component(
32
37
  kwargs: settings.
33
38
  """
34
39
  component = gf.get_component(component=component, **kwargs)
40
+ polygons_per_layer = component.get_polygons_points(merge=True)
41
+
42
+
35
43
  layer_stack = layer_stack or get_layer_stack()
36
44
 
37
45
  layer_to_thickness = layer_stack.get_layer_to_thickness()
@@ -41,24 +49,40 @@ def get_meep_geometry_from_component(
41
49
  component_with_booleans = layer_stack.get_component_with_derived_layers(component)
42
50
 
43
51
  geometry = []
52
+ exclude_layers = exclude_layers or []
44
53
  layer_to_polygons = component_with_booleans.get_polygons_points()
45
54
 
46
- ordered_layer_stack_keys = order_layer_stack(layer_stack)[::-1]
55
+ # ordered_layer_stack_keys = order_layer_stack(layer_stack)[::-1]
56
+
57
+ for level in layer_stack.layers.values():
58
+ layer = level.layer
59
+
60
+ if isinstance(layer, LogicalLayer):
61
+ assert isinstance(layer.layer, tuple | LayerEnum)
62
+ layer_tuple = cast(tuple[int, int], tuple(layer.layer))
63
+ elif isinstance(layer, DerivedLayer):
64
+ assert level.derived_layer is not None
65
+ assert isinstance(level.derived_layer.layer, tuple | LayerEnum)
66
+ layer_tuple = cast(tuple[int, int], tuple(level.derived_layer.layer))
67
+ else:
68
+ raise ValueError(f"Layer {layer!r} is not a DerivedLayer or LogicalLayer")
47
69
 
48
- for layername in ordered_layer_stack_keys:
49
- layer = layer_stack.layers[layername].layer
70
+ layer_index = int(get_layer(layer_tuple))
50
71
 
51
- if layer not in layer_to_polygons:
72
+ if layer_index in exclude_layers:
52
73
  continue
53
- polygons = layer_to_polygons[layer]
54
- print(f"layer: {layer}, polygons: {polygons}")
55
74
 
56
- if layer in layer_to_thickness and layer in layer_to_material:
57
- height = layer_to_thickness[layer] if is_3d else mp.inf
58
- zmin_um = layer_to_zmin[layer] if is_3d else 0
59
- # center = mp.Vector3(0, 0, (zmin_um + height) / 2)
75
+ if layer_index not in polygons_per_layer:
76
+ continue
60
77
 
78
+ zmin = level.zmin
79
+ zmin_um = layer_to_zmin[layer] if is_3d else 0
80
+ if zmin is not None:
81
+ has_polygons = True
82
+ polygons = polygons_per_layer[layer_index]
83
+ height = level.thickness
61
84
  for polygon in polygons:
85
+ p = shapely.geometry.Polygon(polygon)
62
86
  vertices = [mp.Vector3(p[0], p[1], zmin_um) for p in polygon]
63
87
  material_name = layer_to_material[layer]
64
88
 
@@ -80,6 +104,7 @@ def get_meep_geometry_from_component(
80
104
  # center=center
81
105
  )
82
106
  )
107
+
83
108
  return geometry
84
109
 
85
110
 
@@ -163,7 +188,7 @@ if __name__ == "__main__":
163
188
 
164
189
  import gplugins.gmeep as gm
165
190
 
166
- c = gf.components.taper_strip_to_ridge_trenches()
191
+ c = gf.components.straight()
167
192
  sp = gm.write_sparameters_meep(
168
193
  c, run=False, ymargin_top=3, ymargin_bot=3, is_3d=True
169
194
  )
@@ -170,12 +170,8 @@ def get_simulation(
170
170
  else component
171
171
  )
172
172
 
173
- component_extended.show()
174
- # component_extended.flatten()
175
-
176
- # geometry_center = [component_extended.x, component_extended.y]
177
- # geometry_center = [0, 0]
178
- # print(geometry_center)
173
+ component_extended = component_extended.copy()
174
+ component_extended.flatten()
179
175
 
180
176
  layers_thickness = [
181
177
  layer_to_thickness[layer]
@@ -5,7 +5,6 @@ from types import LambdaType
5
5
  from typing import Any
6
6
 
7
7
  import gdsfactory as gf
8
- import nlopt
9
8
  import numpy as np
10
9
  from gdsfactory import Component
11
10
  from gdsfactory.technology import LayerStack
@@ -190,7 +189,7 @@ def run_meep_adjoint_optimizer(
190
189
  cost_function: LambdaType,
191
190
  update_variable: np.ndarray,
192
191
  maximize_cost_function: bool = True,
193
- algorithm: int = nlopt.LD_MMA,
192
+ algorithm_name: str = "LD_MMA",
194
193
  lower_bound: Any = 0,
195
194
  upper_bound: Any = 1,
196
195
  maxeval: int = 10,
@@ -205,7 +204,7 @@ def run_meep_adjoint_optimizer(
205
204
  cost_function: cost function to optimize.
206
205
  update_variable: variable to update the optimization with.
207
206
  maximize_cost_function: if True, maximize the cost function, else minimize it.
208
- algorithm: nlopt algorithm to use (default: nlopt.LD_MMA).
207
+ algorithm_name: nlopt algorithm to use (default: nlopt.LD_MMA).
209
208
  lower_bound: lower bound for the optimization.
210
209
  upper_bound: upper bound for the optimization.
211
210
  maxeval: maximum number of evaluations.
@@ -219,6 +218,9 @@ def run_meep_adjoint_optimizer(
219
218
  threshold_offset_from_max: threshold offset from max eps value.
220
219
  layer: layer to apply to the optimized component.
221
220
  """
221
+ import nlopt
222
+
223
+ algorithm = getattr(nlopt, algorithm_name)
222
224
  solver = nlopt.opt(algorithm, number_of_params)
223
225
  solver.set_lower_bounds(lower_bound)
224
226
  solver.set_upper_bounds(upper_bound)
@@ -19,7 +19,7 @@ from gdsfactory.component import Component
19
19
  from gdsfactory.pdk import get_layer_stack
20
20
  from gdsfactory.serialization import clean_value_json
21
21
  from gdsfactory.technology import LayerStack
22
- from gdsfactory.typings import ComponentSpec, PathType, Port, PortSymmetries
22
+ from gdsfactory.typings import ComponentSpec, PathType, Port, PortSymmetries, LayerSpec
23
23
  from tqdm.auto import tqdm
24
24
 
25
25
  from gplugins.common.utils import port_symmetries
@@ -151,6 +151,7 @@ def write_sparameters_meep(
151
151
  plot_args: dict | None = None,
152
152
  only_return_filepath_sim_settings=False,
153
153
  verbosity: int = 0,
154
+ padding_layers: tuple[LayerSpec, ...] = ("PADDING",),
154
155
  **settings,
155
156
  ) -> dict[str, np.ndarray]:
156
157
  r"""Returns Sparameters and writes them to npz filepath.
@@ -340,6 +341,7 @@ def write_sparameters_meep(
340
341
 
341
342
  component = gf.add_padding_container(
342
343
  component,
344
+ layers=padding_layers,
343
345
  default=0,
344
346
  top=ymargin_top,
345
347
  bottom=ymargin_bot,
@@ -7,9 +7,9 @@ requires = ["flit_core >=3.2,<4"]
7
7
  [project]
8
8
  authors = [{name = "gdsfactory", email = "contact@gdsfactory.com"}]
9
9
  classifiers = [
10
- "Programming Language :: Python :: 3.10",
11
10
  "Programming Language :: Python :: 3.11",
12
11
  "Programming Language :: Python :: 3.12",
12
+ "Programming Language :: Python :: 3.13",
13
13
  "Operating System :: OS Independent"
14
14
  ]
15
15
  dependencies = [
@@ -25,7 +25,7 @@ license = {file = "LICENSE"}
25
25
  name = "gplugins"
26
26
  readme = "README.md"
27
27
  requires-python = ">=3.11"
28
- version = "1.3.4"
28
+ version = "1.3.6"
29
29
 
30
30
  [project.optional-dependencies]
31
31
  dev = [
@@ -36,7 +36,7 @@ dev = [
36
36
  "pyswarms"
37
37
  ]
38
38
  devsim = ["devsim", "pyvista<=0.43.8", "tidy3d>=2.8.2,<2.9"]
39
- docs = ["jupytext", "matplotlib", "jupyter-book~=1.0", "pyvista[all]<=0.43.8", "bokeh"]
39
+ docs = ["jupytext", "matplotlib", "jupyter-book~=1.0", "pyvista[all]<=0.43.8", "bokeh", "scikit-learn"]
40
40
  femwell = ["femwell~=0.1.11", "meshwell~=1.0.7"]
41
41
  gfviz = ["jinja2", "fastapi", "shapely", "natsort"]
42
42
  gmsh = [
@@ -61,16 +61,13 @@ meow = [
61
61
  "tidy3d>=2.8.2,<2.9"
62
62
  ]
63
63
  sax = [
64
- "jax>=0.4.26",
65
- "jaxlib>=0.4.26",
66
- "flax>=0.8.2",
67
- "sax>=0.13.1,<0.15.0",
68
- "scikit-learn",
69
- "pyvis<=0.3.1",
70
- "ray"
64
+ "sax>=0.13.1,<0.15.0"
71
65
  ]
72
66
  schematic = ["bokeh", "ipywidgets", "natsort"]
73
- tidy3d = ["tidy3d>=2.8.2,<2.9", "meshio", "numpy", "meshwell~=1.0.7", "gdstk"]
67
+ tidy3d = [
68
+ "tidy3d>=2.8.2,<2.9",
69
+ "gdstk"
70
+ ]
74
71
  vlsir = ["vlsir", "vlsirtools"]
75
72
 
76
73
  [tool.codespell]
@@ -192,7 +189,7 @@ message_template = "Bump to {new_version}"
192
189
  tag_template = "v{new_version}"
193
190
 
194
191
  [tool.tbump.version]
195
- current = "1.3.4"
192
+ current = "1.3.6"
196
193
  regex = '''
197
194
  (?P<major>\d+)
198
195
  \.