PyFemtet 0.6.2__tar.gz → 0.6.3__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.
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/PKG-INFO +1 -1
- pyfemtet-0.6.3/pyfemtet/__init__.py +1 -0
- pyfemtet-0.6.3/pyfemtet/_femtet_config_util/autosave.py +38 -0
- pyfemtet-0.6.3/pyfemtet/_femtet_config_util/exit.py +58 -0
- pyfemtet-0.6.3/pyfemtet/_message/1. make_pot.bat +11 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/_message/2. make_mo.bat +1 -1
- pyfemtet-0.6.3/pyfemtet/_message/babel.cfg +2 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/_message/locales/ja/LC_MESSAGES/messages.po +136 -124
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/_message/locales/messages.pot +136 -124
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/_message/messages.py +3 -0
- pyfemtet-0.6.3/pyfemtet/_warning.py +79 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/_femopt.py +58 -38
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/_test_utils/record_history.py +50 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_base.py +10 -1
- pyfemtet-0.6.3/pyfemtet/opt/interface/_excel_interface.py +437 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_femtet.py +4 -75
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_femtet_with_sldworks.py +1 -1
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/_base.py +10 -8
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_complex_components/main_figure_creator.py +82 -21
- pyfemtet-0.6.3/pyfemtet/opt/visualization/result_viewer/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyproject.toml +2 -1
- pyfemtet-0.6.2/pyfemtet/__init__.py +0 -1
- pyfemtet-0.6.2/pyfemtet/_message/1. make_pot.bat +0 -12
- pyfemtet-0.6.2/pyfemtet/_message/babel.cfg +0 -2
- pyfemtet-0.6.2/pyfemtet/_warning.py +0 -23
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/LICENSE +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/README.md +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/_test_utils → pyfemtet-0.6.3/pyfemtet/_femtet_config_util}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/_message/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/core.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/dispatch_extensions/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/dispatch_extensions/_impl.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/logger/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/logger/_impl.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/_femopt_core.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/optimizer/_optuna → pyfemtet-0.6.3/pyfemtet/opt/_test_utils}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/_test_utils/control_femtet.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/_test_utils/hyper_sphere.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_femtet_parametric.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_femtet_with_nx/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_femtet_with_nx/_interface.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/interface/_femtet_with_nx/update_model.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/__init__.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/optimizer/_optuna/_botorch_patch → pyfemtet-0.6.3/pyfemtet/opt/optimizer/_optuna}/__init__.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/prediction → pyfemtet-0.6.3/pyfemtet/opt/optimizer/_optuna/_botorch_patch}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/_optuna/_botorch_patch/enable_nonlinear_constraint.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/_optuna/_optuna.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/_optuna/_pof_botorch.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/_scipy.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/_scipy_scalar.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/optimizer/parameter.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/visualization → pyfemtet-0.6.3/pyfemtet/opt/prediction}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/prediction/_base.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/prediction/single_task_gp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/ParametricIF.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/ParametricIF.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/ParametricIF_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.prt +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_NX_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.SLDPRT +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/cad_ex01_SW_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/constrained_pipe.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/constrained_pipe.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/constrained_pipe_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/gal_ex58_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/gau_ex08_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/her_ex40_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric_parallel.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/paswat_ex1_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_parallel.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample/wat_ex14_parametric_test_result.reccsv +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/ParametricIF_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_NX_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/cad_ex01_SW_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/constrained_pipe_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/gal_ex58_parametric_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/gau_ex08_parametric_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/her_ex40_parametric_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/paswat_ex1_parametric_parallel_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_jp.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/samples/femprj_sample_jp/wat_ex14_parametric_parallel_jp.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/visualization/_complex_components → pyfemtet-0.6.3/pyfemtet/opt/visualization}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_base.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/visualization/_process_monitor → pyfemtet-0.6.3/pyfemtet/opt/visualization/_complex_components}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_complex_components/alert_region.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_complex_components/control_femtet.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_complex_components/main_graph.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_complex_components/pm_graph.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_complex_components/pm_graph_creator.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/visualization/_wrapped_components → pyfemtet-0.6.3/pyfemtet/opt/visualization/_process_monitor}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_process_monitor/application.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_process_monitor/pages.py +0 -0
- {pyfemtet-0.6.2/pyfemtet/opt/visualization/result_viewer → pyfemtet-0.6.3/pyfemtet/opt/visualization/_wrapped_components}/__init__.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_wrapped_components/dbc.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_wrapped_components/dcc.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_wrapped_components/html.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/_wrapped_components/str_enum.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/result_viewer/.gitignore +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/result_viewer/application.py +0 -0
- {pyfemtet-0.6.2 → pyfemtet-0.6.3}/pyfemtet/opt/visualization/result_viewer/pages.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.6.3"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import winreg
|
|
2
|
+
from typing import Final
|
|
3
|
+
|
|
4
|
+
# レジストリのパスと値の名前
|
|
5
|
+
_REGISTRY_PATH: Final[str] = r"SOFTWARE\Murata Software\Femtet2014\Femtet"
|
|
6
|
+
_VALUE_NAME: Final[str] = "AutoSave"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _get_autosave_enabled() -> bool:
|
|
10
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, _REGISTRY_PATH) as key:
|
|
11
|
+
value, regtype = winreg.QueryValueEx(key, _VALUE_NAME)
|
|
12
|
+
if regtype == winreg.REG_DWORD:
|
|
13
|
+
return bool(value)
|
|
14
|
+
else:
|
|
15
|
+
raise ValueError("Unexpected registry value type.")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _set_autosave_enabled(enable: bool) -> None:
|
|
19
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, _REGISTRY_PATH, 0, winreg.KEY_SET_VALUE) as key:
|
|
20
|
+
winreg.SetValueEx(key, _VALUE_NAME, 0, winreg.REG_DWORD, int(enable))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def __test_autosave_setting():
|
|
24
|
+
|
|
25
|
+
# 使用例
|
|
26
|
+
current_setting = _get_autosave_enabled()
|
|
27
|
+
print(f"Current AutoSave setting is {'enabled' if current_setting else 'disabled'}.")
|
|
28
|
+
|
|
29
|
+
# 設定を変更する例
|
|
30
|
+
new_setting = not current_setting
|
|
31
|
+
_set_autosave_enabled(new_setting)
|
|
32
|
+
print(f"AutoSave setting has been {'enabled' if new_setting else 'disabled'}.")
|
|
33
|
+
|
|
34
|
+
# 再度設定を確認する
|
|
35
|
+
after_setting = _get_autosave_enabled()
|
|
36
|
+
print(f"Current AutoSave setting is {'enabled' if after_setting else 'disabled'}.")
|
|
37
|
+
|
|
38
|
+
assert new_setting == after_setting, "レジストリ編集に失敗しました。"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from time import time, sleep
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
from win32com.client import CDispatch
|
|
5
|
+
from femtetutils import util
|
|
6
|
+
import psutil
|
|
7
|
+
|
|
8
|
+
from pyfemtet.dispatch_extensions._impl import _get_pid
|
|
9
|
+
from pyfemtet.core import _version
|
|
10
|
+
from pyfemtet._message import Msg
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger('fem')
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _exit_or_force_terminate(timeout, Femtet: CDispatch, force=True):
|
|
16
|
+
|
|
17
|
+
# Femtet がすでに終了しているかどうかを判断する
|
|
18
|
+
hwnd = Femtet.hWnd
|
|
19
|
+
pid = _get_pid(hwnd)
|
|
20
|
+
|
|
21
|
+
# pid が 0 ならすでに終了しているものと見做して何もしない
|
|
22
|
+
if pid == 0:
|
|
23
|
+
return
|
|
24
|
+
|
|
25
|
+
# Exit() メソッドを定義している最小の Femtet バージョン
|
|
26
|
+
minimum_version = _version(2024, 0, 1)
|
|
27
|
+
|
|
28
|
+
# 現在の Femtet のバージョン
|
|
29
|
+
current_version = _version(Femtet=Femtet)
|
|
30
|
+
|
|
31
|
+
# 現在のバージョン >= minimum version なら Exit を実行
|
|
32
|
+
if current_version >= minimum_version:
|
|
33
|
+
# gracefully termination method without save project available from 2024.0.1
|
|
34
|
+
try:
|
|
35
|
+
Femtet.Exit(force)
|
|
36
|
+
|
|
37
|
+
except AttributeError as e:
|
|
38
|
+
raise AttributeError('Macro version is not consistent to the one of Femtet.exe. '
|
|
39
|
+
'Please consider ``Enable Macros`` to fix it.')
|
|
40
|
+
|
|
41
|
+
# そうでなければ強制終了する
|
|
42
|
+
else:
|
|
43
|
+
# terminate
|
|
44
|
+
util.close_femtet(Femtet.hWnd, timeout, force)
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
pid = _get_pid(hwnd)
|
|
48
|
+
start = time()
|
|
49
|
+
while psutil.pid_exists(pid):
|
|
50
|
+
if time() - start > 30: # 30 秒経っても存在するのは何かおかしい
|
|
51
|
+
logger.error(Msg.ERR_CLOSE_FEMTET_FAILED)
|
|
52
|
+
break
|
|
53
|
+
sleep(1)
|
|
54
|
+
sleep(1)
|
|
55
|
+
|
|
56
|
+
# dead
|
|
57
|
+
except (AttributeError, OSError):
|
|
58
|
+
pass
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
rem Run once per update source.
|
|
3
|
+
rem .pot file defines the target of string to translate.
|
|
4
|
+
rem .po file is the implementation of translation.
|
|
5
|
+
|
|
6
|
+
cd %~dp0\..\..
|
|
7
|
+
poetry run pybabel extract -F ./pyfemtet/_message/babel.cfg --no-wrap --ignore-dirs=".*" -o ./pyfemtet/_message/locales/messages.pot .
|
|
8
|
+
poetry run pybabel update -i ./pyfemtet/_message/locales/messages.pot --no-wrap -d ./pyfemtet/_message/locales -l ja
|
|
9
|
+
|
|
10
|
+
echo "�������ꂽ .po �t�@�C����|�Ă��������B"
|
|
11
|
+
pause
|