1{
2 lib,
3 babel,
4 buildPythonPackage,
5 django,
6 djangorestframework,
7 fetchFromGitHub,
8 gettext,
9 phonenumbers,
10 phonenumberslite,
11 python,
12 setuptools-scm,
13}:
14
15buildPythonPackage rec {
16 pname = "django-phonenumber-field";
17 version = "8.1.0";
18 pyproject = true;
19
20 src = fetchFromGitHub {
21 owner = "stefanfoulis";
22 repo = "django-phonenumber-field";
23 tag = version;
24 hash = "sha256-KRi2rUx88NYoQhRChmNABP8KalMbf4HhWC8Wwnc/xB4=";
25 };
26
27 build-system = [ setuptools-scm ];
28
29 # Upstream doesn't put phonenumbers in dependencies but the package doesn't
30 # make sense without either of the two optional dependencies. Since, in
31 # Nixpkgs, phonenumberslite depends on phonenumbers, add the latter
32 # unconditionally.
33 dependencies = [ django ] ++ optional-dependencies.phonenumbers;
34
35 nativeCheckInputs = [
36 babel
37 djangorestframework
38 ];
39
40 nativeBuildInputs = [ gettext ];
41
42 pythonImportsCheck = [ "phonenumber_field" ];
43
44 checkPhase = ''
45 ${python.interpreter} -m django test --settings tests.settings
46 '';
47
48 preBuild = ''
49 ${python.interpreter} -m django compilemessages
50 '';
51
52 optional-dependencies = {
53 phonenumbers = [ phonenumbers ];
54 phonenumberslite = [ phonenumberslite ];
55 };
56
57 meta = with lib; {
58 description = "Django model and form field for normalised phone numbers using python-phonenumbers";
59 homepage = "https://github.com/stefanfoulis/django-phonenumber-field/";
60 changelog = "https://github.com/stefanfoulis/django-phonenumber-field/releases/tag/${src.tag}";
61 license = licenses.mit;
62 maintainers = with maintainers; [ sephi ];
63 };
64}