chore: scaffold payroll extension

Repo tooling and LNbits extension metadata only — no runtime code yet, so
this lands separately from the feature work per the workspace commit rules
(cross-cutting concerns commit first).

- MIT licence, .gitignore, README
- Makefile + pyproject wired for the standard aio fork lint pipeline
  (black + ruff + mypy) and pytest
- config.json declaring id/version/tile so the extension is installable
  from the aiolabs catalog once there is something to install

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jy52j9GRZ6XKa1Zt21LLj
This commit is contained in:
Padreug 2026-08-31 13:36:32 +02:00
commit a211a8ab8b
7 changed files with 191 additions and 0 deletions

63
pyproject.toml Normal file
View file

@ -0,0 +1,63 @@
[project]
name = "lnbits-payroll"
version = "0.0.0"
requires-python = ">=3.10,<3.13"
description = "Recurring salary payouts between LNbits wallets, scheduled by the instance super user."
authors = [{ name = "aiolabs", email = "dev@aiolabs.dev" }]
urls = { Homepage = "https://git.atitlan.io/aiolabs/payroll", Repository = "https://git.atitlan.io/aiolabs/payroll" }
dependencies = [ "lnbits>1" ]
[dependency-groups]
dev = [
"black",
"pytest-asyncio",
"pytest",
"mypy",
"pre-commit",
"ruff",
]
[tool.poetry]
package-mode = false
[tool.mypy]
plugins = ["pydantic.mypy"]
[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = true
warn_required_dynamic_aliases = true
warn_untyped_fields = true
[tool.pytest.ini_options]
log_cli = false
testpaths = [
"tests"
]
[tool.black]
line-length = 88
[tool.ruff]
line-length = 88
[tool.ruff.lint]
select = ["F", "E", "W", "I", "A", "C", "N", "UP", "RUF", "B"]
ignore = ["C901"]
fixable = ["ALL"]
unfixable = []
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[tool.ruff.lint.pep8-naming]
classmethod-decorators = [
"validator",
"root_validator",
]
[tool.ruff.lint.flake8-bugbear]
extend-immutable-calls = [
"fastapi.Depends",
"fastapi.Query",
]