diff --git a/pkgs/development/python-modules/pydantic/default.nix b/pkgs/development/python-modules/pydantic/default.nix new file mode 100644 index 00000000000..9b713827199 --- /dev/null +++ b/pkgs/development/python-modules/pydantic/default.nix @@ -0,0 +1,51 @@ +{ lib +, buildPythonPackage +, fetchPypi +, ujson +, email_validator +, typing-extensions +, python +, isPy3k +}: + +buildPythonPackage rec { + pname = "pydantic"; + version = "0.31"; + disabled = !isPy3k; + + src = fetchPypi { + inherit pname version; + sha256 = "0x9xc5hpyrlf05dc4bx9f7v51fahxcahkvh0ij8ibay15nwli53d"; + }; + + propagatedBuildInputs = [ + ujson + email_validator + typing-extensions + ]; + + checkPhase = '' + ${python.interpreter} -c """ +from datetime import datetime +from typing import List +from pydantic import BaseModel + +class User(BaseModel): + id: int + name = 'John Doe' + signup_ts: datetime = None + friends: List[int] = [] + +external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']} +user = User(**external_data) +assert user.id is "123" +""" + ''; + + meta = with lib; { + homepage = "https://github.com/samuelcolvin/pydantic"; + description = "Data validation and settings management using Python type hinting"; + license = licenses.mit; + maintainers = with maintainers; [ wd15 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 941b203b59d..749d2882ff7 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6043,6 +6043,8 @@ in { uvicorn = callPackage ../development/python-modules/uvicorn { }; + pydantic = callPackage ../development/python-modules/pydantic { }; + }); in fix' (extends overrides packages)