pyfemtet 1.1.2__tar.gz → 1.1.4__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.

Potentially problematic release.


This version of pyfemtet might be problematic. Click here for more details.

Files changed (178) hide show
  1. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/PKG-INFO +6 -6
  2. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/dask_util.py +2 -2
  3. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/history/_history.py +16 -7
  4. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_base_interface.py +17 -10
  5. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_excel_interface/excel_interface.py +3 -3
  6. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +3 -3
  7. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +6 -6
  8. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +3 -3
  9. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +6 -4
  10. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +8 -2
  11. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +3 -3
  12. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/worker_status.py +5 -2
  13. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyproject.toml +2 -3
  14. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/LICENSE +0 -0
  15. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/LICENSE_THIRD_PARTY.txt +0 -0
  16. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/README.md +0 -0
  17. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/__init__.py +0 -0
  18. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/1. make_pot_and_update_po.bat +0 -0
  19. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/2. build_mo.bat +0 -0
  20. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/__init__.py +0 -0
  21. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/babel.cfg +0 -0
  22. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/i18n.py +0 -0
  23. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  24. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +0 -0
  25. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/locales/messages.pot +0 -0
  26. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_i18n/messages.py +0 -0
  27. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/__init__.py +0 -0
  28. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/closing.py +0 -0
  29. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/df_util.py +0 -0
  30. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/excel_macro_util.py +0 -0
  31. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/excel_parse_util.py +0 -0
  32. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/femtet_access_inspection.py +0 -0
  33. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/femtet_autosave.py +0 -0
  34. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/femtet_exit.py +0 -0
  35. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/femtet_version.py +0 -0
  36. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/helper.py +0 -0
  37. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/process_util.py +0 -0
  38. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/sample.xlsx +0 -0
  39. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/_util/str_enum.py +0 -0
  40. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/core.py +0 -0
  41. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/dispatch_extensions/__init__.py +0 -0
  42. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/dispatch_extensions/_impl.py +0 -0
  43. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/logger/__init__.py +0 -0
  44. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/logger/_impl.py +0 -0
  45. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/__init__.py +0 -0
  46. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/exceptions.py +0 -0
  47. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/femopt.py +0 -0
  48. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/history/__init__.py +0 -0
  49. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/history/_hypervolume.py +0 -0
  50. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/history/_optimality.py +0 -0
  51. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/__init__.py +0 -0
  52. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_dummy_classes.py +0 -0
  53. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_excel_interface/__init__.py +0 -0
  54. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
  55. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_interface/__init__.py +0 -0
  56. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py +0 -0
  57. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +0 -0
  58. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
  59. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +0 -0
  60. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py +0 -0
  61. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +0 -0
  62. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_solidworks_interface/__init__.py +0 -0
  63. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +0 -0
  64. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +0 -0
  65. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +0 -0
  66. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/interface/_with_excel_settings/__init__.py +0 -0
  67. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
  68. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/meta_script/__init__.py +0 -0
  69. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/meta_script/__main__.py +0 -0
  70. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
  71. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
  72. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/__init__.py +0 -0
  73. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/_base_optimizer.py +0 -0
  74. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/_trial_queue.py +0 -0
  75. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +0 -0
  76. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +0 -0
  77. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +0 -0
  78. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +0 -0
  79. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +0 -0
  80. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +0 -0
  81. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +0 -0
  82. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
  83. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +0 -0
  84. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +0 -0
  85. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/prediction/__init__.py +0 -0
  86. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/prediction/_botorch_utils.py +0 -0
  87. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +0 -0
  88. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/prediction/_helper.py +0 -0
  89. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/prediction/_model.py +0 -0
  90. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/problem/__init__.py +0 -0
  91. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/problem/problem.py +0 -0
  92. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/problem/variable_manager/__init__.py +0 -0
  93. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +0 -0
  94. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/problem/variable_manager/_variable_manager.py +0 -0
  95. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/__init__.py +0 -0
  96. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
  97. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/__init__.py +0 -0
  98. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/__main__.py +0 -0
  99. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_base_application.py +0 -0
  100. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_common_pages.py +0 -0
  101. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_complex_components/__init__.py +0 -0
  102. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_complex_components/alert_region.py +0 -0
  103. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_complex_components/control_femtet.py +0 -0
  104. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +0 -0
  105. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_complex_components/main_graph.py +0 -0
  106. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_complex_components/pm_graph.py +0 -0
  107. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_detail_page.py +0 -0
  108. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_helper.py +0 -0
  109. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_process_monitor/__init__.py +0 -0
  110. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +0 -0
  111. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +0 -0
  112. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/__init__.py +0 -0
  113. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dbc.py +0 -0
  114. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dcc.py +0 -0
  115. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/html.py +0 -0
  116. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/str_enum.py +0 -0
  117. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore +0 -0
  118. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/__init__.py +0 -0
  119. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +0 -0
  120. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +0 -0
  121. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +0 -0
  122. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +0 -0
  123. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
  124. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
  125. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +0 -0
  126. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
  127. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
  128. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
  129. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
  130. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
  131. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
  132. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
  133. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
  134. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
  135. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
  136. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
  137. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
  138. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
  139. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
  140. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
  141. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
  142. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
  143. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
  144. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
  145. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
  146. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
  147. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
  148. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
  149. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
  150. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
  151. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
  152. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
  153. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
  154. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
  155. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
  156. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
  157. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
  158. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
  159. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
  160. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
  161. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
  162. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
  163. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
  164. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
  165. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
  166. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
  167. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
  168. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
  169. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
  170. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
  171. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
  172. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
  173. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/plotter/__init__.py +0 -0
  174. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/plotter/contour_creator.py +0 -0
  175. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/plotter/main_figure_creator.py +0 -0
  176. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +0 -0
  177. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +0 -0
  178. {pyfemtet-1.1.2 → pyfemtet-1.1.4}/pyfemtet/opt/wat_ex14_parametric_jp.femprj +0 -0
@@ -1,12 +1,13 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: pyfemtet
3
- Version: 1.1.2
3
+ Version: 1.1.4
4
4
  Summary: Design parameter optimization using Femtet.
5
- License: MIT
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ License-File: LICENSE_THIRD_PARTY.txt
6
8
  Author: pyfemtet
7
9
  Author-email: 148934231+pyfemtet@users.noreply.github.com
8
10
  Requires-Python: >= 3.10, < 3.14
9
- Classifier: License :: OSI Approved :: MIT License
10
11
  Classifier: Programming Language :: Python :: 3
11
12
  Classifier: Programming Language :: Python :: 3.10
12
13
  Classifier: Programming Language :: Python :: 3.11
@@ -29,8 +30,7 @@ Requires-Dist: optuna-integration (>=3.6.0,<5.0.0)
29
30
  Requires-Dist: pandas (>=2.2.3,<3)
30
31
  Requires-Dist: plotly (>=5.22.0,<6)
31
32
  Requires-Dist: psutil (>=5.9.6,<6)
32
- Requires-Dist: pywin32 (<307) ; sys_platform == "win32" and python_version < "3.13"
33
- Requires-Dist: pywin32 (>=309) ; sys_platform == "win32" and python_version >= "3.13"
33
+ Requires-Dist: pywin32 (>=310) ; sys_platform == "win32"
34
34
  Requires-Dist: pyyaml (>=6.0.2,<7)
35
35
  Requires-Dist: scipy (>=1.11.4,<2)
36
36
  Requires-Dist: torch
@@ -40,9 +40,9 @@ __all__ = [
40
40
  _lock_pool = {}
41
41
 
42
42
 
43
- def get_client():
43
+ def get_client(scheduler_address=None):
44
44
  try:
45
- return _get_client()
45
+ return _get_client(scheduler_address)
46
46
  except ValueError:
47
47
  return None
48
48
 
@@ -136,9 +136,11 @@ class DataFrameWrapper:
136
136
  __df: pd.DataFrame
137
137
  _lock_name = 'edit-df'
138
138
  _dataset_name: str
139
+ _scheduler_address: str
139
140
 
140
141
  def __init__(self, df: pd.DataFrame):
141
142
  self._dataset_name = 'df-' + generate_random_id()
143
+ self._scheduler_address = None
142
144
  self.set_df(df)
143
145
 
144
146
  def __len__(self):
@@ -173,7 +175,7 @@ class DataFrameWrapper:
173
175
 
174
176
  """
175
177
 
176
- client = get_client()
178
+ client = get_client(self._scheduler_address)
177
179
 
178
180
  # dask クラスターがある場合
179
181
  if client is not None:
@@ -185,6 +187,8 @@ class DataFrameWrapper:
185
187
  # 健在の場合
186
188
  else:
187
189
 
190
+ self._scheduler_address = client.scheduler.address
191
+
188
192
  df = None
189
193
 
190
194
  with Lock('access_dataset_df'):
@@ -192,9 +196,11 @@ class DataFrameWrapper:
192
196
  if self._dataset_name in client.list_datasets():
193
197
  df = client.get_dataset(self._dataset_name)
194
198
 
195
- # set の前に get されることはあってはならない
199
+ # 存在しない場合は publish する
196
200
  else:
197
- raise RuntimeError
201
+ df = self.__df
202
+ client.publish_dataset(**{self._dataset_name: df})
203
+ sleep(0.1)
198
204
 
199
205
  assert df is not None
200
206
 
@@ -235,10 +241,13 @@ class DataFrameWrapper:
235
241
  apply_partial_df(df, partial_df, equality_filters)
236
242
 
237
243
  # dask クラスター上のデータを更新
238
- client = get_client()
244
+ client = get_client(self._scheduler_address)
239
245
  if client is not None:
240
246
  if client.scheduler is not None:
241
- with Lock('access_dataset_df'):
247
+
248
+ self._scheduler_address = client.scheduler.address
249
+
250
+ with Lock('access_dataset_df', client):
242
251
 
243
252
  # datasets 上に存在する場合は削除(上書きができない)
244
253
  if self._dataset_name in client.list_datasets():
@@ -1347,7 +1356,7 @@ class History:
1347
1356
  @staticmethod
1348
1357
  def postprocess_after_recording(row):
1349
1358
 
1350
- client = get_client()
1359
+ client = get_client(self._records.df_wrapper._scheduler_address)
1351
1360
 
1352
1361
  trial_name = self.get_trial_name(row=row)
1353
1362
 
@@ -1405,7 +1414,7 @@ class History:
1405
1414
  self_.postprocess_after_recording(row)
1406
1415
 
1407
1416
  # save history if no FEMOpt
1408
- client = get_client()
1417
+ client = get_client(self._records.df_wrapper._scheduler_address)
1409
1418
  if client is None:
1410
1419
  self.save()
1411
1420
 
@@ -41,6 +41,7 @@ class AbstractFEMInterface:
41
41
  _load_problem_from_fem: bool = False
42
42
  current_prm_values: TrialInput
43
43
  _tmp_dir: tempfile.TemporaryDirectory
44
+ _file_suffix: str
44
45
 
45
46
  # ===== update =====
46
47
 
@@ -70,13 +71,19 @@ class AbstractFEMInterface:
70
71
 
71
72
  # ===== dask util =====
72
73
 
73
- @staticmethod
74
- def _get_worker_index_from_optimizer(opt: AbstractOptimizer | None) -> str:
75
- if opt is None:
76
- worker_index = 'copy'
77
- else:
78
- worker_index = f'copy_{opt._worker_index}' if opt._worker_index is not None else 'copy'
79
- return worker_index
74
+ def _get_file_suffix(self, opt: AbstractOptimizer | None) -> str:
75
+
76
+ file_suffix = 'copy'
77
+
78
+ if opt is not None:
79
+ if opt._worker_index is not None:
80
+ file_suffix = file_suffix + f'_{opt._worker_index}'
81
+
82
+ if hasattr(self, '_file_suffix'):
83
+ if self._file_suffix is not None:
84
+ file_suffix = file_suffix + f'_{self._file_suffix}'
85
+
86
+ return file_suffix
80
87
 
81
88
  def _rename_and_get_path_on_worker_space(self, orig_path, suffix, ignore_no_exist=False) -> str:
82
89
  # 与えられた path と同名のファイルを
@@ -106,13 +113,13 @@ class AbstractFEMInterface:
106
113
  else:
107
114
  return worker.local_directory
108
115
 
109
- def _distribute_files(self, paths: list[str]) -> None:
116
+ def _distribute_files(self, paths: list[str], scheduler_address=None) -> None:
110
117
 
111
118
  # executor 向け
112
119
  self._copy_to_temp_space(paths)
113
120
 
114
121
  # dask worker 向け
115
- client = get_client()
122
+ client = get_client(scheduler_address)
116
123
  if client is not None:
117
124
  for path in paths:
118
125
  if not os.path.exists(path):
@@ -147,7 +154,7 @@ class AbstractFEMInterface:
147
154
 
148
155
  # ===== setup =====
149
156
 
150
- def _setup_before_parallel(self) -> None:
157
+ def _setup_before_parallel(self, scheduler_address=None) -> None:
151
158
  pass
152
159
 
153
160
  def _setup_after_parallel(self, opt: AbstractOptimizer) -> None:
@@ -322,7 +322,7 @@ class ExcelInterface(COMInterface):
322
322
  return self.excel
323
323
 
324
324
  # ===== setup =====
325
- def _setup_before_parallel(self) -> None:
325
+ def _setup_before_parallel(self, scheduler_address=None) -> None:
326
326
  # メインプロセスで、並列プロセスを開始する前に行う前処理
327
327
 
328
328
  related_files = [self._original_input_xlsm_path]
@@ -345,7 +345,7 @@ class ExcelInterface(COMInterface):
345
345
  related_files.extend(self._original_related_file_paths)
346
346
 
347
347
  # dask worker 向け
348
- self._distribute_files(related_files)
348
+ self._distribute_files(related_files, scheduler_address)
349
349
 
350
350
  def _re_register_paths(self, suffix):
351
351
  # self.hoge_path を dask worker space のファイルに変える
@@ -381,7 +381,7 @@ class ExcelInterface(COMInterface):
381
381
  CoInitialize()
382
382
 
383
383
  # 元のファイルを保護するため space のファイルを使用
384
- suffix = self._get_worker_index_from_optimizer(opt)
384
+ suffix = self._get_file_suffix(opt)
385
385
  self._re_register_paths(suffix)
386
386
 
387
387
  # excel に繋ぐ
@@ -199,8 +199,8 @@ class FemtetInterface(COMInterface):
199
199
  """
200
200
  return self.Femtet
201
201
 
202
- def _setup_before_parallel(self):
203
- self._distribute_files([self.femprj_path])
202
+ def _setup_before_parallel(self, scheduler_address=None):
203
+ self._distribute_files([self.femprj_path], scheduler_address)
204
204
 
205
205
  def _setup_after_parallel(self, opt: AbstractOptimizer = None):
206
206
 
@@ -211,7 +211,7 @@ class FemtetInterface(COMInterface):
211
211
 
212
212
  # worker space の femprj に切り替える
213
213
  else:
214
- suffix = self._get_worker_index_from_optimizer(opt)
214
+ suffix = self._get_file_suffix(opt)
215
215
  self.femprj_path = self._rename_and_get_path_on_worker_space(self._original_femprj_path, suffix)
216
216
 
217
217
  # dask process ならば Femtet を起動
@@ -58,12 +58,12 @@ class _NXInterface(AbstractFEMInterface):
58
58
  self.export_solids = export_solids
59
59
  self.export_flattened_assembly = export_flattened_assembly
60
60
 
61
- def _setup_before_parallel(self) -> None:
62
- self._distribute_files([self.prt_path])
61
+ def _setup_before_parallel(self, scheduler_address=None) -> None:
62
+ self._distribute_files([self.prt_path], scheduler_address)
63
63
 
64
64
  def _setup_after_parallel(self, opt: AbstractOptimizer = None) -> None:
65
65
  # get suffix
66
- suffix = self._get_worker_index_from_optimizer(opt)
66
+ suffix = self._get_file_suffix(opt)
67
67
 
68
68
  # rename and get worker path
69
69
  self.prt_path = self._rename_and_get_path_on_worker_space(
@@ -189,9 +189,9 @@ class FemtetWithNXInterface(FemtetInterface, _NXInterface):
189
189
  export_flattened_assembly=export_flattened_assembly,
190
190
  )
191
191
 
192
- def _setup_before_parallel(self):
193
- FemtetInterface._setup_before_parallel(self)
194
- _NXInterface._setup_before_parallel(self)
192
+ def _setup_before_parallel(self, scheduler_address=None):
193
+ FemtetInterface._setup_before_parallel(self, scheduler_address)
194
+ _NXInterface._setup_before_parallel(self, scheduler_address)
195
195
 
196
196
  def _setup_after_parallel(self, opt: AbstractOptimizer = None):
197
197
  FemtetInterface._setup_after_parallel(self, opt)
@@ -81,9 +81,9 @@ class FemtetWithSolidworksInterface(FemtetInterface, SolidworksInterface, Abstra
81
81
  def _check_param_and_raise(self, param_name) -> None:
82
82
  pass
83
83
 
84
- def _setup_before_parallel(self):
85
- SolidworksInterface._setup_before_parallel(self)
86
- FemtetInterface._setup_before_parallel(self)
84
+ def _setup_before_parallel(self, scheduler_address=None):
85
+ SolidworksInterface._setup_before_parallel(self, scheduler_address)
86
+ FemtetInterface._setup_before_parallel(self, scheduler_address)
87
87
 
88
88
  def _setup_after_parallel(self, opt: AbstractOptimizer = None):
89
89
  SolidworksInterface._setup_after_parallel(self, opt)
@@ -96,13 +96,13 @@ class SolidworksInterface(COMInterface):
96
96
  'Solidworks マクロが有効であることを確認してください。'))
97
97
  self.swApp.Visible = self.solidworks_visible
98
98
 
99
- def _setup_before_parallel(self):
100
- self._distribute_files([self.sldprt_path])
99
+ def _setup_before_parallel(self, scheduler_address=None):
100
+ self._distribute_files([self.sldprt_path], scheduler_address)
101
101
 
102
102
  def _setup_after_parallel(self, opt: AbstractOptimizer = None):
103
103
 
104
104
  # get suffix
105
- suffix = self._get_worker_index_from_optimizer(opt)
105
+ suffix = self._get_file_suffix(opt)
106
106
 
107
107
  # rename and get worker path
108
108
  self.sldprt_path = self._rename_and_get_path_on_worker_space(
@@ -154,7 +154,9 @@ class SolidworksInterface(COMInterface):
154
154
  prm_name = _get_name_from_equation(eq)
155
155
  # 対象なら処理
156
156
  if prm_name in self.current_prm_values:
157
- new_equation = f'"{prm_name}" = {self.current_prm_values[prm_name].value}'
157
+ prm = self.current_prm_values[prm_name]
158
+ right = str(prm.value) + prm.properties.get('unit', '')
159
+ new_equation = f'"{prm_name}" = {right}'
158
160
  swEqnMgr.Equation(i, new_equation)
159
161
 
160
162
  # 式の計算
@@ -26,6 +26,8 @@ __all__ = [
26
26
 
27
27
  class BoTorchInterface(AbstractSurrogateModelInterfaceBase):
28
28
 
29
+ current_obj_std_values: dict[str, float]
30
+
29
31
  def __init__(
30
32
  self,
31
33
  history_path: str = None,
@@ -45,6 +47,7 @@ class BoTorchInterface(AbstractSurrogateModelInterfaceBase):
45
47
 
46
48
  self.model = SingleTaskGPModel()
47
49
  self.pyfemtet_model = PyFemtetModel()
50
+ self.current_obj_std_values = {}
48
51
 
49
52
  # get main only
50
53
  df = self.train_history.get_df(MAIN_FILTER)
@@ -64,11 +67,13 @@ class BoTorchInterface(AbstractSurrogateModelInterfaceBase):
64
67
  # update current objective values
65
68
  x = np.array([[variable.value for variable in self.current_prm_values.values()]])
66
69
 
67
- y, _ = self.pyfemtet_model.predict(x)
70
+ y, s = self.pyfemtet_model.predict(x)
68
71
  y = y[0]
72
+ s = s[0]
69
73
 
70
- for obj_name, obj_value in zip(self.train_history.obj_names, y):
74
+ for obj_name, obj_value, obj_std in zip(self.train_history.obj_names, y, s):
71
75
  self.current_obj_values.update({obj_name: obj_value})
76
+ self.current_obj_std_values.update({obj_name: obj_std})
72
77
 
73
78
 
74
79
  class PoFBoTorchInterface(BoTorchInterface, AbstractSurrogateModelInterfaceBase):
@@ -103,6 +108,7 @@ class PoFBoTorchInterface(BoTorchInterface, AbstractSurrogateModelInterfaceBase)
103
108
  self.train_history_c.load_csv(history_path, with_finalize=True)
104
109
  self.pof_threshold = 0.5
105
110
  self.feasibility_cdf_threshold = feasibility_cdf_threshold
111
+ self.current_obj_std_values = {}
106
112
 
107
113
  # use feasibility as a single objective
108
114
  self.train_history_c.obj_names = ['feasibility']
@@ -60,10 +60,10 @@ def _class_factory(FEMClass: type[AbstractFEMInterface]) -> type[AbstractFEMInte
60
60
  self._excel_initialized = True
61
61
  self._load_problem_from_fem = True
62
62
 
63
- def _setup_before_parallel(self):
63
+ def _setup_before_parallel(self, scheduler_address=None):
64
64
  assert self._excel_initialized, '最初に init_excel() を呼び出してください。'
65
- ExcelInterface._setup_before_parallel(self)
66
- FEMClass._setup_before_parallel(self)
65
+ ExcelInterface._setup_before_parallel(self, scheduler_address)
66
+ FEMClass._setup_before_parallel(self, scheduler_address)
67
67
 
68
68
  def _setup_after_parallel(self, opt: AbstractOptimizer):
69
69
  assert self._excel_initialized, '最初に init_excel() を呼び出してください。'
@@ -71,6 +71,7 @@ class WorkerStatus:
71
71
  terminated = worker_status_from_float(float('inf'))
72
72
 
73
73
  def __init__(self, dataset_name: str):
74
+ self._scheduler_address = None
74
75
  self._dataset_name = dataset_name
75
76
  self.__value: _WorkerStatus
76
77
  self.value = WorkerStatus.undefined
@@ -80,9 +81,10 @@ class WorkerStatus:
80
81
 
81
82
  out = None
82
83
 
83
- client = get_client()
84
+ client = get_client(self._scheduler_address)
84
85
  if client is not None:
85
86
  if client.scheduler is not None:
87
+ self._scheduler_address = client.scheduler.address
86
88
  key = self._dataset_name
87
89
  value: float | None = client.get_metadata(key, default=None)
88
90
 
@@ -111,9 +113,10 @@ class WorkerStatus:
111
113
 
112
114
  @value.setter
113
115
  def value(self, value: _WorkerStatus):
114
- client = get_client()
116
+ client = get_client(self._scheduler_address)
115
117
  if client is not None:
116
118
  if client.scheduler is not None:
119
+ self._scheduler_address = client.scheduler.address
117
120
  key = self._dataset_name
118
121
  client.set_metadata(key, value)
119
122
  # sleep(0.1)
@@ -11,8 +11,7 @@ dependencies = [
11
11
  "tqdm>=4.66.1,<5",
12
12
  "colorlog>=6.8.0,<7",
13
13
  "psutil>=5.9.6,<6",
14
- "pywin32<307 ; sys_platform == 'win32' and python_version < '3.13'",
15
- "pywin32>=309 ; sys_platform == 'win32' and python_version >= '3.13'",
14
+ "pywin32>=310; sys_platform == 'win32'",
16
15
  "femtetutils>=1.0.0,<2 ; sys_platform=='win32'",
17
16
  "dask~=2024.12.1",
18
17
  "distributed~=2024.12.1",
@@ -34,7 +33,7 @@ dependencies = [
34
33
 
35
34
  #[project.optional-dependencies]
36
35
  #brep = ["brepmatching>=0.1.8,<0.2"]
37
- version = "1.1.2"
36
+ version = "1.1.4"
38
37
 
39
38
  [project.urls]
40
39
  Repository = "https://github.com/pyfemtet/pyfemtet"
File without changes
File without changes
File without changes
File without changes