1{ lib
2, python3
3, fetchFromGitHub
4}:
5
6let
7 py = python3.override {
8 packageOverrides = self: super: {
9 # until https://github.com/ags-slc/localzone/issues/1 gets resolved
10 dnspython = super.dnspython.overridePythonAttrs(oldAttrs: rec {
11 pname = "dnspython";
12 version = "1.16.0";
13 # since name is defined from the previous derivation, need to override
14 # name explicity for correct version to show in drvName
15 name = "${pname}-${version}";
16
17 src = super.fetchPypi {
18 inherit pname version;
19 extension = "zip";
20 sha256 = "00cfamn97w2vhq3id87f10mjna8ag5yz5dw0cy5s0sa3ipiyii9n";
21 };
22 });
23
24 localzone = super.localzone.overridePythonAttrs(oldAttrs: rec {
25 meta = oldAttrs.meta // { broken = false; };
26 });
27 };
28 };
29in
30 with py.pkgs;
31
32buildPythonApplication rec {
33 pname = "lexicon";
34 version = "3.5.2";
35 format = "pyproject";
36
37 src = fetchFromGitHub {
38 owner = "AnalogJ";
39 repo = pname;
40 rev = "v${version}";
41 sha256 = "1jsc2ybbf3mbvgzkgliria494dpj23mgqnw2lh43cnd9rgsjvzn3";
42 };
43
44 nativeBuildInputs = [
45 poetry
46 ];
47
48 propagatedBuildInputs = [
49 beautifulsoup4
50 boto3
51 cryptography
52 dnspython
53 future
54 localzone
55 pynamecheap
56 pyyaml
57 requests
58 softlayer
59 tldextract
60 transip
61 xmltodict
62 zeep
63 ];
64
65 checkInputs = [
66 mock
67 pytest
68 pytest-cov
69 pytest-xdist
70 vcrpy
71 ];
72
73 checkPhase = ''
74 pytest --ignore=lexicon/tests/providers/test_auto.py
75 '';
76
77 meta = with lib; {
78 description = "Manipulate DNS records on various DNS providers in a standardized way";
79 homepage = "https://github.com/AnalogJ/lexicon";
80 maintainers = with maintainers; [ flyfloh ];
81 license = licenses.mit;
82 };
83}