1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 pytestCheckHook,
7}:
8
9buildPythonPackage rec {
10 pname = "pydsdl";
11 version = "1.22.2";
12 pyproject = true;
13
14 src = fetchFromGitHub {
15 owner = "OpenCyphal";
16 repo = "pydsdl";
17 tag = version;
18 hash = "sha256-JQE7e735arclu7avLu0Nf/ecULd0wuPmxyO3DtDsxLs=";
19 };
20
21 build-system = [ setuptools ];
22
23 # allow for writable directory for darwin
24 preBuild = ''
25 export HOME=$TMPDIR
26 '';
27
28 pythonImportsCheck = [ "pydsdl" ];
29
30 nativeCheckInputs = [ pytestCheckHook ];
31
32 enabledTestPaths = [ "pydsdl/_test.py" ];
33
34 meta = with lib; {
35 description = "Library to process Cyphal DSDL";
36 longDescription = ''
37 PyDSDL is a Cyphal DSDL compiler front-end implemented in Python. It accepts
38 a DSDL namespace at the input and produces a well-annotated abstract syntax
39 tree (AST) at the output, evaluating all constant expressions in the process.
40 All DSDL features defined in the Cyphal Specification are supported. The
41 library should, in theory, work on any platform and with any Python
42 implementation.
43 '';
44 homepage = "https://pydsdl.readthedocs.io/";
45 license = licenses.mit;
46 maintainers = with maintainers; [ wucke13 ];
47 };
48}