evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / development / python-modules / betterproto / default.nix
blobab36e1dda562871fc502dffe33dc1f6411492a60
2   buildPythonPackage,
3   fetchFromGitHub,
4   lib,
5   pythonOlder,
6   poetry-core,
7   grpclib,
8   python-dateutil,
9   black,
10   jinja2,
11   isort,
12   python,
13   pydantic,
14   pytest7CheckHook,
15   pytest-asyncio,
16   pytest-mock,
17   typing-extensions,
18   tomlkit,
19   grpcio-tools,
22 buildPythonPackage rec {
23   pname = "betterproto";
24   version = "2.0.0b6";
25   pyproject = true;
27   disabled = pythonOlder "3.9";
29   src = fetchFromGitHub {
30     owner = "danielgtaylor";
31     repo = "python-betterproto";
32     rev = "refs/tags/v.${version}";
33     hash = "sha256-ZuVq4WERXsRFUPNNTNp/eisWX1MyI7UtwqEI8X93wYI=";
34   };
36   build-system = [ poetry-core ];
38   dependencies = [
39     grpclib
40     python-dateutil
41     typing-extensions
42   ];
44   optional-dependencies.compiler = [
45     black
46     jinja2
47     isort
48   ];
50   nativeCheckInputs = [
51     grpcio-tools
52     pydantic
53     pytest-asyncio
54     pytest-mock
55     pytest7CheckHook
56     tomlkit
57   ] ++ lib.flatten (builtins.attrValues optional-dependencies);
59   pythonImportsCheck = [ "betterproto" ];
61   # The tests require the generation of code before execution. This requires
62   # the protoc-gen-python_betterproto script from the package to be on PATH.
63   preCheck = ''
64     (($(ulimit -n) < 1024)) && ulimit -n 1024
65     export PATH=$PATH:$out/bin
66     patchShebangs src/betterproto/plugin/main.py
67     ${python.interpreter} -m tests.generate
68   '';
70   disabledTestPaths = [
71     # https://github.com/danielgtaylor/python-betterproto/issues/530
72     "tests/inputs/oneof/test_oneof.py"
73   ];
75   disabledTests = [
76     "test_pydantic_no_value"
77     # Test is flaky
78     "test_binary_compatibility"
79   ];
81   meta = with lib; {
82     description = "Code generator & library for Protobuf 3 and async gRPC";
83     mainProgram = "protoc-gen-python_betterproto";
84     longDescription = ''
85       This project aims to provide an improved experience when using Protobuf /
86       gRPC in a modern Python environment by making use of modern language
87       features and generating readable, understandable, idiomatic Python code.
88     '';
89     homepage = "https://github.com/danielgtaylor/python-betterproto";
90     changelog = "https://github.com/danielgtaylor/python-betterproto/blob/v.${version}/CHANGELOG.md";
91     license = licenses.mit;
92     maintainers = with maintainers; [ nikstur ];
93   };