diff --git a/pyproject.toml b/pyproject.toml index 3274483..3d41d26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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" diff --git a/uv.lock b/uv.lock index b7b1108..cde3b64 100644 --- a/uv.lock +++ b/uv.lock @@ -1439,7 +1439,7 @@ wheels = [ [[package]] name = "musher-sdk" -version = "0.3.1" +version = "0.3.2" source = { editable = "." } dependencies = [ { name = "httpx" },