PyOpenMagnetics 1.7.37__tar.gz → 1.7.39__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 (95) hide show
  1. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/CMakeLists.txt +5 -3
  2. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/PKG-INFO +1 -1
  3. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/pyproject.toml +1 -1
  4. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/database.cpp +4 -2
  5. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/.github/workflows/ci.yml +0 -0
  6. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/.github/workflows/publish.yml +0 -0
  7. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/.gitignore +0 -0
  8. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/AGENTS.md +0 -0
  9. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/LICENSE +0 -0
  10. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/PyOpenMagnetics.pyi +0 -0
  11. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/README.md +0 -0
  12. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/_packaging/__init__.py +0 -0
  13. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/_packaging/_build_info.py.in +0 -0
  14. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/api/MAS.py +0 -0
  15. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/api/mas_db_reader.py +0 -0
  16. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/api/validation.py +0 -0
  17. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/clear_cibuildwheel_cache.sh +0 -0
  18. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/docs/compatibility.md +0 -0
  19. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/docs/errors.md +0 -0
  20. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/docs/performance.md +0 -0
  21. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/README.md +0 -0
  22. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/buck_inductor.py +0 -0
  23. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/complete_simulation_example.py +0 -0
  24. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/converter_design_example.py +0 -0
  25. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/debug_bobbin.py +0 -0
  26. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/debug_coil.py +0 -0
  27. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/debug_core.py +0 -0
  28. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/debug_plotting.py +0 -0
  29. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_220v_12v_1a.py +0 -0
  30. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_220v_12v_2a_complete.py +0 -0
  31. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_bh_curve.png +0 -0
  32. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_core.png +0 -0
  33. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_design.py +0 -0
  34. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_summary.png +0 -0
  35. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/flyback_waveforms.png +0 -0
  36. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/list_plot_funcs.py +0 -0
  37. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/plot_flyback_design.py +0 -0
  38. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/plot_flyback_pyom.py +0 -0
  39. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/test_field_calc.py +0 -0
  40. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/examples/test_field_plot.py +0 -0
  41. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/force_fresh_build.sh +0 -0
  42. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/llms.txt +0 -0
  43. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/notebooks/01_getting_started.ipynb +0 -0
  44. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/notebooks/02_buck_inductor.ipynb +0 -0
  45. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/notebooks/03_core_losses.ipynb +0 -0
  46. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/notebooks/README.md +0 -0
  47. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/requirements.txt +0 -0
  48. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/advisers.cpp +0 -0
  49. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/advisers.h +0 -0
  50. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/bobbin.cpp +0 -0
  51. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/bobbin.h +0 -0
  52. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/cmc.cpp +0 -0
  53. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/cmc.h +0 -0
  54. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/common.h +0 -0
  55. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/converter.cpp +0 -0
  56. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/converter.h +0 -0
  57. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/core.cpp +0 -0
  58. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/core.h +0 -0
  59. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/crossref.cpp +0 -0
  60. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/crossref.h +0 -0
  61. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/database.h +0 -0
  62. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/logging.cpp +0 -0
  63. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/logging.h +0 -0
  64. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/losses.cpp +0 -0
  65. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/losses.h +0 -0
  66. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/module.cpp +0 -0
  67. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/plotting.cpp +0 -0
  68. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/plotting.h +0 -0
  69. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/settings.cpp +0 -0
  70. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/settings.h +0 -0
  71. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/simulation.cpp +0 -0
  72. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/simulation.h +0 -0
  73. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/utils.cpp +0 -0
  74. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/utils.h +0 -0
  75. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/winding.cpp +0 -0
  76. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/winding.h +0 -0
  77. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/wire.cpp +0 -0
  78. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/src/wire.h +0 -0
  79. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/test.py +0 -0
  80. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/__init__.py +0 -0
  81. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/conftest.py +0 -0
  82. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_converter_endpoints.py +0 -0
  83. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_core.py +0 -0
  84. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_core_adviser.py +0 -0
  85. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_datasheet_only_catalogue.py +0 -0
  86. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_examples_integration.py +0 -0
  87. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_inputs.py +0 -0
  88. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_logging.py +0 -0
  89. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_losses_not_evaluable_catalogue.py +0 -0
  90. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_magnetic_adviser.py +0 -0
  91. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_magnetics_catalogue_load.py +0 -0
  92. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_mas_schema_walk.py +0 -0
  93. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_material_validator.py +0 -0
  94. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_plotting.py +0 -0
  95. {pyopenmagnetics-1.7.37 → pyopenmagnetics-1.7.39}/tests/test_winding.py +0 -0
@@ -31,14 +31,16 @@ else ()
31
31
  # Enable Link Time Optimization to reduce binary size
32
32
  set(CMAKE_INTERPROCEDURAL_OPTIMIZATION FALSE) # TEMP: disable LTO (OOM)
33
33
 
34
- # Wheel/CI build: -O1 keeps compilation fast and low-memory. -g is
34
+ # Wheel/CI build: -O2 (Alf, 2026-10-28, ABT #2124: at -O1 the thermal network's elimination ran as a
35
+ # scalar loop and was 43% of a catalogue search). Still the baseline x86-64 target with no -march, so no
36
+ # FMA contraction: results are not expected to change from -O1. -g is
35
37
  # intentionally dropped — full debug info on the large pybind11 + json
36
38
  # translation units (converter.cpp is ~6k lines) balloons RAM during
37
39
  # compile and OOM-kills CI runners (exit 143). Frame pointers are kept
38
40
  # for usable backtraces. We REPLACE (not append) the flags so the -g in
39
41
  # the default RelWithDebInfo flags is stripped too. For local debugging
40
42
  # with symbols, re-add -g here.
41
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O1 -DNDEBUG -fno-omit-frame-pointer")
43
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -DNDEBUG -fno-omit-frame-pointer")
42
44
  endif()
43
45
 
44
46
  SET(MAS_DIRECTORY "${CMAKE_BINARY_DIR}/MAS/")
@@ -142,7 +144,7 @@ if(NOT LOCAL_MKF_MAS)
142
144
  set(MKF_GIT_TAG "main"
143
145
  CACHE STRING "MKF git ref for the vendored PyOM build")
144
146
  # Force fresh clone by using a unique timestamp - update this when the pin changes
145
- set(MKF_FORCE_REFRESH "2026-10-28-mkf-292dd4c2")
147
+ set(MKF_FORCE_REFRESH "2026-10-28-mkf-ff429ce0")
146
148
  # Tell MKF to disable matplotplusplus and use SVG-based Painter instead
147
149
  set(INCLUDE_PYMKF ON CACHE BOOL "Build Python interface" FORCE)
148
150
  # GIT_SUBMODULES_RECURSE pulls in CAS/PEAS (added 2026-04 alongside the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyOpenMagnetics
3
- Version: 1.7.37
3
+ Version: 1.7.39
4
4
  Summary: Python wrapper for OpenMagnetics
5
5
  Author-Email: Alfonso Martinez <Alfonso_VII@hotmail.com>
6
6
  Classifier: Development Status :: 4 - Beta
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "PyOpenMagnetics"
7
- version = "1.7.37"
7
+ version = "1.7.39"
8
8
  requires-python = ">=3.8"
9
9
  authors = [
10
10
  { name="Alfonso Martinez", email="Alfonso_VII@hotmail.com" },
@@ -1,4 +1,5 @@
1
1
  #include "database.h"
2
+ #include "support/FastJsonParse.h"
2
3
  #include <sstream>
3
4
 
4
5
  namespace PyMKF {
@@ -216,7 +217,8 @@ std::string magnetic_cache_key(const OpenMagnetics::Magnetic& magnetic) {
216
217
  }
217
218
 
218
219
  std::pair<std::string, OpenMagnetics::Magnetic> read_magnetic_line(const std::string& line, bool expand) {
219
- json recordJson = json::parse(line);
220
+ // simdjson parses the catalogue line into the same nlohmann::json tree json::parse builds.
221
+ json recordJson = OpenMagnetics::parse_json_fast(line.data(), line.size());
220
222
  OpenMagnetics::Magnetic magnetic(recordJson);
221
223
  if (expand) {
222
224
  magnetic = OpenMagnetics::magnetic_autocomplete(magnetic);
@@ -262,7 +264,7 @@ std::vector<std::pair<std::string, OpenMagnetics::Magnetic>> stage_magnetics(std
262
264
  catch (const std::exception& e) {
263
265
  std::string reference;
264
266
  try {
265
- reference = reference_hint(json::parse(line));
267
+ reference = reference_hint(OpenMagnetics::parse_json_fast(line.data(), line.size()));
266
268
  }
267
269
  catch (const std::exception&) {
268
270
  // The line is not even json; the location alone identifies it.