[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "scitex-writer" version = "2.8.0" description = "LaTeX manuscript compilation system for scientific documents with MCP server" readme = "README.md" license = "AGPL-3.0" requires-python = ">=3.10" authors = [ { name = "Yusuke Watanabe", email = "ywatanabe@scitex.ai" }, ] keywords = [ "latex", "manuscript", "scientific-writing", "compilation", "bibliography", "bibtex", "academic", "paper", "mcp", "mcp-server", ] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering", "Topic :: Text Processing :: Markup :: LaTeX", ] dependencies = [ "fastmcp>=2.0.0", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-cov>=4.0.0", "pytest-xdist>=3.0.0", "pre-commit>=3.5.0", ] editor = [ "flask>=2.0.0", ] docs = [ "sphinx>=7.0", "sphinx-rtd-theme>=2.0", "myst-parser>=2.0", "sphinx-copybutton>=0.5", "sphinx-autodoc-typehints>=1.25", ] all = [ # editor "flask>=2.0.0", # dev "pytest>=7.0.0", "pytest-cov>=4.0.0", "pytest-xdist>=3.0.0", "pre-commit>=3.5.0", # docs "sphinx>=7.0", "sphinx-rtd-theme>=2.0", "myst-parser>=2.0", "sphinx-copybutton>=0.5", "sphinx-autodoc-typehints>=1.25", ] [project.scripts] scitex-writer = "scitex_writer._cli:main" [project.urls] Homepage = "https://github.com/ywatanabe1989/scitex-writer" Documentation = "https://scitex-writer.readthedocs.io" Repository = "https://github.com/ywatanabe1989/scitex-writer.git" Issues = "https://github.com/ywatanabe1989/scitex-writer/issues" [tool.hatch.build.targets.wheel] packages = ["src/scitex_writer"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] addopts = "-v --tb=short" [tool.coverage.run] omit = [ "src/scitex_writer/_editor/*", "src/scitex_writer/_mcp/handlers/*", "src/scitex_writer/_mcp/tools/*", ] [tool.ruff] line-length = 88 target-version = "py310" [tool.ruff.lint] select = ["E", "F", "W", "I"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] # Legacy scripts - more lenient "scripts/python/*.py" = [ "E402", # module level import not at top (scripts have docstrings) "E722", # bare except (legacy code) "F401", # unused import (PIL check pattern) ]