diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 396de56d3..39f6edece 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -92,10 +92,10 @@ test:python: stage: test script: - cd python - - /venv/bin/black --check . + - /venv/bin/pytest --verbose . + - /venv/bin/black --extend-exclude=".*(\\.pyi|_pb2.py)$" --check . + - /venv/bin/flake8 --extend-exclude="*.pyi,*_pb2.py" . - /venv/bin/mypy . - - /venv/bin/flake8 . - - /venv/bin/pytest -v . image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} test:cppcheck: diff --git a/flake.nix b/flake.nix index 7eb7349c6..a1addcdf4 100644 --- a/flake.nix +++ b/flake.nix @@ -149,6 +149,12 @@ name = "full"; inputsFrom = with pkgs; [villas]; }; + + python = pkgs.mkShell { + inherit shellHook hardeningDisable packages; + name = "full"; + inputsFrom = with pkgs; [villas-python]; + }; } ); diff --git a/packaging/nix/python.nix b/packaging/nix/python.nix index bfaca0019..fcd3346cd 100644 --- a/packaging/nix/python.nix +++ b/packaging/nix/python.nix @@ -4,7 +4,6 @@ src, pkgs, python3Packages, - villas-minimal, }: python3Packages.buildPythonPackage { name = "villas-python"; @@ -24,11 +23,13 @@ python3Packages.buildPythonPackage { mypy pytest types-requests + types-protobuf + mypy-protobuf pytestCheckHook ]; postPatch = '' - ${pkgs.protobuf}/bin/protoc --proto_path ${src}/lib/formats --python_out=villas/node/ ${src}/lib/formats/villas.proto + ${pkgs.protobuf}/bin/protoc --proto_path ${src}/lib/formats --mypy_out=villas/node --python_out=villas/node/ ${src}/lib/formats/villas.proto ''; } diff --git a/python/.envrc b/python/.envrc index ec3bd5350..2be5cf24d 100644 --- a/python/.envrc +++ b/python/.envrc @@ -1,5 +1,5 @@ # SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University # SPDX-License-Identifier: Apache-2.0 -use flake .#villas-python +use flake ..#python watch_file ../flake.nix diff --git a/python/pyproject.toml b/python/pyproject.toml index 5a0f1cfa9..360221d0e 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -23,6 +23,7 @@ classifiers = [ dependencies = [ 'linuxfd==1.5', 'requests==2.31.0', + 'protobuf==4.24.4', ] optional-dependencies.dev = [ 'black==24.2.0', @@ -30,7 +31,7 @@ optional-dependencies.dev = [ 'mypy==1.8.0', 'pytest==8.0.0', 'types-requests==2.31.0.20240125', - 'protobuf==4.24.4', + 'types-protobuf==4.24.0.20240311', ] [project.urls] @@ -45,3 +46,10 @@ email = 'post@steffenvogel.de' [[project.authors]] name = 'Philipp Jungkamp' email = 'Philipp.Jungkamp@opal-rt.com' + +[[tool.mypy.overrides]] +module = ['google'] +ignore_missing_imports = true + +[tool.black] +extend-exclude = '''.*(\.pyi|_pb2.py)$'''