[project] name = "huoshui-pdf-converter" version = "1.0.4" description = "High-quality PDF ↔ Markdown converter with MCP integration and Unicode support" readme = "README.md" license = { text = "MIT" } requires-python = ">=3.10" authors = [ { name = "Huoshui Development Team", email = "dev@huoshui.ai" } ] maintainers = [ { name = "Huoshui Development Team", email = "dev@huoshui.ai" } ] keywords = ["pdf", "markdown", "converter", "mcp", "unicode", "cjk", "chinese"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Topic :: Office/Business :: Office Suites", "Topic :: Text Processing :: Markup", "Topic :: Text Processing :: Markup :: Markdown", "Topic :: Utilities", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Operating System :: OS Independent", "Natural Language :: Chinese (Simplified)", "Natural Language :: English", "Typing :: Typed", ] dependencies = [ "fastmcp>=2.10.0", "pymupdf>=1.26.0", "markdown>=3.8.0", "xhtml2pdf>=0.2.17", "reportlab>=4.4.0", "fpdf2>=2.8.3", "pillow>=11.0.0", "mcp>=1.10.0", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "black>=23.0.0", "ruff>=0.1.0", "mypy>=1.0.0", "build>=1.0.0", "twine>=4.0.0", ] all = [ "huoshui-pdf-converter[dev]", ] [project.scripts] huoshui-pdf = "huoshui_pdf_converter.cli:main" huoshui-pdf-converter = "huoshui_pdf_converter.server:main" huoshui-pdf-server = "huoshui_pdf_converter.server:main" [project.urls] Homepage = "https://github.com/yourusername/huoshui-pdf-converter" Repository = "https://github.com/yourusername/huoshui-pdf-converter" Issues = "https://github.com/yourusername/huoshui-pdf-converter/issues" Documentation = "https://github.com/yourusername/huoshui-pdf-converter#readme" Changelog = "https://github.com/yourusername/huoshui-pdf-converter/releases" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build] include = [ "huoshui_pdf_converter/**/*.py", "huoshui_pdf_converter/py.typed", "README.md", "LICENSE", ] exclude = [ "tests/", "docs/", "examples/", ".git/", ".github/", "__pycache__/", "*.pyc", "*.pyo", ".DS_Store", ] [tool.hatch.build.targets.wheel] packages = ["huoshui_pdf_converter"] [tool.hatch.build.targets.sdist] include = [ "huoshui_pdf_converter/", "README.md", "LICENSE", "pyproject.toml", ] [tool.ruff] target-version = "py310" line-length = 88 select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "N", # pep8-naming "UP", # pyupgrade "B", # flake8-bugbear "C4", # flake8-comprehensions "SIM", # flake8-simplify ] ignore = [ "E501", # line too long (handled by black) "B008", # do not perform function calls in argument defaults ] [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true exclude = [ "tests/", "build/", "dist/", ] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*"