diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/python-language-server')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/python-language-server/default.nix | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix new file mode 100644 index 00000000000..4bf482b9ae4 --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix @@ -0,0 +1,65 @@ +{ stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder, isPy27 +, backports_functools_lru_cache, configparser, futures, future, jedi, pluggy, python-jsonrpc-server +, pytest, mock, pytestcov, coverage, setuptools +, # Allow building a limited set of providers, e.g. ["pycodestyle"]. + providers ? ["*"] + # The following packages are optional and + # can be overwritten with null as your liking. +, autopep8 ? null +, mccabe ? null +, pycodestyle ? null +, pydocstyle ? null +, pyflakes ? null +, pylint ? null +, rope ? null +, yapf ? null +}: + +let + withProvider = p: builtins.elem "*" providers || builtins.elem p providers; +in + +buildPythonPackage rec { + pname = "python-language-server"; + version = "0.28.3"; + + src = fetchFromGitHub { + owner = "palantir"; + repo = "python-language-server"; + rev = version; + sha256 = "16d8i43r75h0cijggkkmmpnycn29wlbjp63mgg3s4nbrxfa96x2k"; + }; + + # The tests require all the providers, disable otherwise. + doCheck = providers == ["*"]; + + checkInputs = [ + pytest mock pytestcov coverage + # rope is technically a dependency, but we don't add it by default since we + # already have jedi, which is the preferred option + rope + ]; + + checkPhase = '' + HOME=$TEMPDIR pytest + ''; + + propagatedBuildInputs = [ setuptools jedi pluggy future python-jsonrpc-server ] + ++ stdenv.lib.optional (withProvider "autopep8") autopep8 + ++ stdenv.lib.optional (withProvider "mccabe") mccabe + ++ stdenv.lib.optional (withProvider "pycodestyle") pycodestyle + ++ stdenv.lib.optional (withProvider "pydocstyle") pydocstyle + ++ stdenv.lib.optional (withProvider "pyflakes") pyflakes + ++ stdenv.lib.optional (withProvider "pylint") pylint + ++ stdenv.lib.optional (withProvider "rope") rope + ++ stdenv.lib.optional (withProvider "yapf") yapf + ++ stdenv.lib.optional isPy27 configparser + ++ stdenv.lib.optionals (pythonOlder "3.2") [ backports_functools_lru_cache futures ]; + + meta = with stdenv.lib; { + homepage = https://github.com/palantir/python-language-server; + description = "An implementation of the Language Server Protocol for Python"; + license = licenses.mit; + maintainers = [ maintainers.mic92 ]; + }; +} |