1{ lib
2, buildPythonPackage
3, fetchPypi
4, ujson
5, email_validator
6, typing-extensions
7, python
8, isPy3k
9}:
10
11buildPythonPackage rec {
12 pname = "pydantic";
13 version = "0.31";
14 disabled = !isPy3k;
15
16 src = fetchPypi {
17 inherit pname version;
18 sha256 = "0x9xc5hpyrlf05dc4bx9f7v51fahxcahkvh0ij8ibay15nwli53d";
19 };
20
21 propagatedBuildInputs = [
22 ujson
23 email_validator
24 typing-extensions
25 ];
26
27 checkPhase = ''
28 ${python.interpreter} -c """
29from datetime import datetime
30from typing import List
31from pydantic import BaseModel
32
33class User(BaseModel):
34 id: int
35 name = 'John Doe'
36 signup_ts: datetime = None
37 friends: List[int] = []
38
39external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
40user = User(**external_data)
41assert user.id is "123"
42"""
43 '';
44
45 meta = with lib; {
46 homepage = "https://github.com/samuelcolvin/pydantic";
47 description = "Data validation and settings management using Python type hinting";
48 license = licenses.mit;
49 maintainers = with maintainers; [ wd15 ];
50 };
51}