blob: 6ee2b66d8d783f62dc13168b12d70ec2b2808b09 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "magpie-vcs"
version = "0.1.0"
description = "Backend-dispatching implementation of the source-control (VCS) capability documented in tools/github/source-control.md — one abstract interface, a complete Git backend, and explicit extension points for non-Git VCS bridges."
readme = "README.md"
requires-python = ">=3.11"
license = { text = "Apache-2.0" }
# stdlib-only — the abstraction shells out to the underlying VCS binary.
dependencies = []
[project.scripts]
magpie-vcs = "magpie_vcs:main"
[tool.hatch.build.targets.wheel]
packages = ["src/magpie_vcs"]
[tool.ruff]
line-length = 110
target-version = "py311"
src = ["src", "tests"]
[tool.ruff.lint]
select = [
"E",
"W",
"F",
"I",
"B",
"UP",
"SIM",
"C4",
"RUF",
]
ignore = [
"E501",
]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["B", "SIM"]
[tool.mypy]
python_version = "3.11"
files = ["src", "tests"]
warn_unused_ignores = true
warn_redundant_casts = true
warn_unreachable = true
check_untyped_defs = true
no_implicit_optional = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
[[tool.mypy.overrides]]
module = "tests.*"
disallow_untyped_defs = false
disallow_incomplete_defs = false
[tool.pytest.ini_options]
minversion = "8.0"
addopts = "-ra -q"
testpaths = ["tests"]
[dependency-groups]
# Shared static-analysis + test toolchain, pinned to the same versions as the
# workspace root so every sub-project's own environment is self-contained.
# The workspace checks run each tool via `uv run --directory <member>
# --project . python -m <tool>` — see tools/dev/run-workspace-check.sh.
dev = [
"mypy>=2.1.0",
"pytest>=9.1.1",
"ruff>=0.15.20",
]