diff --git a/pkgs/development/python-modules/apischema/default.nix b/pkgs/development/python-modules/apischema/default.nix new file mode 100644 index 000000000000..a60b97d1d951 --- /dev/null +++ b/pkgs/development/python-modules/apischema/default.nix @@ -0,0 +1,45 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, graphql-core +, pytest-asyncio +, pytestCheckHook +, pythonOlder +}: + +buildPythonPackage rec { + pname = "apischema"; + version = "0.18.0"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "wyfo"; + repo = "apischema"; + rev = "refs/tags/v${version}"; + hash = "sha256-DBFFCLi8cpASyGPNqZvYe3OTLSbNZ8QzaxjQkOiHxFc="; + }; + + passthru.optional-dependencies = { + graphql = [ + graphql-core + ]; + }; + + nativeCheckInputs = [ + pytest-asyncio + pytestCheckHook + ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies); + + pythonImportsCheck = [ + "apischema" + ]; + + meta = with lib; { + description = "JSON (de)serialization, GraphQL and JSON schema generation using typing"; + homepage = "https://github.com/wyfo/apischema"; + license = licenses.mit; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/pydrawise/default.nix b/pkgs/development/python-modules/pydrawise/default.nix new file mode 100644 index 000000000000..4adda6c53ccc --- /dev/null +++ b/pkgs/development/python-modules/pydrawise/default.nix @@ -0,0 +1,65 @@ +{ lib +, aiohttp +, aioresponses +, apischema +, buildPythonPackage +, fetchFromGitHub +, freezegun +, gql +, graphql-core +, pytest-asyncio +, pytestCheckHook +, pythonOlder +, requests +, setuptools +, setuptools-scm +}: + +buildPythonPackage rec { + pname = "pydrawise"; + version = "2023.8.0"; + format = "pyproject"; + + disabled = pythonOlder "3.10"; + + src = fetchFromGitHub { + owner = "dknowles2"; + repo = "pydrawise"; + rev = "refs/tags/${version}"; + hash = "sha256-cnQJ0enDgOB66rEZePmfTImFrPNMiXfggATM6hsL+ag="; + }; + + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + nativeBuildInputs = [ + setuptools + setuptools-scm + ]; + + propagatedBuildInputs = [ + aiohttp + apischema + gql + graphql-core + requests + ]; + + nativeCheckInputs = [ + aioresponses + freezegun + pytest-asyncio + pytestCheckHook + ]; + + pythonImportsCheck = [ + "pydrawise" + ]; + + meta = with lib; { + description = "Library for interacting with Hydrawise sprinkler controllers through the GraphQL API"; + homepage = "https://github.com/dknowles2/pydrawise"; + changelog = "https://github.com/dknowles2/pydrawise/releases/tag/${version}"; + license = licenses.asl20; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 230cc2f91681..6d4965a63fc2 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -1822,7 +1822,8 @@ pygti ]; "hydrawise" = ps: with ps; [ - ]; # missing inputs: pydrawise + pydrawise + ]; "hyperion" = ps: with ps; [ hyperion-py ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f36aeb1e0474..ed1951b06d49 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -580,6 +580,8 @@ self: super: with self; { apipkg = callPackage ../development/python-modules/apipkg { }; + apischema = callPackage ../development/python-modules/apischema { }; + apispec = callPackage ../development/python-modules/apispec { }; apispec-webframeworks = callPackage ../development/python-modules/apispec-webframeworks { }; @@ -8980,6 +8982,8 @@ self: super: with self; { inherit (pkgs) graphviz; }; + pydrawise = callPackage ../development/python-modules/pydrawise { }; + pydrive2 = callPackage ../development/python-modules/pydrive2 { }; pydroid-ipcam = callPackage ../development/python-modules/pydroid-ipcam { };