pyfemtet 0.9.4__tar.gz → 1.5.1__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 (296) hide show
  1. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/PKG-INFO +30 -29
  2. pyfemtet-1.5.1/pyfemtet/__init__.py +6 -0
  3. pyfemtet-1.5.1/pyfemtet/_i18n/1. make_pot_and_update_po.bat +8 -0
  4. pyfemtet-1.5.1/pyfemtet/_i18n/2. build_mo.bat +5 -0
  5. pyfemtet-1.5.1/pyfemtet/_i18n/__init__.py +4 -0
  6. pyfemtet-1.5.1/pyfemtet/_i18n/babel.cfg +2 -0
  7. pyfemtet-1.5.1/pyfemtet/_i18n/i18n.py +37 -0
  8. pyfemtet-1.5.1/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
  9. pyfemtet-1.5.1/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +1020 -0
  10. pyfemtet-1.5.1/pyfemtet/_i18n/locales/messages.pot +987 -0
  11. {pyfemtet-0.9.4/pyfemtet/_message → pyfemtet-1.5.1/pyfemtet/_i18n}/messages.py +128 -42
  12. pyfemtet-1.5.1/pyfemtet/_util/closing.py +19 -0
  13. pyfemtet-1.5.1/pyfemtet/_util/dask_util.py +91 -0
  14. pyfemtet-1.5.1/pyfemtet/_util/df_util.py +61 -0
  15. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/_util/excel_macro_util.py +8 -3
  16. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/_util/excel_parse_util.py +43 -23
  17. pyfemtet-1.5.1/pyfemtet/_util/femtet_access_inspection.py +120 -0
  18. pyfemtet-0.9.4/pyfemtet/_femtet_config_util/autosave.py → pyfemtet-1.5.1/pyfemtet/_util/femtet_autosave.py +7 -0
  19. pyfemtet-1.5.1/pyfemtet/_util/femtet_exit.py +105 -0
  20. pyfemtet-1.5.1/pyfemtet/_util/femtet_version.py +20 -0
  21. pyfemtet-1.5.1/pyfemtet/_util/helper.py +103 -0
  22. pyfemtet-1.5.1/pyfemtet/_util/process_util.py +107 -0
  23. pyfemtet-1.5.1/pyfemtet/_util/solidworks_variable.py +169 -0
  24. pyfemtet-1.5.1/pyfemtet/_util/str_enum.py +44 -0
  25. pyfemtet-1.5.1/pyfemtet/_util/symbol_support_for_param_name.py +15 -0
  26. pyfemtet-1.5.1/pyfemtet/core.py +20 -0
  27. pyfemtet-1.5.1/pyfemtet/dispatch_extensions/__init__.py +8 -0
  28. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/dispatch_extensions/_impl.py +42 -198
  29. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/logger/__init__.py +8 -1
  30. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/logger/_impl.py +31 -7
  31. pyfemtet-1.5.1/pyfemtet/opt/__init__.py +13 -0
  32. pyfemtet-1.5.1/pyfemtet/opt/exceptions.py +55 -0
  33. pyfemtet-1.5.1/pyfemtet/opt/femopt.py +647 -0
  34. pyfemtet-1.5.1/pyfemtet/opt/history/__init__.py +12 -0
  35. pyfemtet-1.5.1/pyfemtet/opt/history/_history.py +1549 -0
  36. pyfemtet-1.5.1/pyfemtet/opt/history/_hypervolume.py +227 -0
  37. pyfemtet-1.5.1/pyfemtet/opt/history/_optimality.py +79 -0
  38. pyfemtet-1.5.1/pyfemtet/opt/interface/__init__.py +47 -0
  39. pyfemtet-1.5.1/pyfemtet/opt/interface/_base_interface.py +229 -0
  40. pyfemtet-1.5.1/pyfemtet/opt/interface/_dummy_classes.py +18 -0
  41. pyfemtet-1.5.1/pyfemtet/opt/interface/_excel_interface/__init__.py +3 -0
  42. pyfemtet-1.5.1/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
  43. pyfemtet-1.5.1/pyfemtet/opt/interface/_excel_interface/excel_interface.py +999 -0
  44. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_interface/__init__.py +3 -0
  45. {pyfemtet-0.9.4/pyfemtet/opt/interface → pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_interface}/_femtet_parametric.py +75 -42
  46. pyfemtet-0.9.4/pyfemtet/opt/interface/_femtet.py → pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +555 -361
  47. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +5 -0
  48. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +237 -0
  49. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
  50. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +98 -0
  51. {pyfemtet-0.9.4/pyfemtet/opt/interface/_femtet_with_nx → pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_nx_interface}/update_model.py +1 -3
  52. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +5 -0
  53. pyfemtet-1.5.1/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +142 -0
  54. pyfemtet-1.5.1/pyfemtet/opt/interface/_solidworks_interface/__init__.py +5 -0
  55. pyfemtet-1.5.1/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +208 -0
  56. pyfemtet-1.5.1/pyfemtet/opt/interface/_solidworks_interface/sw_const.py +32 -0
  57. pyfemtet-1.5.1/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +8 -0
  58. pyfemtet-1.5.1/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +152 -0
  59. pyfemtet-1.5.1/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +304 -0
  60. pyfemtet-1.5.1/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +18 -0
  61. pyfemtet-1.5.1/pyfemtet/opt/interface/_with_excel_settings/__init__.py +61 -0
  62. pyfemtet-1.5.1/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +134 -0
  63. pyfemtet-1.5.1/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
  64. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/__main__.py +58 -36
  65. pyfemtet-1.5.1/pyfemtet/opt/optimizer/__init__.py +14 -0
  66. pyfemtet-1.5.1/pyfemtet/opt/optimizer/_base_optimizer.py +1056 -0
  67. pyfemtet-1.5.1/pyfemtet/opt/optimizer/_trial_queue.py +101 -0
  68. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +9 -0
  69. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +63 -0
  70. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +952 -0
  71. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +7 -0
  72. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +18 -0
  73. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +248 -0
  74. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +1301 -0
  75. pyfemtet-1.5.1/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
  76. pyfemtet-1.5.1/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +1 -0
  77. pyfemtet-1.5.1/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +430 -0
  78. pyfemtet-1.5.1/pyfemtet/opt/prediction/__init__.py +7 -0
  79. pyfemtet-1.5.1/pyfemtet/opt/prediction/_botorch_utils.py +190 -0
  80. pyfemtet-1.5.1/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +142 -0
  81. pyfemtet-1.5.1/pyfemtet/opt/prediction/_helper.py +182 -0
  82. pyfemtet-1.5.1/pyfemtet/opt/prediction/_model.py +119 -0
  83. pyfemtet-1.5.1/pyfemtet/opt/problem/problem.py +313 -0
  84. pyfemtet-1.5.1/pyfemtet/opt/problem/variable_manager/__init__.py +20 -0
  85. pyfemtet-1.5.1/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +141 -0
  86. pyfemtet-1.5.1/pyfemtet/opt/problem/variable_manager/_variable_manager.py +367 -0
  87. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/__main__.py +5 -0
  88. pyfemtet-0.9.4/pyfemtet/opt/visualization/_base.py → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_base_application.py +18 -13
  89. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_common_pages.py +150 -0
  90. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_complex_components/alert_region.py +13 -9
  91. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_complex_components/control_femtet.py +16 -13
  92. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +556 -0
  93. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_complex_components/main_graph.py +117 -47
  94. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_complex_components/pm_graph.py +298 -150
  95. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_detail_page.py +106 -0
  96. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_helper.py +41 -0
  97. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +174 -0
  98. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +291 -0
  99. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_wrapped_components/dbc.py +1 -1
  100. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_wrapped_components/dcc.py +1 -1
  101. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_wrapped_components/html.py +1 -1
  102. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +5 -0
  103. pyfemtet-0.9.4/pyfemtet/opt/visualization/result_viewer/application.py → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +9 -8
  104. pyfemtet-0.9.4/pyfemtet/opt/visualization/result_viewer/pages.py → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +124 -101
  105. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +18 -0
  106. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
  107. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
  108. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +45 -0
  109. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
  110. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
  111. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
  112. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
  113. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
  114. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
  115. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
  116. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
  117. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
  118. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
  119. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
  120. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
  121. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
  122. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
  123. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
  124. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
  125. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
  126. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
  127. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
  128. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
  129. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
  130. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
  131. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
  132. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
  133. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
  134. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
  135. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
  136. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
  137. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
  138. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
  139. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
  140. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
  141. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
  142. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
  143. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
  144. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
  145. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
  146. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
  147. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
  148. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
  149. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
  150. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
  151. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
  152. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
  153. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
  154. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
  155. pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
  156. pyfemtet-1.5.1/pyfemtet/opt/visualization/plotter/contour_creator.py +105 -0
  157. pyfemtet-1.5.1/pyfemtet/opt/visualization/plotter/main_figure_creator.py +580 -0
  158. pyfemtet-1.5.1/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +33 -0
  159. pyfemtet-1.5.1/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +389 -0
  160. pyfemtet-1.5.1/pyfemtet/opt/worker_status.py +123 -0
  161. pyfemtet-1.5.1/pyproject.toml +92 -0
  162. pyfemtet-0.9.4/pyfemtet/__init__.py +0 -1
  163. pyfemtet-0.9.4/pyfemtet/_femtet_config_util/exit.py +0 -59
  164. pyfemtet-0.9.4/pyfemtet/_message/1. make_pot.bat +0 -11
  165. pyfemtet-0.9.4/pyfemtet/_message/2. make_mo.bat +0 -6
  166. pyfemtet-0.9.4/pyfemtet/_message/__init__.py +0 -5
  167. pyfemtet-0.9.4/pyfemtet/_message/babel.cfg +0 -2
  168. pyfemtet-0.9.4/pyfemtet/_message/locales/ja/LC_MESSAGES/messages.mo +0 -0
  169. pyfemtet-0.9.4/pyfemtet/_message/locales/ja/LC_MESSAGES/messages.po +0 -570
  170. pyfemtet-0.9.4/pyfemtet/_message/locales/messages.pot +0 -551
  171. pyfemtet-0.9.4/pyfemtet/_util/dask_util.py +0 -10
  172. pyfemtet-0.9.4/pyfemtet/_warning.py +0 -87
  173. pyfemtet-0.9.4/pyfemtet/brep/_impl.py +0 -18
  174. pyfemtet-0.9.4/pyfemtet/core.py +0 -52
  175. pyfemtet-0.9.4/pyfemtet/dispatch_extensions/__init__.py +0 -11
  176. pyfemtet-0.9.4/pyfemtet/opt/__init__.py +0 -27
  177. pyfemtet-0.9.4/pyfemtet/opt/_femopt.py +0 -1007
  178. pyfemtet-0.9.4/pyfemtet/opt/_femopt_core.py +0 -1169
  179. pyfemtet-0.9.4/pyfemtet/opt/_test_utils/control_femtet.py +0 -39
  180. pyfemtet-0.9.4/pyfemtet/opt/_test_utils/hyper_sphere.py +0 -24
  181. pyfemtet-0.9.4/pyfemtet/opt/_test_utils/record_history.py +0 -130
  182. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/excel_ui/(ref) original_project.femprj +0 -0
  183. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/excel_ui/femtet-macro.xlsm +0 -0
  184. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/excel_ui/pyfemtet-core.py +0 -291
  185. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/excel_ui/test-pyfemtet-core.cmd +0 -22
  186. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/restart/gal_ex13_parametric.femprj +0 -0
  187. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/restart/gal_ex13_parametric_restart.py +0 -99
  188. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/restart/gal_ex13_parametric_restart_jp.py +0 -102
  189. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_create_training_data.py +0 -60
  190. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_create_training_data_jp.py +0 -57
  191. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_optimize_with_surrogate.py +0 -100
  192. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_optimize_with_surrogate_jp.py +0 -90
  193. pyfemtet-0.9.4/pyfemtet/opt/advanced_samples/surrogate_model/gal_ex13_parametric.femprj +0 -0
  194. pyfemtet-0.9.4/pyfemtet/opt/interface/__init__.py +0 -37
  195. pyfemtet-0.9.4/pyfemtet/opt/interface/_base.py +0 -101
  196. pyfemtet-0.9.4/pyfemtet/opt/interface/_excel_interface.py +0 -984
  197. pyfemtet-0.9.4/pyfemtet/opt/interface/_femtet_excel.py +0 -141
  198. pyfemtet-0.9.4/pyfemtet/opt/interface/_femtet_with_nx/__init__.py +0 -3
  199. pyfemtet-0.9.4/pyfemtet/opt/interface/_femtet_with_nx/_interface.py +0 -178
  200. pyfemtet-0.9.4/pyfemtet/opt/interface/_femtet_with_sldworks.py +0 -298
  201. pyfemtet-0.9.4/pyfemtet/opt/interface/_surrogate/__init__.py +0 -5
  202. pyfemtet-0.9.4/pyfemtet/opt/interface/_surrogate/_base.py +0 -129
  203. pyfemtet-0.9.4/pyfemtet/opt/interface/_surrogate/_chaospy.py +0 -71
  204. pyfemtet-0.9.4/pyfemtet/opt/interface/_surrogate/_singletaskgp.py +0 -71
  205. pyfemtet-0.9.4/pyfemtet/opt/interface/_surrogate_excel.py +0 -102
  206. pyfemtet-0.9.4/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
  207. pyfemtet-0.9.4/pyfemtet/opt/optimizer/__init__.py +0 -16
  208. pyfemtet-0.9.4/pyfemtet/opt/optimizer/_base.py +0 -376
  209. pyfemtet-0.9.4/pyfemtet/opt/optimizer/_optuna/_botorch_patch/enable_nonlinear_constraint.py +0 -220
  210. pyfemtet-0.9.4/pyfemtet/opt/optimizer/_optuna/_optuna.py +0 -434
  211. pyfemtet-0.9.4/pyfemtet/opt/optimizer/_optuna/_pof_botorch.py +0 -1914
  212. pyfemtet-0.9.4/pyfemtet/opt/optimizer/_scipy.py +0 -159
  213. pyfemtet-0.9.4/pyfemtet/opt/optimizer/_scipy_scalar.py +0 -127
  214. pyfemtet-0.9.4/pyfemtet/opt/optimizer/parameter.py +0 -113
  215. pyfemtet-0.9.4/pyfemtet/opt/prediction/_base.py +0 -61
  216. pyfemtet-0.9.4/pyfemtet/opt/prediction/single_task_gp.py +0 -119
  217. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/ParametricIF.femprj +0 -0
  218. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/ParametricIF.py +0 -29
  219. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/ParametricIF_test_result.reccsv +0 -13
  220. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.femprj +0 -0
  221. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.prt +0 -0
  222. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.py +0 -135
  223. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX_test_result.reccsv +0 -23
  224. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.SLDPRT +0 -0
  225. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.femprj +0 -0
  226. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.py +0 -131
  227. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW_test_result.reccsv +0 -23
  228. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/constrained_pipe.femprj +0 -0
  229. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/constrained_pipe.py +0 -96
  230. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/constrained_pipe_test_result.reccsv +0 -13
  231. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.femprj +0 -0
  232. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.py +0 -74
  233. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric_test_result.reccsv +0 -13
  234. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.femprj +0 -0
  235. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.py +0 -58
  236. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric_test_result.reccsv +0 -23
  237. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gau_ex12_parametric.femprj +0 -0
  238. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/gau_ex12_parametric.py +0 -52
  239. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.femprj +0 -0
  240. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.py +0 -138
  241. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric_test_result.reccsv +0 -18
  242. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.femprj +0 -0
  243. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.py +0 -60
  244. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric_parallel.py +0 -61
  245. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric_test_result.reccsv +0 -18
  246. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.femprj +0 -0
  247. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.py +0 -58
  248. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_parallel.py +0 -58
  249. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_test_result.reccsv +0 -18
  250. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.femprj +0 -0
  251. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.py +0 -29
  252. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.femprj +0 -0
  253. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.py +0 -129
  254. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.femprj +0 -0
  255. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.py +0 -125
  256. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/constrained_pipe_jp.py +0 -93
  257. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.femprj +0 -0
  258. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.py +0 -70
  259. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.femprj +0 -0
  260. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.py +0 -57
  261. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/gau_ex12_parametric_jp.py +0 -52
  262. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.femprj +0 -0
  263. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.py +0 -138
  264. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.femprj +0 -0
  265. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.py +0 -58
  266. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py +0 -59
  267. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_jp.py +0 -56
  268. pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_parallel_jp.py +0 -56
  269. pyfemtet-0.9.4/pyfemtet/opt/visualization/_complex_components/main_figure_creator.py +0 -332
  270. pyfemtet-0.9.4/pyfemtet/opt/visualization/_complex_components/pm_graph_creator.py +0 -201
  271. pyfemtet-0.9.4/pyfemtet/opt/visualization/_process_monitor/__init__.py +0 -0
  272. pyfemtet-0.9.4/pyfemtet/opt/visualization/_process_monitor/application.py +0 -226
  273. pyfemtet-0.9.4/pyfemtet/opt/visualization/_process_monitor/pages.py +0 -406
  274. pyfemtet-0.9.4/pyfemtet/opt/visualization/_wrapped_components/__init__.py +0 -0
  275. pyfemtet-0.9.4/pyfemtet/opt/visualization/result_viewer/__init__.py +0 -0
  276. pyfemtet-0.9.4/pyproject.toml +0 -90
  277. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/LICENSE +0 -0
  278. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/LICENSE_THIRD_PARTY.txt +0 -0
  279. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/README.md +0 -0
  280. {pyfemtet-0.9.4/pyfemtet/_femtet_config_util → pyfemtet-1.5.1/pyfemtet/_util}/__init__.py +0 -0
  281. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/_util/sample.xlsx +0 -0
  282. {pyfemtet-0.9.4/pyfemtet/_util → pyfemtet-1.5.1/pyfemtet/opt/meta_script}/__init__.py +0 -0
  283. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
  284. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
  285. {pyfemtet-0.9.4/pyfemtet/brep → pyfemtet-1.5.1/pyfemtet/opt/problem}/__init__.py +0 -0
  286. {pyfemtet-0.9.4/pyfemtet/opt/_test_utils → pyfemtet-1.5.1/pyfemtet/opt/visualization}/__init__.py +0 -0
  287. {pyfemtet-0.9.4 → pyfemtet-1.5.1}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
  288. {pyfemtet-0.9.4/pyfemtet/opt/meta_script → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/__init__.py +0 -0
  289. {pyfemtet-0.9.4/pyfemtet/opt/optimizer/_optuna → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_complex_components}/__init__.py +0 -0
  290. {pyfemtet-0.9.4/pyfemtet/opt/optimizer/_optuna/_botorch_patch → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_process_monitor}/__init__.py +0 -0
  291. {pyfemtet-0.9.4/pyfemtet/opt/prediction → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/_wrapped_components}/__init__.py +0 -0
  292. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/_wrapped_components/str_enum.py +0 -0
  293. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer}/result_viewer/.gitignore +0 -0
  294. {pyfemtet-0.9.4/pyfemtet/opt/visualization → pyfemtet-1.5.1/pyfemtet/opt/visualization/history_viewer/result_viewer}/__init__.py +0 -0
  295. {pyfemtet-0.9.4/pyfemtet/opt/visualization/_complex_components → pyfemtet-1.5.1/pyfemtet/opt/visualization/plotter}/__init__.py +0 -0
  296. {pyfemtet-0.9.4/pyfemtet/opt/samples/femprj_sample_jp → pyfemtet-1.5.1/pyfemtet/opt}/wat_ex14_parametric_jp.femprj +0 -0
@@ -1,40 +1,41 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: pyfemtet
3
- Version: 0.9.4
3
+ Version: 1.5.1
4
4
  Summary: Design parameter optimization using Femtet.
5
- License: MIT
6
- Author: kazuma.naito
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ License-File: LICENSE_THIRD_PARTY.txt
8
+ Author: pyfemtet
7
9
  Author-email: 148934231+pyfemtet@users.noreply.github.com
8
- Requires-Python: >=3.10,<3.13
9
- Classifier: License :: OSI Approved :: MIT License
10
+ Requires-Python: >= 3.10, < 3.15
10
11
  Classifier: Programming Language :: Python :: 3
11
12
  Classifier: Programming Language :: Python :: 3.10
12
13
  Classifier: Programming Language :: Python :: 3.11
13
14
  Classifier: Programming Language :: Python :: 3.12
14
- Provides-Extra: brep
15
- Requires-Dist: babel (>=2.15.0,<3.0.0)
16
- Requires-Dist: botorch (>=0.12.0,<0.13.0)
17
- Requires-Dist: brepmatching (>=0.1.8,<0.2.0) ; extra == "brep"
18
- Requires-Dist: colorlog (>=6.8.0,<7.0.0)
19
- Requires-Dist: dash (>=2.17.0,<3.0.0)
20
- Requires-Dist: dash-bootstrap-components (>=1.5.0,<2.0.0)
21
- Requires-Dist: dask (>=2023.12.1,<2024.0.0)
22
- Requires-Dist: distributed (>=2023.12.1,<2024.0.0)
23
- Requires-Dist: femtetutils (>=1.0.0,<2.0.0) ; sys_platform == "win32"
24
- Requires-Dist: fire (>=0.6.0,<0.7.0)
25
- Requires-Dist: numpy (>=2.0.0,<3.0.0)
26
- Requires-Dist: openpyxl (>=3.1.2,<4.0.0)
27
- Requires-Dist: optuna (>=3.4.0,<5.0.0)
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Requires-Dist: babel (>=2.15.0,<3)
18
+ Requires-Dist: botorch (>=0.12.0,<0.15.0)
19
+ Requires-Dist: colorlog (>=6.8.0,<7)
20
+ Requires-Dist: dash (>=2.17.0,<3)
21
+ Requires-Dist: dash-bootstrap-components (>=1.5.0,<2)
22
+ Requires-Dist: dask (>=2024.12.1,<2024.13.0)
23
+ Requires-Dist: distributed (>=2024.12.1,<2024.13.0)
24
+ Requires-Dist: femtetutils (>=1.0.0,<2) ; sys_platform == "win32"
25
+ Requires-Dist: fire (>=0.7)
26
+ Requires-Dist: frozendict (>=2.4.6)
27
+ Requires-Dist: numpy (>=2.0.0,<3)
28
+ Requires-Dist: openpyxl (>=3.1.2,<4)
29
+ Requires-Dist: optuna (>=4.5.0,<4.6.0)
28
30
  Requires-Dist: optuna-integration (>=3.6.0,<5.0.0)
29
- Requires-Dist: pandas (>=2.2.3,<3.0.0)
30
- Requires-Dist: plotly (>=5.22.0,<6.0.0)
31
- Requires-Dist: psutil (>=5.9.6,<6.0.0)
32
- Requires-Dist: pywin32 (>=306,<307) ; sys_platform == "win32"
33
- Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
34
- Requires-Dist: scipy (>=1.11.4,<2.0.0)
35
- Requires-Dist: torch (>=2.5.1,<2.6.0) ; sys_platform != "linux"
36
- Requires-Dist: torch (>=2.5.1,<2.6.0) ; sys_platform == "linux"
37
- Requires-Dist: tqdm (>=4.66.1,<5.0.0)
31
+ Requires-Dist: pandas (>=2.2.3,<3)
32
+ Requires-Dist: plotly (>=5.22.0,<6)
33
+ Requires-Dist: psutil (>=5.9.6,<6)
34
+ Requires-Dist: pywin32 (>=310) ; sys_platform == "win32"
35
+ Requires-Dist: pyyaml (>=6.0.2,<7)
36
+ Requires-Dist: scipy (>=1.11.4,<2)
37
+ Requires-Dist: torch
38
+ Requires-Dist: tqdm (>=4.66.1,<5)
38
39
  Project-URL: Repository, https://github.com/pyfemtet/pyfemtet
39
40
  Description-Content-Type: text/markdown
40
41
 
@@ -0,0 +1,6 @@
1
+ import importlib.metadata
2
+
3
+ try:
4
+ __version__ = importlib.metadata.version(__name__)
5
+ except importlib.metadata.PackageNotFoundError:
6
+ __version__ = "0.0.0" # Fallback for development mode
@@ -0,0 +1,8 @@
1
+ @echo off
2
+
3
+ cd %~dp0\..\..
4
+ uv run --no-sync pybabel extract -F ./pyfemtet/_i18n/babel.cfg --no-wrap --ignore-dirs=".*" -o ./pyfemtet/_i18n/locales/messages.pot .
5
+ uv run --no-sync pybabel update -i ./pyfemtet/_i18n/locales/messages.pot --no-wrap -d ./pyfemtet/_i18n/locales -l ja
6
+
7
+ echo "Let's translate generated .po files!"
8
+ pause
@@ -0,0 +1,5 @@
1
+ @echo off
2
+
3
+ cd %~dp0\..\..
4
+ uv run --no-sync pybabel compile -d ./pyfemtet/_i18n/locales
5
+ pause
@@ -0,0 +1,4 @@
1
+ from .i18n import ENCODING
2
+ from .messages import Message as Msg, _
3
+
4
+ __all__ = ['ENCODING', 'Msg', '_']
@@ -0,0 +1,2 @@
1
+ [python: ./pyfemtet/**.py]
2
+ # [html: **/templates/**.html]
@@ -0,0 +1,37 @@
1
+ import os
2
+ import locale
3
+
4
+ __all__ = [
5
+ 'LOC', 'ENCODING', '_'
6
+ ]
7
+
8
+ LOC, ENCODING = locale.getlocale()
9
+
10
+
11
+ if __name__ == '__main__':
12
+ # set target to create .pot
13
+ # noinspection PyUnresolvedReferences
14
+ from gettext import gettext
15
+
16
+ else:
17
+ # get translation
18
+ if 'japanese' in LOC.lower():
19
+ from babel.support import Translations
20
+
21
+ translations = Translations.load(
22
+ os.path.join(os.path.dirname(__file__), 'locales'),
23
+ locales='ja'
24
+ )
25
+ gettext = translations.gettext
26
+
27
+ else:
28
+ def gettext(x):
29
+ return x
30
+
31
+
32
+ def _(en_message: str, jp_message=None, **kwargs):
33
+ if (jp_message is not None) and ('japanese' in LOC.lower()):
34
+ return jp_message.format(**kwargs)
35
+
36
+ else:
37
+ return gettext(en_message).format(**kwargs)