ci: add ruff linting and mypy type checking
Add ruff and mypy to dev dependencies with configuration in pyproject.toml. Add a lint CI job that runs ruff check, ruff format --check, and mypy. Auto-fix import sorting and formatting across the codebase. Exclude alembic/versions from linting (auto-generated migrations). Ignore B008 (FastAPI Depends pattern) and RUF001 (unicode in user-facing strings). 21 ruff lint errors and 50 mypy errors remain for manual review. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
399276ea69
commit
bf04c77aa9
137 changed files with 3066 additions and 1900 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
from app.services.domains.openalex.types import OpenAlexWork
|
||||
|
||||
|
||||
def test_parse_openalex_work_from_api_dict() -> None:
|
||||
raw_api_response = {
|
||||
"id": "https://openalex.org/W2741809807",
|
||||
|
|
@ -13,28 +13,19 @@ def test_parse_openalex_work_from_api_dict() -> None:
|
|||
"doi": "https://doi.org/10.1038/s41586-020-0315-z",
|
||||
"mag": "2741809807",
|
||||
"pmid": "https://pubmed.ncbi.nlm.nih.gov/32040050",
|
||||
"pmcid": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7325852"
|
||||
},
|
||||
"open_access": {
|
||||
"is_oa": True,
|
||||
"oa_url": "https://example.com/pdf"
|
||||
"pmcid": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7325852",
|
||||
},
|
||||
"open_access": {"is_oa": True, "oa_url": "https://example.com/pdf"},
|
||||
"authorships": [
|
||||
{
|
||||
"author_position": "first",
|
||||
"author": {
|
||||
"id": "https://openalex.org/A1969205032",
|
||||
"display_name": "Giuseppe Carleo"
|
||||
}
|
||||
"author": {"id": "https://openalex.org/A1969205032", "display_name": "Giuseppe Carleo"},
|
||||
},
|
||||
{
|
||||
"author_position": "middle",
|
||||
"author": {
|
||||
"id": "https://openalex.org/A4356881717",
|
||||
"display_name": "Ignacio Cirac"
|
||||
}
|
||||
}
|
||||
]
|
||||
"author": {"id": "https://openalex.org/A4356881717", "display_name": "Ignacio Cirac"},
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
work = OpenAlexWork.from_api_dict(raw_api_response)
|
||||
|
|
@ -52,6 +43,7 @@ def test_parse_openalex_work_from_api_dict() -> None:
|
|||
assert work.authors[0].display_name == "Giuseppe Carleo"
|
||||
assert work.authors[1].display_name == "Ignacio Cirac"
|
||||
|
||||
|
||||
def test_parse_openalex_work_empty() -> None:
|
||||
work = OpenAlexWork.from_api_dict({"id": "W123"})
|
||||
assert work.openalex_id == "W123"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue