Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
108 lines (91 loc) · 2.65 KB
/
Copy pathpyproject.toml
File metadata and controls
108 lines (91 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
[project]
name = "mcp-server-kalshi"
dynamic = ["version"]
description = "An MCP server implementation for Kalshi prediction market endpoints"
readme = "README.md"
requires-python = ">=3.10"
license = {text = "MIT"}
dependencies = [
"mcp>=2.3.0",
"fastmcp>=4.1.0",
"httpx>=0.28.1",
"cryptography>=50.0.0",
"pypdf",
"pydantic>=2.12.0",
"pydantic-settings>=2.11.0",
]
[project.optional-dependencies]
dev = [
"black>=26.5.1",
"ruff",
"mypy",
"pytest",
"pytest-asyncio",
"pytest-cov",
"opentelemetry-sdk>=1.44.0,<1.45",
"pre-commit",
"build>=1.2.0",
"twine>=5.0.0",
]
[build-system]
requires = ["hatchling>=1.32.4,<2", "uv-dynamic-versioning>=0.14.1,<0.15"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "uv-dynamic-versioning"
[tool.uv-dynamic-versioning]
vcs = "git"
style = "pep440"
bump = true
fallback-version = "0.0.0"
[tool.uv]
cache-keys = [{ file = "pyproject.toml" }, { git = { commit = true, tags = true } }]
[tool.hatch.build.targets.wheel]
packages = ["src/mcp_server_kalshi"]
[project.scripts]
start = "mcp_server_kalshi.server:main"
mcp-server-kalshi = "mcp_server_kalshi.server:main"
test = "pytest:main"
format = "black:main"
[project.urls]
Homepage = "https://github.com/christianclaudio/mcp-server-kalshi"
Repository = "https://github.com/christianclaudio/mcp-server-kalshi"
Issues = "https://github.com/christianclaudio/mcp-server-kalshi/issues"
Documentation = "https://github.com/christianclaudio/mcp-server-kalshi#readme"
Changelog = "https://github.com/christianclaudio/mcp-server-kalshi/releases"
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src", "."]
python_files = "test_*.py"
python_classes = "Test*"
python_functions = "test_*"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
markers = [
"e2e: end-to-end live network tests against Kalshi API (run with -m e2e)",
]
addopts = "-m 'not e2e'"
[tool.black]
# Match requires-python; without this Black infers every version up to 3.15 and
# warns that its safety check cannot parse for that target.
target-version = ["py310"]
[tool.ruff]
target-version = "py310"
line-length = 88
[tool.ruff.lint]
# E/F: pyflakes+pycodestyle, I: import sorting, UP: pyupgrade, B: bugbear.
select = ["E", "F", "I", "UP", "B"]
# Line length is owned by black; the long tool-description strings are intentional.
ignore = ["E501"]
[tool.mypy]
python_version = "3.10"
files = ["src/mcp_server_kalshi"]
mypy_path = "src"
strict = true
warn_unused_ignores = true
warn_redundant_casts = true
[tool.coverage.run]
source = ["mcp_server_kalshi"]
branch = true
[tool.coverage.report]
fail_under = 100
show_missing = true