cmdbox 0.6.3__py3-none-any.whl → 0.6.3.1__py3-none-any.whl

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 cmdbox might be problematic. Click here for more details.

cmdbox/app/app.py CHANGED
@@ -18,7 +18,9 @@ class CmdBoxApp:
18
18
  @staticmethod
19
19
  def getInstance(appcls=None, ver=version, cli_features_packages:List[str]=None, cli_features_prefix:List[str]=None):
20
20
  if CmdBoxApp._instance is None:
21
- CmdBoxApp._instance = CmdBoxApp(appcls=appcls, ver=ver, cli_features_packages=cli_features_packages, cli_features_prefix=cli_features_prefix)
21
+ _self = appcls.__new__(appcls)
22
+ _self.__init__(appcls=appcls, ver=ver, cli_features_packages=cli_features_packages, cli_features_prefix=cli_features_prefix)
23
+ CmdBoxApp._instance = _self
22
24
  return CmdBoxApp._instance
23
25
 
24
26
  def __init__(self, appcls=None, ver=version, cli_features_packages:List[str]=None, cli_features_prefix:List[str]=None):
@@ -145,12 +147,12 @@ class CmdBoxApp:
145
147
  if logger.level == logging.DEBUG:
146
148
  logger.debug(f"args.mode={args.mode}, args.cmd={args.cmd}")
147
149
  # 警告出力時にスタックを出力する
148
- #import warnings
149
- #def custom_warning_handler(message, category, filename, lineno, file=None, line=None):
150
- # import traceback
151
- # print(f"Warning: {message}, Category: {category}, File: {filename}, Line: {lineno}")
152
- # traceback.print_stack()
153
- #warnings.showwarning = custom_warning_handler
150
+ import warnings
151
+ def custom_warning_handler(message, category, filename, lineno, file=None, line=None):
152
+ import traceback
153
+ logger.warning(f"Warning: {message}, Category: {category}, File: {filename}, Line: {lineno}", exc_info=True)
154
+ traceback.print_stack()
155
+ warnings.showwarning = custom_warning_handler
154
156
 
155
157
  #scmdexectime = time.perf_counter()
156
158
  feat = self.options.get_cmd_attr(args.mode, args.cmd, 'feature')
cmdbox/app/common.py CHANGED
@@ -3,9 +3,8 @@ from cmdbox.app import feature, options
3
3
  from cmdbox.app.commons import convert, module, loghandler
4
4
  from cryptography.fernet import Fernet
5
5
  from pathlib import Path
6
- from pkg_resources import resource_string
7
- from rich.logging import RichHandler
8
6
  from rich.console import Console
7
+ from rich.logging import RichHandler
9
8
  from tabulate import tabulate
10
9
  from typing import List, Tuple, Dict, Any
11
10
  import argparse
@@ -133,10 +132,11 @@ def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname
133
132
  level (int, optional): ログレベル. Defaults to logging.INFO.
134
133
  """
135
134
  logger = logging.getLogger(name)
135
+ #colorful = [h for h in logger.handlers if isinstance(h, loghandler.ColorfulStreamHandler) or isinstance(h, RichHandler)]
136
136
  logger.handlers.clear()
137
137
  logger.propagate = False
138
138
  logger.setLevel(level)
139
- logger.addHandler(create_log_handler(stderr, fmt, datefmt, level))
139
+ logger.addHandler(create_log_handler(stderr, fmt, datefmt, level, colorful=True))
140
140
  if get_common_value('webcall', False):
141
141
  # webcallの場合はStreamHandlerを削除
142
142
  for handler in logger.handlers:
@@ -144,7 +144,7 @@ def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname
144
144
  if issubclass(hc, logging.StreamHandler) and not issubclass(hc, logging.FileHandler):
145
145
  logger.removeHandler(handler)
146
146
 
147
- def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S', level:int=logging.INFO) -> logging.Handler:
147
+ def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S', level:int=logging.INFO, colorful:bool=True) -> logging.Handler:
148
148
  """
149
149
  ログハンドラを生成します。
150
150
 
@@ -152,13 +152,18 @@ def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s -
152
152
  stderr (bool, optional): 標準エラー出力を使用するかどうか. Defaults to False.
153
153
  fmt (str, optional): ログフォーマット. Defaults to '[%(asctime)s] %(levelname)s - %(message)s'.
154
154
  datefmt (str, optional): 日時フォーマット. Defaults to '%Y-%m-%d %H:%M:%S'.
155
+ level (int, optional): ログレベル. Defaults to logging.INFO.
156
+ colorful (bool, optional): カラフルなログを使用するかどうか. Defaults to True.
155
157
  Returns:
156
158
  logging.Handler: ログハンドラ
157
159
  """
158
160
  formatter = logging.Formatter(fmt, datefmt)
159
161
  #handler = RichHandler(console=Console(stderr=stderr), show_path=False, omit_repeated_times=False,
160
162
  # tracebacks_word_wrap=False, log_time_format='[%Y-%m-%d %H:%M]')
161
- handler = loghandler.ColorfulStreamHandler(sys.stdout if not stderr else sys.stderr)
163
+ if colorful:
164
+ handler = loghandler.ColorfulStreamHandler(sys.stdout if not stderr else sys.stderr)
165
+ else:
166
+ handler = logging.StreamHandler(sys.stdout if not stderr else sys.stderr)
162
167
  handler.setFormatter(formatter)
163
168
  handler.setLevel(level)
164
169
  return handler
@@ -180,7 +185,7 @@ def create_console(stderr:bool=False, file=None) -> Console:
180
185
  #console = Console(soft_wrap=True, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
181
186
  return console
182
187
 
183
- def console_log(console:Console, message:Any, **kwargs) -> None:
188
+ def console_log(console:Console, message:Any, highlight:bool=True, **kwargs) -> None:
184
189
  """
185
190
  コンソールにログを出力します。
186
191
 
@@ -190,7 +195,7 @@ def console_log(console:Console, message:Any, **kwargs) -> None:
190
195
  **kwargs: その他のキーワード引数
191
196
  """
192
197
  dtstr = datetime.datetime.now().strftime('[%Y-%m-%d %H:%M:%S]')
193
- console.print(f"{dtstr} {message}", highlight=True, **kwargs)
198
+ console.print(f"{dtstr} {message}", highlight=highlight, **kwargs)
194
199
 
195
200
  def default_logger(debug:bool=False, ver=version, webcall:bool=False) -> logging.Logger:
196
201
  """
@@ -269,8 +274,7 @@ def load_config(mode:str, debug:bool=False, data=HOME_DIR, webcall:bool=False, v
269
274
  logging.config.dictConfig(log_config)
270
275
  logger = logging.getLogger(log_name)
271
276
  set_debug(logger, debug)
272
- config = yaml.safe_load(resource_string(version.__appid__, "config.yml"))
273
- return logger, config
277
+ return logger, {}
274
278
 
275
279
  def set_debug(logger:logging.Logger, debug:bool=False) -> None:
276
280
  """
@@ -182,7 +182,7 @@ class ExecCmd(cmdbox_web_load_cmd.LoadCmd):
182
182
  console = common.create_console(file=old_stdout)
183
183
 
184
184
  try:
185
- common.console_log(console, f'EXEC - {opt_list}\n'[:logsize])
185
+ common.console_log(console, message=f'EXEC - {opt_list}\n'[:logsize], highlight=(len(opt_list)<logsize-10))
186
186
  status, ret_main, obj = cmdbox_app.main(args_list=[common.chopdq(o) for o in opt_list], file_dict=file_dict, webcall=True)
187
187
  if isinstance(obj, server.Server):
188
188
  cmdbox_app.sv = obj
@@ -209,11 +209,11 @@ class ExecCmd(cmdbox_web_load_cmd.LoadCmd):
209
209
  output = [dict(warn=f'The captured stdout was discarded because its size was larger than {capture_maxsize} bytes.')]
210
210
  else:
211
211
  output = [dict(warn='capture_stdout is off.')]
212
- old_stdout.write(f'EXEC OUTPUT => {output}'[:logsize]) # コマンド実行時のアウトプットはカラーリングしない
212
+ old_stdout.write(f'EXEC OUTPUT => {output}'[:logsize]+'\n') # コマンド実行時のアウトプットはカラーリングしない
213
213
  except Exception as e:
214
214
  web.logger.disabled = False # ログ出力を有効にする
215
215
  msg = f'exec_cmd error. {traceback.format_exc()}'
216
- common.console_log(console, f'EXEC - {msg}'[:logsize])
216
+ common.console_log(console, message=f'EXEC - {msg}'[:logsize], highlight=(len(msg)<logsize-10))
217
217
  web.logger.warning(msg)
218
218
  output = [dict(warn=f'<pre>{html.escape(traceback.format_exc())}</pre>')]
219
219
  sys.stdout = old_stdout
cmdbox/version.py CHANGED
@@ -1,10 +1,10 @@
1
1
  import datetime
2
2
 
3
- dt_now = datetime.datetime(2025, 7, 28)
3
+ dt_now = datetime.datetime(2025, 7, 29)
4
4
  days_ago = (datetime.datetime.now() - dt_now).days
5
5
  __appid__ = 'cmdbox'
6
6
  __title__ = 'cmdbox (Command Development Application)'
7
- __version__ = '0.6.3'
7
+ __version__ = '0.6.3.1'
8
8
  __copyright__ = f'Copyright © 2023-{dt_now.strftime("%Y")} hamacom2004jp'
9
9
  __pypiurl__ = 'https://pypi.org/project/cmdbox/'
10
10
  __srcurl__ = 'https://github.com/hamacom2004jp/cmdbox'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cmdbox
3
- Version: 0.6.3
3
+ Version: 0.6.3.1
4
4
  Summary: cmdbox: It is a command line application with a plugin mechanism.
5
5
  Home-page: https://github.com/hamacom2004jp/cmdbox
6
6
  Download-URL: https://github.com/hamacom2004jp/cmdbox
@@ -10,11 +10,11 @@ cmdbox/logconf_gui.yml,sha256=-95vyd0q-aB1gsabdk8rg9dJ2zRKAZc8hRxyhNOQboU,1076
10
10
  cmdbox/logconf_mcp.yml,sha256=pED0i1iKP8UoyXE0amFMA5kjV7Qc6_eJCUDVen3L4AU,1069
11
11
  cmdbox/logconf_server.yml,sha256=n3c5-KVzjUzcUX5BQ6uE-PN9rp81yXaJql3whyCcSDQ,1091
12
12
  cmdbox/logconf_web.yml,sha256=pPbdAwckbK0cgduxcVkx2mbk-Ymz5hVzR4guIsfApMQ,1076
13
- cmdbox/version.py,sha256=HTU-X6-2WVXAPOXs7dqpmC2oYd3v69th6uurBQSFxUg,2108
13
+ cmdbox/version.py,sha256=Tcuxlk7iRG_2WyMlfQXA_SUW474Wfbnm4RUHd47Abe4,2110
14
14
  cmdbox/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- cmdbox/app/app.py,sha256=_UJqSTs3LStGSu3vLMTqOKmpL4x7NQAQb2hUMbEFcg4,9639
15
+ cmdbox/app/app.py,sha256=fJU7h4uiI2y7_ohAep8PeRHy8o4f-SqqiGtZbdbWenE,9723
16
16
  cmdbox/app/client.py,sha256=n986lXeV7hhaki4iyyvsfhNptmCXDFphxlNoNe2XhKg,19542
17
- cmdbox/app/common.py,sha256=iY4Bl9r0MSSDhZ9Ep3Y45MVBapurKpwkBNCHYb-COnY,28130
17
+ cmdbox/app/common.py,sha256=ltB7wIuUY-kybE5Cbfj5lCJpYGQ0BTN1_ErFo965EbU,28487
18
18
  cmdbox/app/edge.py,sha256=2Aav7n4skhP0FUvG6_3JKijHHozA-WcwALgEwNB0DUI,41439
19
19
  cmdbox/app/edge_tool.py,sha256=HXxr4Or8QaZ5ueYIN3huv8GnXSnV28RZCmZBUEfiIk0,8062
20
20
  cmdbox/app/feature.py,sha256=fK7JP1fc8b9k1zhSNOkWq02ad8i-_wuAX5kyyK2TZdE,10391
@@ -85,7 +85,7 @@ cmdbox/app/features/web/cmdbox_web_del_cmd.py,sha256=3Bx2tuXJXc63yip9gWH2bXBydD4
85
85
  cmdbox/app/features/web/cmdbox_web_del_pipe.py,sha256=tPLvuLqk-MQjkh5WZfw9gL3ujR_W18raEwX_EKddNZw,1193
86
86
  cmdbox/app/features/web/cmdbox_web_do_signin.py,sha256=Je9pYIdihmagP2eaIfyz6zIBbLc7_wHKxewjAQrt3IA,20787
87
87
  cmdbox/app/features/web/cmdbox_web_do_signout.py,sha256=b64XcmioyuyEL6VFymcs5kFIt4zviqhqJbFUWRCdMo0,1109
88
- cmdbox/app/features/web/cmdbox_web_exec_cmd.py,sha256=qfa6YzYkW0TxO-UCk1w88gzCF0BtJRAtz5cS7dn6CAA,13206
88
+ cmdbox/app/features/web/cmdbox_web_exec_cmd.py,sha256=cwiG8f2sn0rJwKZaff2zRtBjj6FqFIeGWcUqwsynC7c,13298
89
89
  cmdbox/app/features/web/cmdbox_web_exec_pipe.py,sha256=W9jd_9MTzC9GzgEd8X5C9Jwsn8pt6-_TFxyrHfO4iWk,10581
90
90
  cmdbox/app/features/web/cmdbox_web_filer download.py,sha256=CVRDv0TZAEd87nzlquIO2O3rSm_tpc3i88H27FgNW4Y,2344
91
91
  cmdbox/app/features/web/cmdbox_web_filer.py,sha256=2BdkOQFvaMMxtSoRz07RjercnfG51yChZiVrQGRDRTQ,1871
@@ -379,9 +379,9 @@ cmdbox/web/assets/tree-menu/image/file.png,sha256=Uw4zYkHyuoZ_kSVkesHAeSeA_g9_LP
379
379
  cmdbox/web/assets/tree-menu/image/folder-close.png,sha256=TcgsKTBBF2ejgzekOEDBFBxsJf-Z5u0x9IZVi4GBR-I,284
380
380
  cmdbox/web/assets/tree-menu/image/folder-open.png,sha256=DT7y1GRK4oXJkFvqTN_oSGM5ZYARzPvjoCGL6wqkoo0,301
381
381
  cmdbox/web/assets/tree-menu/js/tree-menu.js,sha256=-GkZxI7xzHuXXHYQBHAVTcuKX4TtoiMuyIms6Xc3pxk,1029
382
- cmdbox-0.6.3.dist-info/LICENSE,sha256=sBzzPc5v-5LBuIFi2V4olsnoVg-3EBI0zRX5r19SOxE,1117
383
- cmdbox-0.6.3.dist-info/METADATA,sha256=o68uXEPaEhHqDp9HvcnpzP4qXBc9KTt8-sLqUcrJjX4,33522
384
- cmdbox-0.6.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
385
- cmdbox-0.6.3.dist-info/entry_points.txt,sha256=1LdoMUjTD_YdxlsAiAiJ1cREcXFG8-Xg2xQTNYoNpT4,47
386
- cmdbox-0.6.3.dist-info/top_level.txt,sha256=eMEkD5jn8_0PkCAL8h5xJu4qAzF2O8Wf3vegFkKUXR4,7
387
- cmdbox-0.6.3.dist-info/RECORD,,
382
+ cmdbox-0.6.3.1.dist-info/LICENSE,sha256=sBzzPc5v-5LBuIFi2V4olsnoVg-3EBI0zRX5r19SOxE,1117
383
+ cmdbox-0.6.3.1.dist-info/METADATA,sha256=oFcMi5AMijfudCVdiDrsPbY1VVtKMTTpNzQXqndSH80,33524
384
+ cmdbox-0.6.3.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
385
+ cmdbox-0.6.3.1.dist-info/entry_points.txt,sha256=1LdoMUjTD_YdxlsAiAiJ1cREcXFG8-Xg2xQTNYoNpT4,47
386
+ cmdbox-0.6.3.1.dist-info/top_level.txt,sha256=eMEkD5jn8_0PkCAL8h5xJu4qAzF2O8Wf3vegFkKUXR4,7
387
+ cmdbox-0.6.3.1.dist-info/RECORD,,