Metadata-Version: 2.4
Name: pytola
Version: 0.1.6
Summary: Pytola: Python Tools and Applications Collection - A comprehensive suite of Python utilities and applications
Project-URL: Documentation, https://pytola.readthedocs.io/zh-cn/stable/
Project-URL: Issues, https://gitee.com/gooker_young/pytola/issues
Project-URL: Repository, https://gitee.com/gooker_young/pytola
Author-email: gooker_young <gooker_young@qq.com>
Maintainer-email: gooker_young <gooker_young@qq.com>
License: MIT license
License-File: AUTHORS.rst
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.8
Provides-Extra: all
Requires-Dist: hypothesis>=6.113.0; extra == 'all'
Requires-Dist: matplotlib>=3.7.5; extra == 'all'
Requires-Dist: mutagen>=1.47.0; extra == 'all'
Requires-Dist: numpy>=1.24.4; extra == 'all'
Requires-Dist: pefile>=2024.8.26; extra == 'all'
Requires-Dist: pillow>=10.4.0; extra == 'all'
Requires-Dist: pip>=25.0.1; extra == 'all'
Requires-Dist: prek>=0.3.3; extra == 'all'
Requires-Dist: psutil>=7.2.2; extra == 'all'
Requires-Dist: pymupdf>=1.24.11; extra == 'all'
Requires-Dist: pypdf>=5.9.0; extra == 'all'
Requires-Dist: pyside2-stubs>=5.15.2.1.2; extra == 'all'
Requires-Dist: pyside2>=5.15.2.1; extra == 'all'
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'all'
Requires-Dist: pytest-benchmark>=4.0.0; extra == 'all'
Requires-Dist: pytest-cov>=5.0.0; extra == 'all'
Requires-Dist: pytest-html>=4.1.1; extra == 'all'
Requires-Dist: pytest-mock>=3.14.0; extra == 'all'
Requires-Dist: pytest-qt>=4.4.0; extra == 'all'
Requires-Dist: pytest-xdist>=3.6.1; extra == 'all'
Requires-Dist: pytest>=8.3.4; extra == 'all'
Requires-Dist: pywin32>=311; extra == 'all'
Requires-Dist: qdarkstyle>=3.2.3; extra == 'all'
Requires-Dist: ruff>=0.15.1; extra == 'all'
Requires-Dist: scipy>=1.10.1; extra == 'all'
Requires-Dist: setuptools>=75.3.4; extra == 'all'
Requires-Dist: sounddevice>=0.5.5; extra == 'all'
Requires-Dist: soundfile>=0.13.1; extra == 'all'
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == 'all'
Requires-Dist: sphinx-rtd-theme; extra == 'all'
Requires-Dist: sqlalchemy>=2.0.47; extra == 'all'
Requires-Dist: tox-uv>=1.13.1; extra == 'all'
Requires-Dist: tox>=4.24.1; extra == 'all'
Requires-Dist: wheel>=0.45.1; extra == 'all'
Provides-Extra: build
Requires-Dist: pip>=25.0.1; extra == 'build'
Requires-Dist: prek>=0.3.3; extra == 'build'
Requires-Dist: ruff>=0.15.1; extra == 'build'
Requires-Dist: setuptools>=75.3.4; extra == 'build'
Requires-Dist: tox-uv>=1.13.1; extra == 'build'
Requires-Dist: tox>=4.24.1; extra == 'build'
Requires-Dist: wheel>=0.45.1; extra == 'build'
Provides-Extra: dev
Requires-Dist: pefile>=2024.8.26; extra == 'dev'
Requires-Dist: pillow>=10.4.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == 'docs'
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
Provides-Extra: llm
Provides-Extra: multimedia
Requires-Dist: mutagen>=1.47.0; extra == 'multimedia'
Requires-Dist: sounddevice>=0.5.5; extra == 'multimedia'
Requires-Dist: soundfile>=0.13.1; extra == 'multimedia'
Provides-Extra: office
Requires-Dist: psutil>=7.2.2; extra == 'office'
Requires-Dist: pymupdf>=1.24.11; extra == 'office'
Requires-Dist: pypdf>=5.9.0; extra == 'office'
Requires-Dist: pyside2-stubs>=5.15.2.1.2; extra == 'office'
Requires-Dist: pyside2>=5.15.2.1; extra == 'office'
Requires-Dist: pywin32>=311; extra == 'office'
Requires-Dist: qdarkstyle>=3.2.3; extra == 'office'
Provides-Extra: simulation
Requires-Dist: matplotlib>=3.7.5; extra == 'simulation'
Requires-Dist: numpy>=1.24.4; extra == 'simulation'
Requires-Dist: scipy>=1.10.1; extra == 'simulation'
Requires-Dist: sqlalchemy>=2.0.47; extra == 'simulation'
Provides-Extra: test
Requires-Dist: hypothesis>=6.113.0; extra == 'test'
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'test'
Requires-Dist: pytest-benchmark>=4.0.0; extra == 'test'
Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
Requires-Dist: pytest-html>=4.1.1; extra == 'test'
Requires-Dist: pytest-mock>=3.14.0; extra == 'test'
Requires-Dist: pytest-qt>=4.4.0; extra == 'test'
Requires-Dist: pytest-xdist>=3.6.1; extra == 'test'
Requires-Dist: pytest>=8.3.4; extra == 'test'
Description-Content-Type: text/x-rst

=======
Pytola
=======

Pytola: Python Tools and Applications Collection

* Free software: MIT license
* Documentation: https://pytola.readthedocs.io/zh-cn/stable/

项目概述
--------

Pytola 是一个多功能 Python工具集合，包含开发工具、办公应用、系统工具等多个模块。

主要功能模块
------------

* **开发工具** (dev):包管理、版本控制、代码检查等开发辅助工具
* **办公应用** (office): PDF处理、图像转换、文档扫描等办公工具
* **系统工具** (system): 文件管理、系统信息、进程控制等系统工具
* **安全工具** (security): 输入验证、文件路径安全检查等安全工具
* **多媒体工具** (multimedia):音播放、媒体处理等多媒体工具
* **仿真工具** (simulation):科计算、模拟仿真等专业工具

安装方式
--------

从 PyPI安装::

    pip install pytola

或者使用 uv工具安装::

    uv install pytola

或者从源码安装::

    git clone https://gitee.com/gooker_young/pytola.git
    cd pytola
    pip install .

开发安装::

    git clone https://gitee.com/gooker_young/pytola.git
    cd pytola
    pip install -e .

使用示例
--------

基础导入::

    import pytola
    from pytola import logger, ThemeManager

    # 获取版本信息
    print(f"Pytola version: {pytola.__version__}")

    # 使用日志功能
    logger.info("Pytola initialized successfully")

    # 使用主题管理器
    theme_manager = ThemeManager()
    print(f"Available themes: {theme_manager.list_themes()}")

模块使用示例::

    # 开发工具示例
    from pytola.dev.pypack import main as pypack_main
    from pytola.dev.checksum import main as checksum_main

    #办工具示例
    from pytola.office.img2ico import main as img2ico_main
    from pytola.office.pdfcrypt import main as pdfcrypt_main

    #系统工具示例
    from pytola.system.filedate import main as filedate_main

    #安工具工具示例
    from pytola.security import InputValidator
    validator = InputValidator()
    print(f"Valid email: {validator.validate_email('test@example.com')}")

命令行工具
----------

Pytola 提供多个命令行工具：

* ``pypack`` - Python包管理工具
* ``checksum`` - 文件校验工具
* ``img2ico`` - 图像转ICO工具
* ``pdfcrypt`` - PDF加密工具
* ``filedate`` - 文件时间管理工具
* ``llmcli`` - LLM客户端工具

完整工具列表请查看 pyproject.toml 中的 [project.scripts]。

项目结构
--------

项目采用模块化设计，主要目录结构：

* ``pytola/`` -核心模块
* ``pytola/dev/`` - 开发工具
* ``pytola/office/`` -办工具
* ``pytola/system/`` -系统工具
* ``pytola/security.py`` -安全工具
* ``docs/`` - 文档
* ``scripts/`` -辅脚助脚本

构建要求
--------

**要求:**
- Python >= 3.8
- pip
- uv

开发流程
--------

使用 uv工具::

    # 开发模式安装
    uv sync

    #运行测试
    pytest

    #检查代码风格
    uvx prek
