[project] name = "yfmcp" version = "0.14.0" description = "" readme = "README.md" requires-python = ">=3.12" authors = [{ name = "narumi", email = "toucans-cutouts0f@icloud.com" }] classifiers = [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] dependencies = [ "loguru>=0.7.3", "matplotlib>=3.11.1", "mcp>=1.28.1,<2", # Required by pandas.DataFrame.to_markdown() for price history table output. "tabulate>=0.10.0", "yfinance>=1.7.0", ] [project.scripts] yfmcp = "yfmcp.server:main" [dependency-groups] dev = [ "mcp[cli]>=1.28.1,<2", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0", "ruff>=0.16.5", "ty>=0.0.80", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.bumpversion] current_version = "0.14.0" tag = true commit = true pre_commit_hooks = ["uv lock", "git add uv.lock"] [[tool.bumpversion.files]] filename = "server.json" search = '"version": "{current_version}"' replace = '"version": "{new_version}"' [tool.pytest] filterwarnings = ["ignore::DeprecationWarning"] [tool.ruff] line-length = 120 [tool.ruff.lint] select = [ "B", # flake8-bugbear "C", # flake8-comprehensions "E", # pycodestyle errors "F", # pyflakes "I", # isort "N", # pep8-naming "SIM", # flake8-simplify "UP", # pyupgrade "W", # pycodestyle warnings ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401", "F403"] [tool.ruff.lint.isort] force-single-line = true [tool.tombi.format.rules] key-value-equals-sign-alignment = true trailing-comment-alignment = true [tool.ty.rules] unresolved-attribute = "ignore"