1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, setuptools
6, typing-extensions
7, orjson
8, msgpack
9, pyyaml
10, tomli-w
11, tomli
12, pytestCheckHook
13, ciso8601
14, pendulum
15, pytest-mock
16}:
17
18buildPythonPackage rec {
19 pname = "mashumaro";
20 version = "3.10";
21 format = "pyproject";
22 disabled = pythonOlder "3.7";
23
24 src = fetchFromGitHub {
25 owner = "Fatal1ty";
26 repo = pname;
27 rev = "refs/tags/v${version}";
28 hash = "sha256-PvMEwIxurDGwYMCmNFThedxDY4vwATHYwMlXkucNuwM=";
29 };
30
31 nativeBuildInputs = [
32 setuptools
33 ];
34
35 propagatedBuildInputs = [
36 typing-extensions
37 ];
38
39 passthru.optional-dependencies = {
40 orjson = [ orjson ];
41 msgpack = [ msgpack ];
42 yaml = [ pyyaml ];
43 toml = [ tomli-w ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
44 };
45
46 nativeCheckInputs = [
47 ciso8601
48 pendulum
49 pytest-mock
50 pytestCheckHook
51 ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
52
53 pythonImportsCheck = [
54 "mashumaro"
55 ];
56
57 meta = with lib; {
58 description = "Fast and well tested serialization library on top of dataclasses";
59 homepage = "https://github.com/Fatal1ty/mashumaro";
60 changelog = "https://github.com/Fatal1ty/mashumaro/releases/tag/v${version}";
61 license = licenses.asl20;
62 maintainers = with maintainers; [ tjni ];
63 };
64}