My personal project and infrastructure archive
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nomicon/pkgs/development/python-modules/python-lsp-server/default.nix

119 lines
3.0 KiB

{ lib
, autopep8
, buildPythonPackage
, fetchFromGitHub
, flake8
, flaky
, jedi
, matplotlib
, mccabe
, numpy
, pandas
, pluggy
, pycodestyle
, pydocstyle
, pyflakes
, pylint
, pyqt5
, pytestCheckHook
, python-lsp-jsonrpc
, pythonOlder
, rope
, setuptools
, setuptools-scm
, stdenv
, ujson
, yapf
, withAutopep8 ? true
, withFlake8 ? true
, withMccabe ? true
, withPycodestyle ? true
, withPydocstyle ? true
, withPyflakes ? true
, withPylint ? true
, withRope ? true
, withYapf ? true
}:
buildPythonPackage rec {
pname = "python-lsp-server";
version = "1.4.1";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "python-lsp";
repo = pname;
rev = "v${version}";
sha256 = "sha256-rEfjxHw2NIVIa8RepxLPiXkRFhcGWLzm6w43n60zkFE=";
};
postPatch = ''
substituteInPlace setup.cfg \
--replace "--cov-report html --cov-report term --junitxml=pytest.xml" "" \
--replace "--cov pylsp --cov test" "" \
--replace "mccabe>=0.6.0,<0.7.0" "mccabe"
'';
preBuild = ''
export SETUPTOOLS_SCM_PRETEND_VERSION=${version}
'';
propagatedBuildInputs = [
jedi
pluggy
python-lsp-jsonrpc
setuptools
setuptools-scm
ujson
] ++ lib.optional withAutopep8 autopep8
++ lib.optional withFlake8 flake8
++ lib.optional withMccabe mccabe
++ lib.optional withPycodestyle pycodestyle
++ lib.optional withPydocstyle pydocstyle
++ lib.optional withPyflakes pyflakes
++ lib.optional withPylint pylint
++ lib.optional withRope rope
++ lib.optional withYapf yapf;
checkInputs = [
flaky
matplotlib
numpy
pandas
pytestCheckHook
]
# pyqt5 is broken on aarch64-darwin
++ lib.optionals (!stdenv.isDarwin || !stdenv.isAarch64) [ pyqt5 ];
disabledTests = lib.optional (!withPycodestyle) "test_workspace_loads_pycodestyle_config"
# pyqt5 is broken on aarch64-darwin
++ lib.optional (stdenv.isDarwin && stdenv.isAarch64) "test_pyqt_completion";
disabledTestPaths = lib.optional (!withAutopep8) "test/plugins/test_autopep8_format.py"
++ lib.optional (!withRope) "test/plugins/test_completion.py"
++ lib.optional (!withFlake8) "test/plugins/test_flake8_lint.py"
++ lib.optional (!withMccabe) "test/plugins/test_mccabe_lint.py"
++ lib.optional (!withPycodestyle) "test/plugins/test_pycodestyle_lint.py"
++ lib.optional (!withPydocstyle) "test/plugins/test_pydocstyle_lint.py"
++ lib.optional (!withPyflakes) "test/plugins/test_pyflakes_lint.py"
++ lib.optional (!withPylint) "test/plugins/test_pylint_lint.py"
++ lib.optional (!withRope) "test/plugins/test_rope_rename.py"
++ lib.optional (!withYapf) "test/plugins/test_yapf_format.py";
preCheck = ''
export HOME=$(mktemp -d);
'';
pythonImportsCheck = [
"pylsp"
];
meta = with lib; {
description = "Python implementation of the Language Server Protocol";
homepage = "https://github.com/python-lsp/python-lsp-server";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}