Metadata-Version: 2.4
Name: moxtools
Version: 0.9.7
Summary: A multi-utility toolkit compiled with Cython
Author: Morgan Chen
Author-email: tetsuhou@gmail.com
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: chart
Requires-Dist: matplotlib; extra == "chart"
Provides-Extra: data
Requires-Dist: numpy; extra == "data"
Requires-Dist: pandas; extra == "data"
Requires-Dist: scipy; extra == "data"
Provides-Extra: image
Requires-Dist: pillow; extra == "image"
Provides-Extra: io
Requires-Dist: requests; extra == "io"
Requires-Dist: click; extra == "io"
Requires-Dist: python-dotenv; extra == "io"
Requires-Dist: pyyaml; extra == "io"
Provides-Extra: all
Requires-Dist: numpy; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: pillow; extra == "all"
Requires-Dist: matplotlib; extra == "all"
Requires-Dist: scipy; extra == "all"
Requires-Dist: requests; extra == "all"
Requires-Dist: click; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: pyyaml; extra == "all"
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: description-content-type
Dynamic: provides-extra
Dynamic: requires-python
Dynamic: summary

# moxtools

**Author:** `xMorganChen` &emsp;|&emsp; **Version:** `v0.9.7` &emsp;|&emsp; **Last Updated:** `2026-07-13`

moxtools is a library for analyzing data and data plotting.

## 📌 Features
- **File Management** : Files Search Open/Read/Write
- **Radar IO**
- **File IO** : Advanced file operations, YAML configuration loading/saving, GitHub download (with `gh` CLI fallback support), interactive CLI selection, config loading, and entry point/package metadata parsing
- **Radar SP**
- **Data IO**
- **Data Proc**
- **Parse Tools** : parse log/string tool
- **serial worker** : serial port 
- **Chart Plot** 
- **app logging** : debug log for all system
- **Log utilities** : Save log data to file
- **excelTools** : excel toolkit

## 🛠️ Supported Tools
- `asmt_tool`: A specialized tool for data analysis.

## 📦 Installation
```bash
pip install moxtools
pip install --upgrade moxtools
pip install moxtools==0.9.7
```
https://pypi.org/project/moxtools/

## 🚀 Usage
```python
    from moxtools import moxtools
    from moxtools import app_logging, asmt_tool, chart, dataIO, dataProc, fileIO, fileMg, log_utils, lsf, parseTools, radarIO, radarSP, testImage, excelTools
    from moxtools.radarSP import convert_xz2Angle
    from moxtools.app_logging import lazy_logger, setup_logging, get_logger
    from moxtools.log_utils import FileLogger
    from moxtools.dataIO import readTXT_cfgParam, to_cmd_param
    from moxtools.parseTools import parseLine_mcuDETOUT, paresLine_mcuLog
    from moxtools.fileMg import find_files_with_extensions, generate_output_path, extractFileNameInfo, is_matching_fileName
    from moxtools.fileIO import setup_output_file, load_json_config, load_yaml_config, save_yaml_config, force_move_file, download_github_content, scan_and_select_files, get_cli_name, get_package_name_version

    # 範例：獲取專案資訊 (包含解析 author)
    package_info = get_package_name_version()
    name, version = package_info
    author = package_info.author
    print(f"Package: {name}, Version: {version}, Author: {author}")

    # 範例：從 setup.py 中解析 console_scripts 主進入點命令名稱
    cli_name = get_cli_name("setup.py", default="mox-cli")
    print(f"CLI Command: {cli_name}")

    # 範例：下載 GitHub 內容 (無 GITHUB_TOKEN 時，會自動嘗試以本地 gh CLI 作為備用下載方案)
    url = "https://github.com/xMorganChen/MoxTools/blob/master/README.md"
    content = download_github_content(url)

    # 範例：將資料以 YAML 格式安全寫入指定本地檔案
    success, msg = save_yaml_config("settings.yaml", {"key": "value"})
    print(f"Save status: {success}, Message: {msg}")

    # 範例：掃描目錄下特定副檔名的檔案並讓使用者互動選取 (支援單一檔案自動選取)
    selected = scan_and_select_files(
        directory="./data",
        extensions=[".csv", ".txt"],
        recursive=True,
        label="數據檔",
        auto_select_single=True
    )
    print(f"Selected files: {selected}")
```

## 📜 version
🧪 0.9.7      feat(fileIO): 支援單一檔案自動選取。`scan_and_select_files()` 新增 `auto_select_single` 參數，當只找到一個檔案時自動選取，免去互動式操作。  
🧪 0.9.7rc7   feat(fileIO): 新增 `save_yaml_config()` 支援安全寫入 YAML，優化 `get_unique_path()` 與 `scan_and_select_files()` 的副檔名/空副檔名處理，並支援 `find_files_with_extensions()` 未指定副檔名時掃描所有檔案。  
🧪 0.9.7rc6   feat(fileIO): 擴充 `get_package_name_version()` 以支援從 setup.py 中解析作者 (author) 資訊，回傳繼承自元組的 `PackageInfo` 物件以維持向後相容。  
🧪 0.9.7rc5   fix(fileIO): 修正無 `GITHUB_TOKEN` 時無法使用 `gh` CLI 備用下載的問題，並指定 subprocess 執行 `gh` 時使用 `utf-8` 編碼以防潛在的解碼錯誤。  
🧪 0.9.7rc1   support mox-agy by fileIO  
🧪 0.9.6      New fileIO module  
🧪 0.9.5      yaml file load & save  
🧪 0.9.4      bug-fix: Union issue in radarIO  
🧪 0.9.3      support `JSON` command & value. warning-fix for Pylance  
🧪 0.9.2      bug-fix for chart ply:Any & gutithub 429 busy issue  
🧪 0.9.1      add excelTools  
🧪 0.9.0      foramt change & MoxTools to moxtools  
🧪 0.8.2      workable without pandas  
🧪 0.8.1      add parseFn_pattern() & file_file_with_extensions() wuth sort       
🧪 0.8.0      update for snrRxPowr     
🧪 0.7.2      parse FFT-HIST log      
🧪 0.7.1      parseEVK_fileNameTime can parse `_asmt` suffix file.  
🧪 0.7.0      add CCDD ack handling in SerialWorker  
🧪 0.6.0      add parse 3D MCU log  
🧪 0.3.2      add `add minor ytick for scatter chart` & `read detout data log from files`   
🧪 0.3.1      add `is_matching_fileName()`   
🧪 0.3.0      support `read_rs60g_csv_2APN()` & `parse MCU 2APN log`   
🧪 0.2.1      fix "read log file error issue(CP950): UTF-8"  
🧪 0.2.0      fix "read_rs60g_csv() read clst_r0 error" issue
