eggplants/pyjlyric

View on GitHub
pyproject.toml

Summary

Maintainability
Test Coverage
# poetry self add poetry-bumpversion

[build-system]
build-backend = "poetry.core.masonry.api"
requires = [
  "poetry-core",
]

[tool]
[tool.black]
line-length = 120
target-version = ['py39']

[tool.isort]
profile = "black"

[tool.mypy]
pretty = true
python_version = "3.9"
show_error_codes = true
strict = true
plugins = [
  "pydantic.mypy"
]

[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = true
warn_required_dynamic_aliases = true

[tool.ruff]
select = ["ALL"]
ignore = [
  "D",
]
line-length = 120

[tool.ruff.mccabe]
max-complexity = 18

[tool.ruff.per-file-ignores]
"model.py" = [
  "ANN101",
  "ANN102",
  # https://github.com/pydantic/pydantic/issues/2597#issuecomment-1086194186
  "UP006", # Use `tuple`/`list` instead of `Tuple`/`List`
  "UP007", # Use `X | Y` for type annotations
]
"tests/test_*.py" = [
  "INP001", #  File `tests/test_pyjlyric.py` is part of an implicit namespace package. Add an `__init__.py`.
  "S101", #    Use of assert detected
]

[tool.poetry]
authors = ["eggplants <w10776e8w@yahoo.co.jp>"]
classifiers = [
  "License :: OSI Approved :: MIT License",
  "Programming Language :: Python :: 3",
  "Programming Language :: Python :: 3 :: Only"
]
description = "Japanese Lyric Aggregator"
keywords = [
  "japanese",
  "lyrics",
  "download-lyrics",
  "lyrics-scraping",
  "japanese-songs",
]
name = "pyjlyric"
packages = [{include = "pyjlyric"}]
license = "MIT"
readme = "README.md"
repository = "https://github.com/eggplants/pyjlyric"
version = "1.1.0"

[tool.poetry.dependencies]
python = ">=3.9,<3.12"
pydantic = "^2.0.2"
typing-extensions = "^4.5.0"
requests = "^2.28.2"
beautifulsoup4 = "^4.11.2"
lxml = ">=4.9.2,<6.0.0"
chardet = "^5.1.0"

[tool.poetry.group.dev.dependencies]
mypy = ">=0.991,<1.12"
pre-commit = ">=2.20,<4.0"
taskipy = "^1.10.3"
pytest = ">=7.2.2,<9.0.0"
pytest-cov = ">=4,<6"

[tool.poetry.scripts]
jrc = "pyjlyric.main:main"

[tool.poetry_bumpversion.file."pyjlyric/__init__.py"]

[tool.taskipy.tasks]
test = "pytest --cov=pyjlyric --cov-report=term"
"test:ci" = "task test --cov-report=xml:cov.xml"
lint = "pre-commit run -a"
profile = "python -m cProfile"