39 Commits
Author SHA1 Message Date
Adrien ce671f4b10 🐛 Enable virtual env before running poetry
ci/woodpecker/pr/lint Pipeline was successful
2024-02-14 23:28:49 +01:00
Adrien 94d87c1c0e 🐛 Fix invalid running directory (part 2)
ci/woodpecker/pr/lint Pipeline was successful
2024-02-14 23:24:16 +01:00
Adrien 71f7519b2f 🐛 Fix invalid running directory
ci/woodpecker/pr/lint Pipeline failed
2024-02-14 23:10:26 +01:00
Adrien 99aeaae9f2 🚧 Skip the PATH update
ci/woodpecker/pr/lint Pipeline failed
2024-02-14 23:06:43 +01:00
Adrien 06d446c3f9 🚧 Edit PATH before loading python virtual env
ci/woodpecker/pr/lint Pipeline failed
2024-02-14 22:58:04 +01:00
Adrien 001c7330c6 🎨 Prepare linters environment once
ci/woodpecker/pr/lint Pipeline failed
2024-02-14 22:49:55 +01:00
Adrien d4d24d13d2 🐛 Install poetry for each step
ci/woodpecker/pr/lint Pipeline was successful
2024-02-13 23:39:46 +01:00
Adrien f1cafc7484 🚧 Add dummy commit
ci/woodpecker/pr/lint Pipeline was successful
2024-02-13 23:05:45 +01:00
Adrien 30020d17cc 🐛 Fix typo 2024-02-13 23:02:40 +01:00
Adrien 85bdf2656c 🚧 Comment temporary the backend linter when conditions 2024-02-13 22:56:45 +01:00
Adrien fe67cd0d98 🚧 Dummy commit 2024-02-13 22:36:34 +01:00
Adrien 221125198d 🐛 Image shall be set for each CI step 2024-02-13 22:09:09 +01:00
Adrien fe05e2a2c5 🎨 Factorize backend linters steps 2024-02-13 20:57:18 +01:00
Adrien f964ba9027 🚧 Add dummy commit to check the reviewdog filter mode
ci/woodpecker/pr/lint Pipeline was successful
2024-02-12 23:38:34 +01:00
Adrien 117d549ea7 🚧 Redirect reviewdog stderr to stdout
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 21:38:46 +01:00
Adrien 529315bf50 🚧 Disable reviewdog filter and create empty .reviewdog.yml file
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 21:31:23 +01:00
Adrien 35882bda31 🔊 Increase reviewdog logs
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 21:04:22 +01:00
Adrien 688ffeb7f8 🚧 Add the sqlalchemy dep to the linters poetry group
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 20:14:44 +01:00
Adrien 0993c42557 🚧 Poetry shell -> poetry run
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 20:02:47 +01:00
Adrien 2b0eb40ab1 🚧 Run linters in poetry virtual environment
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:59:10 +01:00
Adrien 8082f7f012 🚧 Remove the deps installation and disable mypy caching
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:56:18 +01:00
Adrien 2d9d7c51b5 🚧 Add gcc to the CI image
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:52:34 +01:00
Adrien 63cdbcb46e 🚧 Install dependencies before running the linters
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:46:12 +01:00
Adrien 825a852c67 🚧 Fix reviewdog path
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:34:51 +01:00
Adrien 812d7c0a61 🚧 Format reviewdog command and use temp file
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:31:47 +01:00
Adrien 63abb677cb 🚧 Try to run linters on pull_request event
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 19:13:13 +01:00
Adrien a089bbbf78 🔊 Print env variables
ci/woodpecker/push/lint Pipeline was successful
2024-02-11 19:09:06 +01:00
Adrien 55401dcd0c 🚧 Add gitea_address secret
ci/woodpecker/push/lint Pipeline was successful
2024-02-11 19:05:15 +01:00
Adrien 58c18a0479 🚧 Enable REVIEWDOG_GITEA_API_TOKEN
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 18:54:05 +01:00
Adrien 2eb8d59a0e 🚧 Fix typo
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/push/lint Pipeline was successful
2024-02-11 18:38:47 +01:00
Adrien 137c28387c 🚧 Fix eviewdog path
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 18:37:23 +01:00
Adrien 0cddf9dc7e 🚧 Fix reviewdog version and setup ruff
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 18:34:51 +01:00
Adrien bccbfe0ff3 🚧 First reviewdog try
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 18:30:43 +01:00
Adrien 10ecd40ef5 💚 Force the linters to run even if the previous one fails.
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 17:52:28 +01:00
Adrien 6687c2de15 💚 Run backend linters on commits only
ci/woodpecker/push/lint Pipeline failed
ci/woodpecker/pr/lint Pipeline failed
Try to force the linters to run even if the previous one fails.
2024-02-11 17:48:01 +01:00
Adrien c8732a0375 Run Mypy linter on backend pull requests
ci/woodpecker/push/lint Pipeline failed
ci/woodpecker/pr/lint Pipeline failed
2024-02-11 17:40:06 +01:00
Adrien ff808e7c8f 💚 Don't run linters on master, develop and release/* branches
ci/woodpecker/push/lint Pipeline failed
ci/woodpecker/pr/lint Pipeline was successful
2024-02-11 17:24:24 +01:00
Adrien 7ac719db24 👷 Run Ruff linter on back-end pull requests
ci/woodpecker/manual/lint Pipeline was successful
2024-02-11 17:06:04 +01:00
Adrien a8277fd018 👷 First try
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-02-03 18:04:09 +01:00
5 changed files with 80 additions and 14 deletions
+33
View File
@@ -0,0 +1,33 @@
when:
- event: pull_request
branch:
exclude: [master, release/*]
steps:
- name: prepare
image: python:3.12-alpine
commands: |
cd ./backend
python3 -m venv local
wget -O - -q https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s latest -b ./local/bin/
source ./local/bin/activate
pip install poetry
poetry install --only=linters --no-root
- name: ruff
image: python:3.12-alpine
failure: ignore
secrets: ["reviewdog_gitea_api_token", "gitea_address"]
commands: |
cd ./backend
source ./local/bin/activate
poetry run ruff --output-format sarif . | ./local/bin/reviewdog -f sarif -reporter gitea-pr-review -filter-mode nofilter
- name: mypy
image: python:3.12-alpine
failure: ignore
secrets: ["reviewdog_gitea_api_token", "gitea_address"]
commands: |
cd ./backend
source ./local/bin/activate
poetry run mypy --no-incremental . | ./local/bin/reviewdog -f mypy -reporter gitea-pr-review -filter-mode nofilter
+5 -2
View File
@@ -1,7 +1,10 @@
from asyncio import sleep from asyncio import sleep
from logging import getLogger from logging import getLogger
from typing import Annotated, AsyncIterator
from fastapi import Depends
from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
from sqlalchemy import text
from sqlalchemy.exc import OperationalError, SQLAlchemyError from sqlalchemy.exc import OperationalError, SQLAlchemyError
from sqlalchemy.ext.asyncio import ( from sqlalchemy.ext.asyncio import (
async_sessionmaker, async_sessionmaker,
@@ -13,7 +16,6 @@ from sqlalchemy.ext.asyncio import (
from .base_class import Base from .base_class import Base
from ..settings import DatabaseSettings from ..settings import DatabaseSettings
logger = getLogger(__name__) logger = getLogger(__name__)
@@ -28,7 +30,8 @@ class Database:
except (SQLAlchemyError, AttributeError) as e: except (SQLAlchemyError, AttributeError) as e:
logger.exception(e) logger.exception(e)
raise
return None
# TODO: Preserve UserLastStopSearchResults table from drop. # TODO: Preserve UserLastStopSearchResults table from drop.
async def connect( async def connect(
+20
View File
@@ -35,6 +35,26 @@ if TYPE_CHECKING:
logger = getLogger(__name__) logger = getLogger(__name__)
# import cProfile
# import io
# import pstats
# import contextlib
# @contextlib.contextmanager
# def profiled():
# pr = cProfile.Profile()
# pr.enable()
# yield
# pr.disable()
# s = io.StringIO()
# ps = pstats.Stats(pr, stream=s).sort_stats("cumulative")
# ps.print_stats()
# # uncomment this to see who's calling what
# # ps.print_callers()
# print(s.getvalue())
class StopAreaStopAssociations(Base): class StopAreaStopAssociations(Base):
id = mapped_column(BigInteger, primary_key=True) id = mapped_column(BigInteger, primary_key=True)
+2 -1
View File
@@ -18,13 +18,14 @@ from api.routers import line, stop
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI) -> None:
FastAPICache.init(redis_backend, prefix="api", enable=settings.cache.enable) FastAPICache.init(redis_backend, prefix="api", enable=settings.cache.enable)
await db.connect(settings.db, settings.clear_static_data) await db.connect(settings.db, settings.clear_static_data)
if settings.clear_static_data: if settings.clear_static_data:
await idfm_interface.startup() await idfm_interface.startup()
print("OK")
yield yield
await db.disconnect() await db.disconnect()
+20 -11
View File
@@ -24,6 +24,7 @@ psycopg = "^3.1.9"
pyyaml = "^6.0" pyyaml = "^6.0"
fastapi-cache2 = {extras = ["redis"], version = "^0.2.1"} fastapi-cache2 = {extras = ["redis"], version = "^0.2.1"}
pydantic-settings = "^2.0.3" pydantic-settings = "^2.0.3"
ruff = "^0.2.1"
[tool.poetry.group.db_updater.dependencies] [tool.poetry.group.db_updater.dependencies]
aiofiles = "^22.1.0" aiofiles = "^22.1.0"
@@ -52,28 +53,36 @@ build-backend = "poetry.core.masonry.api"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
pylsp-mypy = "^0.6.2" pylsp-mypy = "^0.6.2"
mccabe = "^0.7.0"
rope = "^1.3.0"
python-lsp-black = "^1.2.1" python-lsp-black = "^1.2.1"
black = "^22.10.0"
types-aiofiles = "^22.1.0.2"
wrapt = "^1.14.1" wrapt = "^1.14.1"
pydocstyle = "^6.2.2"
dill = "^0.3.6" dill = "^0.3.6"
python-lsp-ruff = "^2.1.0" python-lsp-ruff = "^1.0.5"
python-lsp-server = "^1.7.1" python-lsp-server = "^1.7.1"
autopep8 = "^2.0.1"
pyflakes = "^3.0.1"
yapf = "^0.32.0"
whatthepatch = "^1.0.4"
mypy = "^1.0.0"
icecream = "^2.1.3" icecream = "^2.1.3"
[tool.poetry.group.linters.dependencies]
autopep8 = "^2.0.1"
black = "^22.10.0"
mccabe = "^0.7.0"
mypy = "^1.0.0"
pydocstyle = "^6.2.2"
pyflakes = "^3.0.1"
rope = "^1.3.0"
ruff = "^0.2.1"
types-aiofiles = "^22.1.0.2"
types-sqlalchemy-utils = "^1.0.1" types-sqlalchemy-utils = "^1.0.1"
types-pyyaml = "^6.0.12.9" types-pyyaml = "^6.0.12.9"
types-tqdm = "^4.65.0.1" types-tqdm = "^4.65.0.1"
whatthepatch = "^1.0.4"
yapf = "^0.32.0"
sqlalchemy = "^2.0.26"
[tool.mypy] [tool.mypy]
plugins = "sqlalchemy.ext.mypy.plugin" plugins = "sqlalchemy.ext.mypy.plugin"
exclude = ['docker', 'docs']
strict = true
[tool.black] [tool.black]
target-version = ['py311'] target-version = ['py311']