|
1 | | -[project] |
2 | | -name = "musher-sdk" |
3 | | -version = "0.3.1" # x-release-please-version |
4 | | -description = "Python SDK for the Musher bundle distribution platform" |
5 | | -readme = "README.md" |
6 | | -license = "Apache-2.0" |
7 | | -requires-python = ">=3.13" |
8 | | -dependencies = [ |
9 | | - "httpx>=0.27", |
10 | | - "keyring>=25.0", |
11 | | - "platformdirs>=4.0", |
12 | | - "pydantic>=2.12", |
13 | | -] |
14 | | - |
15 | | -[project.optional-dependencies] |
16 | | -examples = [ |
17 | | - "openai-agents>=0.13", |
18 | | - "pydantic-ai>=1.0", |
19 | | - "claude-agent-sdk>=0.1", |
20 | | -] |
21 | | - |
22 | | -[dependency-groups] |
23 | | -dev = [ |
24 | | - "ruff>=0.15.2", |
25 | | - "basedpyright>=1.38.1", |
26 | | - "nodejs-wheel>=22,<25", |
27 | | - "pytest>=8.3.0,<10.0.0", |
28 | | - "pytest-asyncio>=1.0.0", |
29 | | - "pytest-cov>=4.0.0", |
30 | | - "respx>=0.20.0", |
31 | | - "pytest-xdist>=3.0", |
32 | | -] |
33 | | - |
34 | | -[build-system] |
35 | | -requires = ["hatchling"] |
36 | | -build-backend = "hatchling.build" |
37 | | - |
38 | | -[tool.hatch.build.targets.wheel] |
39 | | -packages = ["src/musher"] |
40 | | - |
41 | | -[tool.pytest.ini_options] |
42 | | -testpaths = ["tests"] |
43 | | -asyncio_mode = "auto" |
44 | | -addopts = [ |
45 | | - "--strict-markers", |
46 | | - "--strict-config", |
47 | | - "-n=auto", |
48 | | - "--cov=musher", |
49 | | - "--cov-report=term-missing", |
50 | | - "--cov-fail-under=90", |
51 | | -] |
52 | | - |
53 | | -[tool.basedpyright] |
54 | | -include = ["src"] |
55 | | -exclude = [ |
56 | | - "**/node_modules", |
57 | | - "**/__pycache__", |
58 | | - "tests", |
59 | | -] |
60 | | -pythonVersion = "3.13" |
61 | | -typeCheckingMode = "all" |
62 | | - |
63 | | -[tool.ruff] |
64 | | -required-version = ">=0.14.14" |
65 | | -line-length = 100 |
66 | | -target-version = "py313" |
67 | | -preview = true |
68 | | -exclude = [ |
69 | | - ".git", |
70 | | - ".venv", |
71 | | - "__pycache__", |
72 | | -] |
73 | | - |
74 | | -[tool.ruff.lint] |
75 | | -select = [ |
76 | | - "E", "W", # pycodestyle |
77 | | - "F", # pyflakes |
78 | | - "I", # isort |
79 | | - "N", # pep8-naming |
80 | | - "UP", # pyupgrade |
81 | | - "B", # flake8-bugbear |
82 | | - "C4", # flake8-comprehensions |
83 | | - "A", # flake8-builtins |
84 | | - "DTZ", # flake8-datetimez |
85 | | - "ASYNC", # flake8-async |
86 | | - "RUF", # ruff-specific |
87 | | - "T20", # flake8-print |
88 | | - "PGH", # pygrep-hooks |
89 | | - "PT", # flake8-pytest-style |
90 | | - "PERF", # perflint |
91 | | - "RET", # flake8-return |
92 | | - "G", # flake8-logging-format |
93 | | - "BLE", # flake8-blind-except |
94 | | - "SIM", # flake8-simplify |
95 | | - "TC", # flake8-type-checking |
96 | | - "ARG", # flake8-unused-arguments |
97 | | - "PTH", # flake8-use-pathlib |
98 | | - "PL", # pylint |
99 | | - "ERA001", # eradicate (dead code) |
100 | | - "S", # flake8-bandit (security) |
101 | | - "FIX", # fixme comments |
102 | | - "ANN", # flake8-annotations |
103 | | - "D", # pydocstyle |
104 | | - "ISC", # flake8-implicit-str-concat |
105 | | - "ICN", # flake8-import-conventions |
106 | | - "PIE", # flake8-pie |
107 | | - "RSE", # flake8-raise |
108 | | - "FURB", # refurb |
109 | | - "LOG", # flake8-logging |
110 | | - "FLY", # flynt (f-string conversion) |
111 | | - "TID", # flake8-tidy-imports |
112 | | - "COM", # flake8-commas |
113 | | - "Q", # flake8-quotes |
114 | | - "SLOT", # flake8-slots |
115 | | - "FA", # flake8-future-annotations |
116 | | - "YTT", # flake8-2020 (sys.version checks) |
117 | | -] |
118 | | -ignore = [ |
119 | | - "E501", # line too long (handled by formatter) |
120 | | - "A003", # builtin shadowing in class attributes |
121 | | -"D100", # missing docstring in public module |
122 | | - "D104", # missing docstring in public package |
123 | | - "COM812", # missing trailing comma (conflicts with formatter) |
124 | | - "ISC001", # implicit string concat on single line (conflicts with formatter) |
125 | | -] |
126 | | -fixable = ["ALL"] |
127 | | - |
128 | | -[tool.ruff.lint.per-file-ignores] |
129 | | -"tests/**/*" = [ |
130 | | - "S101", "S105", "S106", "S108", |
131 | | - "ARG001", "ARG002", |
132 | | - "PLR2004", |
133 | | - "PLR6301", # test methods don't use self |
134 | | - "PLR0904", # too many public methods in test classes |
135 | | - "PLC2701", # tests import private modules |
136 | | - "RUF069", # float equality ok in tests with known values |
137 | | - "ANN", |
138 | | - "D", |
139 | | -] |
140 | | -"__init__.py" = ["F401", "RUF067"] |
141 | | -"examples/**/*" = ["T201", "S106", "S603", "S604", "S605", "S607", "ERA001", "ANN", "D"] |
142 | | - |
143 | | -[tool.ruff.lint.pylint] |
144 | | -max-args = 8 |
145 | | - |
146 | | -[tool.ruff.lint.pydocstyle] |
147 | | -convention = "google" |
148 | | - |
149 | | -[tool.ruff.lint.isort] |
150 | | -known-first-party = ["musher"] |
151 | | -combine-as-imports = true |
152 | | - |
153 | | -[tool.ruff.format] |
154 | | -quote-style = "double" |
155 | | -indent-style = "space" |
156 | | -skip-magic-trailing-comma = false |
157 | | -line-ending = "auto" |
| 1 | +[project] |
| 2 | +name = "musher-sdk" |
| 3 | +version = "0.3.2" # x-release-please-version |
| 4 | +description = "Python SDK for the Musher bundle distribution platform" |
| 5 | +readme = "README.md" |
| 6 | +license = "Apache-2.0" |
| 7 | +requires-python = ">=3.13" |
| 8 | +dependencies = [ |
| 9 | + "httpx>=0.27", |
| 10 | + "keyring>=25.0", |
| 11 | + "platformdirs>=4.0", |
| 12 | + "pydantic>=2.12", |
| 13 | +] |
| 14 | + |
| 15 | +[project.optional-dependencies] |
| 16 | +examples = [ |
| 17 | + "openai-agents>=0.13", |
| 18 | + "pydantic-ai>=1.0", |
| 19 | + "claude-agent-sdk>=0.1", |
| 20 | +] |
| 21 | + |
| 22 | +[dependency-groups] |
| 23 | +dev = [ |
| 24 | + "ruff>=0.15.2", |
| 25 | + "basedpyright>=1.38.1", |
| 26 | + "nodejs-wheel>=22,<25", |
| 27 | + "pytest>=8.3.0,<10.0.0", |
| 28 | + "pytest-asyncio>=1.0.0", |
| 29 | + "pytest-cov>=4.0.0", |
| 30 | + "respx>=0.20.0", |
| 31 | + "pytest-xdist>=3.0", |
| 32 | +] |
| 33 | + |
| 34 | +[build-system] |
| 35 | +requires = ["hatchling"] |
| 36 | +build-backend = "hatchling.build" |
| 37 | + |
| 38 | +[tool.hatch.build.targets.wheel] |
| 39 | +packages = ["src/musher"] |
| 40 | + |
| 41 | +[tool.pytest.ini_options] |
| 42 | +testpaths = ["tests"] |
| 43 | +asyncio_mode = "auto" |
| 44 | +addopts = [ |
| 45 | + "--strict-markers", |
| 46 | + "--strict-config", |
| 47 | + "-n=auto", |
| 48 | + "--cov=musher", |
| 49 | + "--cov-report=term-missing", |
| 50 | + "--cov-fail-under=90", |
| 51 | +] |
| 52 | + |
| 53 | +[tool.basedpyright] |
| 54 | +include = ["src"] |
| 55 | +exclude = [ |
| 56 | + "**/node_modules", |
| 57 | + "**/__pycache__", |
| 58 | + "tests", |
| 59 | +] |
| 60 | +pythonVersion = "3.13" |
| 61 | +typeCheckingMode = "all" |
| 62 | + |
| 63 | +[tool.ruff] |
| 64 | +required-version = ">=0.14.14" |
| 65 | +line-length = 100 |
| 66 | +target-version = "py313" |
| 67 | +preview = true |
| 68 | +exclude = [ |
| 69 | + ".git", |
| 70 | + ".venv", |
| 71 | + "__pycache__", |
| 72 | +] |
| 73 | + |
| 74 | +[tool.ruff.lint] |
| 75 | +select = [ |
| 76 | + "E", "W", # pycodestyle |
| 77 | + "F", # pyflakes |
| 78 | + "I", # isort |
| 79 | + "N", # pep8-naming |
| 80 | + "UP", # pyupgrade |
| 81 | + "B", # flake8-bugbear |
| 82 | + "C4", # flake8-comprehensions |
| 83 | + "A", # flake8-builtins |
| 84 | + "DTZ", # flake8-datetimez |
| 85 | + "ASYNC", # flake8-async |
| 86 | + "RUF", # ruff-specific |
| 87 | + "T20", # flake8-print |
| 88 | + "PGH", # pygrep-hooks |
| 89 | + "PT", # flake8-pytest-style |
| 90 | + "PERF", # perflint |
| 91 | + "RET", # flake8-return |
| 92 | + "G", # flake8-logging-format |
| 93 | + "BLE", # flake8-blind-except |
| 94 | + "SIM", # flake8-simplify |
| 95 | + "TC", # flake8-type-checking |
| 96 | + "ARG", # flake8-unused-arguments |
| 97 | + "PTH", # flake8-use-pathlib |
| 98 | + "PL", # pylint |
| 99 | + "ERA001", # eradicate (dead code) |
| 100 | + "S", # flake8-bandit (security) |
| 101 | + "FIX", # fixme comments |
| 102 | + "ANN", # flake8-annotations |
| 103 | + "D", # pydocstyle |
| 104 | + "ISC", # flake8-implicit-str-concat |
| 105 | + "ICN", # flake8-import-conventions |
| 106 | + "PIE", # flake8-pie |
| 107 | + "RSE", # flake8-raise |
| 108 | + "FURB", # refurb |
| 109 | + "LOG", # flake8-logging |
| 110 | + "FLY", # flynt (f-string conversion) |
| 111 | + "TID", # flake8-tidy-imports |
| 112 | + "COM", # flake8-commas |
| 113 | + "Q", # flake8-quotes |
| 114 | + "SLOT", # flake8-slots |
| 115 | + "FA", # flake8-future-annotations |
| 116 | + "YTT", # flake8-2020 (sys.version checks) |
| 117 | +] |
| 118 | +ignore = [ |
| 119 | + "E501", # line too long (handled by formatter) |
| 120 | + "A003", # builtin shadowing in class attributes |
| 121 | +"D100", # missing docstring in public module |
| 122 | + "D104", # missing docstring in public package |
| 123 | + "COM812", # missing trailing comma (conflicts with formatter) |
| 124 | + "ISC001", # implicit string concat on single line (conflicts with formatter) |
| 125 | +] |
| 126 | +fixable = ["ALL"] |
| 127 | + |
| 128 | +[tool.ruff.lint.per-file-ignores] |
| 129 | +"tests/**/*" = [ |
| 130 | + "S101", "S105", "S106", "S108", |
| 131 | + "ARG001", "ARG002", |
| 132 | + "PLR2004", |
| 133 | + "PLR6301", # test methods don't use self |
| 134 | + "PLR0904", # too many public methods in test classes |
| 135 | + "PLC2701", # tests import private modules |
| 136 | + "RUF069", # float equality ok in tests with known values |
| 137 | + "ANN", |
| 138 | + "D", |
| 139 | +] |
| 140 | +"__init__.py" = ["F401", "RUF067"] |
| 141 | +"examples/**/*" = ["T201", "S106", "S603", "S604", "S605", "S607", "ERA001", "ANN", "D"] |
| 142 | + |
| 143 | +[tool.ruff.lint.pylint] |
| 144 | +max-args = 8 |
| 145 | + |
| 146 | +[tool.ruff.lint.pydocstyle] |
| 147 | +convention = "google" |
| 148 | + |
| 149 | +[tool.ruff.lint.isort] |
| 150 | +known-first-party = ["musher"] |
| 151 | +combine-as-imports = true |
| 152 | + |
| 153 | +[tool.ruff.format] |
| 154 | +quote-style = "double" |
| 155 | +indent-style = "space" |
| 156 | +skip-magic-trailing-comma = false |
| 157 | +line-ending = "auto" |
0 commit comments