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