aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/python-modules/python-language-server
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/python-language-server')
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-language-server/default.nix65
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 ];
+ };
+}