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