1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
{ lib
, stdenv
, buildPythonPackage
, autoflake
, cython
, devtools
, email-validator
, fetchFromGitHub
, fetchpatch
, pytest-mock
, pytestCheckHook
, python-dotenv
, pythonAtLeast
, pythonOlder
, pyupgrade
, typing-extensions
# dependencies for building documentation.
# docs fail to build in Darwin sandbox: https://github.com/samuelcolvin/pydantic/issues/4245
, withDocs ? (stdenv.hostPlatform == stdenv.buildPlatform && !stdenv.isDarwin && pythonAtLeast "3.10")
, ansi2html
, markdown-include
, mike
, mkdocs
, mkdocs-exclude
, mkdocs-material
, mdx-truly-sane-lists
, sqlalchemy
, ujson
, orjson
, hypothesis
, libxcrypt
}:
buildPythonPackage rec {
pname = "pydantic";
version = "1.10.12";
format = "setuptools";
outputs = [
"out"
] ++ lib.optionals withDocs [
"doc"
];
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "pydantic";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-3XnbPGU90wLCPEryFAOky6Iy73Dvgzzh+GbOKW8hZ4U=";
};
postPatch = ''
sed -i '/flake8/ d' Makefile
'';
buildInputs = lib.optionals (pythonOlder "3.9") [
libxcrypt
];
nativeBuildInputs = [
cython
] ++ lib.optionals withDocs [
# dependencies for building documentation
autoflake
ansi2html
markdown-include
mdx-truly-sane-lists
mike
mkdocs
mkdocs-exclude
mkdocs-material
sqlalchemy
ujson
orjson
hypothesis
];
propagatedBuildInputs = [
devtools
pyupgrade
typing-extensions
];
passthru.optional-dependencies = {
dotenv = [
python-dotenv
];
email = [
email-validator
];
};
nativeCheckInputs = [
pytest-mock
pytestCheckHook
] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
pytestFlagsArray = [
# https://github.com/pydantic/pydantic/issues/4817
"-W" "ignore::pytest.PytestReturnNotNoneWarning"
];
preCheck = ''
export HOME=$(mktemp -d)
'';
# Must include current directory into PYTHONPATH, since documentation
# building process expects "import pydantic" to work.
preBuild = lib.optionalString withDocs ''
PYTHONPATH=$PWD:$PYTHONPATH make docs
'';
# Layout documentation in same way as "sphinxHook" does.
postInstall = lib.optionalString withDocs ''
mkdir -p $out/share/doc/$name
mv ./site $out/share/doc/$name/html
'';
enableParallelBuilding = true;
pythonImportsCheck = [ "pydantic" ];
meta = with lib; {
description = "Data validation and settings management using Python type hinting";
homepage = "https://github.com/pydantic/pydantic";
changelog = "https://github.com/pydantic/pydantic/blob/v${version}/HISTORY.md";
license = licenses.mit;
maintainers = with maintainers; [ wd15 ];
};
}
|