diff --git a/pkgs/development/python-modules/dns-lexicon/default.nix b/pkgs/development/python-modules/dns-lexicon/default.nix new file mode 100644 index 000000000000..bef030ca604d --- /dev/null +++ b/pkgs/development/python-modules/dns-lexicon/default.nix @@ -0,0 +1,84 @@ +{ buildPythonPackage +, fetchFromGitHub +, poetry-core +, beautifulsoup4 +, cryptography +, importlib-metadata +, pyyaml +, requests +, tldextract +, pytestCheckHook +, pytest-vcr +# Optional depedencies +, boto3 +, localzone +, softlayer +, zeep +, dnspython +, oci +, lib +}: + +buildPythonPackage rec { + pname = "dns_lexicon"; + version = "3.14.1"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "Analogj"; + repo = "lexicon"; + rev = "v${version}"; + hash = "sha256-flK2G9mdUWMUACQPo6TqYZ388EacIqkq//tCzUS+Eo8="; + }; + + nativeBuildInputs = [ poetry-core ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-vcr + ] ++ passthru.optional-dependencies.full; + + propagatedBuildInputs = [ + beautifulsoup4 + cryptography + importlib-metadata + pyyaml + requests + tldextract + ]; + + passthru.optional-dependencies = { + route53 = [ boto3 ]; + localzone = [ localzone ]; + softlayer = [ softlayer ]; + ddns = [ dnspython ]; + duckdns = [ dnspython ]; + oci = [ oci ]; + full = [ boto3 localzone softlayer zeep dnspython oci ]; + }; + + pytestFlagsArray = [ + "tests/" + ]; + + disabledTestPaths = [ + # Needs network access + "tests/providers/test_auto.py" + + # Needs network access (and an API token) + "tests/providers/test_namecheap.py" + ]; + + pythonImportsCheck = [ + "lexicon" + ]; + + meta = with lib; { + description = "Manipulate DNS records on various DNS providers in a standardized way"; + homepage = "https://github.com/AnalogJ/lexicon"; + changelog = "https://github.com/AnalogJ/lexicon/blob/v${version}/CHANGELOG.md"; + maintainers = with maintainers; [ aviallon ]; + license = with licenses; [ mit ]; + }; + +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 01cf514cba7c..38d2ee679078 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3124,6 +3124,8 @@ self: super: with self; { dnspython = callPackage ../development/python-modules/dnspython { }; + dns-lexicon = callPackage ../development/python-modules/dns-lexicon { }; + doc8 = callPackage ../development/python-modules/doc8 { }; docformatter = callPackage ../development/python-modules/docformatter { };