1{
2 lib,
3 buildPythonPackage,
4 fastjsonschema,
5 fetchFromGitHub,
6 future-typing,
7 inflection,
8 orjson,
9 pandas,
10 pendulum,
11 poetry-core,
12 pydantic,
13 pytestCheckHook,
14 pythonOlder,
15 pythonRelaxDepsHook,
16 sqlalchemy,
17 ujson,
18}:
19
20buildPythonPackage rec {
21 pname = "typical";
22 version = "2.8.1";
23 pyproject = true;
24
25 disabled = pythonOlder "3.10";
26
27 src = fetchFromGitHub {
28 owner = "seandstewart";
29 repo = "typical";
30 rev = "refs/tags/v${version}";
31 hash = "sha256-2t9Jhdy9NmYBNzdtjjgUnoK2RDEUsAvDkYMcBRzEcmI=";
32 };
33
34 pythonRelaxDeps = [ "pendulum" ];
35
36 build-system = [ poetry-core ];
37
38 nativeBuildInputs = [ pythonRelaxDepsHook ];
39
40 dependencies = [
41 fastjsonschema
42 future-typing
43 inflection
44 orjson
45 pendulum
46 ujson
47 ];
48
49 nativeCheckInputs = [
50 pandas
51 pydantic
52 pytestCheckHook
53 sqlalchemy
54 ];
55
56 disabledTests = [
57 # ConstraintValueError: Given value <{'key...
58 "test_tagged_union_validate"
59 # TypeError: 'NoneType' object cannot be interpreted as an integer
60 "test_ujson"
61 # Failed: DID NOT RAISE <class 'ValueError'>
62 "test_invalid_path"
63 # AssertionError
64 "test_primitive"
65 "test_tojson"
66 "test_transmute_simple"
67 ];
68
69 disabledTestPaths = [
70 # We don't care about benchmarks
71 "benchmark/"
72 # Tests are failing on Hydra
73 "tests/mypy/test_mypy.py"
74 ];
75
76 pythonImportsCheck = [ "typic" ];
77
78 meta = with lib; {
79 description = "Python library for runtime analysis, inference and validation of Python types";
80 homepage = "https://python-typical.org/";
81 changelog = "https://github.com/seandstewart/typical/releases/tag/v${version}";
82 license = licenses.mit;
83 maintainers = with maintainers; [ kfollesdal ];
84 };
85}