Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
314 changes: 157 additions & 157 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,157 +1,157 @@
[project]
name = "musher-sdk"
version = "0.3.3" # x-release-please-version
description = "Python SDK for the Musher bundle distribution platform"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.13"
dependencies = [
"httpx>=0.27",
"keyring>=25.0",
"platformdirs>=4.0",
"pydantic>=2.12",
]

[project.optional-dependencies]
examples = [
"openai-agents>=0.13",
"pydantic-ai>=1.0",
"claude-agent-sdk>=0.1",
]

[dependency-groups]
dev = [
"ruff>=0.15.2",
"basedpyright>=1.38.1",
"nodejs-wheel>=22,<25",
"pytest>=8.3.0,<10.0.0",
"pytest-asyncio>=1.0.0",
"pytest-cov>=4.0.0",
"respx>=0.20.0",
"pytest-xdist>=3.0",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/musher"]

[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = [
"--strict-markers",
"--strict-config",
"-n=auto",
"--cov=musher",
"--cov-report=term-missing",
"--cov-fail-under=90",
]

[tool.basedpyright]
include = ["src"]
exclude = [
"**/node_modules",
"**/__pycache__",
"tests",
]
pythonVersion = "3.13"
typeCheckingMode = "all"

[tool.ruff]
required-version = ">=0.14.14"
line-length = 100
target-version = "py313"
preview = true
exclude = [
".git",
".venv",
"__pycache__",
]

[tool.ruff.lint]
select = [
"E", "W", # pycodestyle
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"A", # flake8-builtins
"DTZ", # flake8-datetimez
"ASYNC", # flake8-async
"RUF", # ruff-specific
"T20", # flake8-print
"PGH", # pygrep-hooks
"PT", # flake8-pytest-style
"PERF", # perflint
"RET", # flake8-return
"G", # flake8-logging-format
"BLE", # flake8-blind-except
"SIM", # flake8-simplify
"TC", # flake8-type-checking
"ARG", # flake8-unused-arguments
"PTH", # flake8-use-pathlib
"PL", # pylint
"ERA001", # eradicate (dead code)
"S", # flake8-bandit (security)
"FIX", # fixme comments
"ANN", # flake8-annotations
"D", # pydocstyle
"ISC", # flake8-implicit-str-concat
"ICN", # flake8-import-conventions
"PIE", # flake8-pie
"RSE", # flake8-raise
"FURB", # refurb
"LOG", # flake8-logging
"FLY", # flynt (f-string conversion)
"TID", # flake8-tidy-imports
"COM", # flake8-commas
"Q", # flake8-quotes
"SLOT", # flake8-slots
"FA", # flake8-future-annotations
"YTT", # flake8-2020 (sys.version checks)
]
ignore = [
"E501", # line too long (handled by formatter)
"A003", # builtin shadowing in class attributes
"D100", # missing docstring in public module
"D104", # missing docstring in public package
"COM812", # missing trailing comma (conflicts with formatter)
"ISC001", # implicit string concat on single line (conflicts with formatter)
]
fixable = ["ALL"]

[tool.ruff.lint.per-file-ignores]
"tests/**/*" = [
"S101", "S105", "S106", "S108",
"ARG001", "ARG002",
"PLR2004",
"PLR6301", # test methods don't use self
"PLR0904", # too many public methods in test classes
"PLC2701", # tests import private modules
"RUF069", # float equality ok in tests with known values
"ANN",
"D",
]
"__init__.py" = ["F401", "RUF067"]
"examples/**/*" = ["T201", "S106", "S603", "S604", "S605", "S607", "ERA001", "ANN", "D"]

[tool.ruff.lint.pylint]
max-args = 8

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.ruff.lint.isort]
known-first-party = ["musher"]
combine-as-imports = true

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[project]
name = "musher-sdk"
version = "0.3.3" # x-release-please-version
description = "Python SDK for the Musher bundle distribution platform"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.13"
dependencies = [
"httpx>=0.27",
"keyring>=25.0",
"platformdirs>=4.0",
"pydantic>=2.12",
]
[project.optional-dependencies]
examples = [
"openai-agents>=0.13",
"pydantic-ai>=1.0",
"claude-agent-sdk>=0.1",
]
[dependency-groups]
dev = [
"ruff>=0.15.2",
"basedpyright>=1.38.1",
"nodejs-wheel>=22,<25",
"pytest>=8.3.0,<10.0.0",
"pytest-asyncio>=1.0.0",
"pytest-cov>=4.0.0",
"respx>=0.20.0",
"pytest-xdist>=3.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/musher"]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = [
"--strict-markers",
"--strict-config",
"-n=auto",
"--cov=musher",
"--cov-report=term-missing",
"--cov-fail-under=90",
]
[tool.basedpyright]
include = ["src"]
exclude = [
"**/node_modules",
"**/__pycache__",
"tests",
]
pythonVersion = "3.13"
typeCheckingMode = "all"
[tool.ruff]
required-version = ">=0.14.14"
line-length = 100
target-version = "py313"
preview = true
exclude = [
".git",
".venv",
"__pycache__",
]
[tool.ruff.lint]
select = [
"E", "W", # pycodestyle
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"A", # flake8-builtins
"DTZ", # flake8-datetimez
"ASYNC", # flake8-async
"RUF", # ruff-specific
"T20", # flake8-print
"PGH", # pygrep-hooks
"PT", # flake8-pytest-style
"PERF", # perflint
"RET", # flake8-return
"G", # flake8-logging-format
"BLE", # flake8-blind-except
"SIM", # flake8-simplify
"TC", # flake8-type-checking
"ARG", # flake8-unused-arguments
"PTH", # flake8-use-pathlib
"PL", # pylint
"ERA001", # eradicate (dead code)
"S", # flake8-bandit (security)
"FIX", # fixme comments
"ANN", # flake8-annotations
"D", # pydocstyle
"ISC", # flake8-implicit-str-concat
"ICN", # flake8-import-conventions
"PIE", # flake8-pie
"RSE", # flake8-raise
"FURB", # refurb
"LOG", # flake8-logging
"FLY", # flynt (f-string conversion)
"TID", # flake8-tidy-imports
"COM", # flake8-commas
"Q", # flake8-quotes
"SLOT", # flake8-slots
"FA", # flake8-future-annotations
"YTT", # flake8-2020 (sys.version checks)
]
ignore = [
"E501", # line too long (handled by formatter)
"A003", # builtin shadowing in class attributes
"D100", # missing docstring in public module
"D104", # missing docstring in public package
"COM812", # missing trailing comma (conflicts with formatter)
"ISC001", # implicit string concat on single line (conflicts with formatter)
]
fixable = ["ALL"]
[tool.ruff.lint.per-file-ignores]
"tests/**/*" = [
"S101", "S105", "S106", "S108",
"ARG001", "ARG002",
"PLR2004",
"PLR6301", # test methods don't use self
"PLR0904", # too many public methods in test classes
"PLC2701", # tests import private modules
"RUF069", # float equality ok in tests with known values
"ANN",
"D",
]
"__init__.py" = ["F401", "RUF067"]
"examples/**/*" = ["T201", "S106", "S603", "S604", "S605", "S607", "ERA001", "ANN", "D"]
[tool.ruff.lint.pylint]
max-args = 8
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.isort]
known-first-party = ["musher"]
combine-as-imports = true
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading