Yes, Hydra can reproduce this build failure.
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-metadata-check-hook.sh
Using pythonMetadataCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
unpacking source archive /nix/store/z47051iwh297v5l3587844qsyxh3ng63-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/tests/test_ruff_lint.py"
Running phase: patchPhase
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
no configure script, doing nothing
Running phase: buildPhase
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
/nix/store/fkfl68z8s63y73y66398j7jrzvqdsddp-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:8ing: `project.license` as a TOML table is deprecated
!!
********************************************************************************
Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options av0).
By 2027-Feb-18, you need to update your project and remove deprecated calls
or your builds will no longer be supported.
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
!!
corresp(dist, value, root_dir)
running egg_info
creating python_lsp_ruff.egg-info
writing python_lsp_ruff.egg-info/PKG-INFO
writing dependency_links to python_lsp_ruff.egg-info/dependency_links.txt
writing entry points to python_lsp_ruff.egg-info/entry_points.txt
writing requirements to python_lsp_ruff.egg-info/requires.txt
writing top-level names to python_lsp_ruff.egg-info/top_level.txt
writing manifest file 'python_lsp_ruff.egg-info/SOURCES.txt'
reading manifest file 'python_lsp_ruff.egg-info/SOURCES.txt'
adding license file 'LICENSE'
writing manifest file 'python_lsp_ruff.egg-info/SOURCES.txt'
* Building wheel...
/nix/store/fkfl68z8s63y73y66398j7jrzvqdsddp-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:8ing: `project.license` as a TOML table is deprecated
!!
********************************************************************************
Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options av0).
By 2027-Feb-18, you need to update your project and remove deprecated calls
or your builds will no longer be supported.
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
!!
corresp(dist, value, root_dir)
running bdist_wheel
running build
running build_py
creating build/lib/pylsp_ruff
copying pylsp_ruff/settings.py -> build/lib/pylsp_ruff
copying pylsp_ruff/plugin.py -> build/lib/pylsp_ruff
copying pylsp_ruff/__init__.py -> build/lib/pylsp_ruff
copying pylsp_ruff/ruff.py -> build/lib/pylsp_ruff
running egg_info
writing python_lsp_ruff.egg-info/PKG-INFO
writing dependency_links to python_lsp_ruff.egg-info/dependency_links.txt
writing entry points to python_lsp_ruff.egg-info/entry_points.txt
writing requirements to python_lsp_ruff.egg-info/requires.txt
writing top-level names to python_lsp_ruff.egg-info/top_level.txt
reading manifest file 'python_lsp_ruff.egg-info/SOURCES.txt'
adding license file 'LICENSE'
writing manifest file 'python_lsp_ruff.egg-info/SOURCES.txt'
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/pylsp_ruff
copying build/lib/pylsp_ruff/settings.py -> build/bdist.linux-x86_64/wheel/./pylsp_ruff
copying build/lib/pylsp_ruff/__init__.py -> build/bdist.linux-x86_64/wheel/./pylsp_ruff
copying build/lib/pylsp_ruff/plugin.py -> build/bdist.linux-x86_64/wheel/./pylsp_ruff
copying build/lib/pylsp_ruff/ruff.py -> build/bdist.linux-x86_64/wheel/./pylsp_ruff
running install_egg_info
Copying python_lsp_ruff.egg-info to build/bdist.linux-x86_64/wheel/./python_lsp_ruff-2.3.1-py3.14.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/python_lsp_ruff-2.3.1.dist-info/WHEEL
creating '/build/source/dist/.tmp-xoiahm3j/python_lsp_ruff-2.3.1-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'pylsp_ruff/__init__.py'
adding 'pylsp_ruff/plugin.py'
adding 'pylsp_ruff/ruff.py'
adding 'pylsp_ruff/settings.py'
adding 'python_lsp_ruff-2.3.1.dist-info/licenses/LICENSE'
adding 'python_lsp_ruff-2.3.1.dist-info/METADATA'
adding 'python_lsp_ruff-2.3.1.dist-info/WHEEL'
adding 'python_lsp_ruff-2.3.1.dist-info/entry_points.txt'
adding 'python_lsp_ruff-2.3.1.dist-info/top_level.txt'
adding 'python_lsp_ruff-2.3.1.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built python_lsp_ruff-2.3.1-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/python_lsp_ruff-2.3.1...OK
Repacking wheel as ./python_lsp_ruff-2.3.1-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for python_lsp_ruff-2.3.1-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
Executing pypaInstallPhase
Successfully installed python_lsp_ruff-2.3.1-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
shrinking RPATHs of ELF executables and libraries in /nix/store/q6cj947lzaihlk1j94qqfdvlhp3pqydn-python3.14-python-lsp-ruff-2.3.1
checking for references to /build/ in /nix/store/q6cj947lzaihlk1j94qqfdvlhp3pqydn-python3.14-python-lsp-ruff-2.3.1...
patching script interpreter paths in /nix/store/q6cj947lzaihlk1j94qqfdvlhp3pqydn-python3.14-python-lsp-ruff-2.3.1
stripping (with command strip and flags -S -p) in /nix/store/q6cj947lzaihlk1j94qqfdvlhp3pqydn-python3.14-python-lsp-ruff-2.3.1/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/5gwz8vpk4r3kbra97qibrwbz5bgv4svy-python3.14-python-lsp-ruff-2.3.1-dist
checking for references to /build/ in /nix/store/5gwz8vpk4r3kbra97qibrwbz5bgv4svy-python3.14-python-lsp-ruff-2.3.1-dist...
patching script interpreter paths in /nix/store/5gwz8vpk4r3kbra97qibrwbz5bgv4svy-python3.14-python-lsp-ruff-2.3.1-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
Running phase: pythonRemoveBinBytecodePhase
Running phase: pythonImportsCheckPhase
Executing pythonImportsCheckPhase
Running phase: pythonMetadataCheckPhase
Executing pythonMetadataCheckPhase
Running phase: pytestCheckPhase
Executing pytestCheckPhase
pytest flags: -m pytest
============================= test session starts ==============================
platform linux -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0
rootdir: /build/source
configfile: pyproject.toml
collected 14 items
tests/test_code_actions.py .... [ 28%]
tests/test_ruff_format.py ... [ 50%]
tests/test_ruff_lint.py .....FF [100%]
=================================== FAILURES ===================================
______________________________ test_ruff_settings ______________________________
workspace = <pylsp.workspace.Workspace object at 0x7ffff48c2eb0>
def test_ruff_settings(workspace):
config_str = r"""[tool.ruff]
ignore = ["F841"]
exclude = [
"blah/__init__.py",
"file_2.py"
]
extend-select = ["D"]
[tool.ruff.per-file-ignores]
"test_something.py" = ["F401"]
"""
doc_str = r"""
print('hi')
import os
def f():
a = 2
"""
doc_uri = uris.from_fs_path(os.path.join("/tmp/", "__init__.py"))
workspace.put_document(doc_uri, doc_str)
ruff_settings = get_ruff_settings(
workspace, workspace.get_document(doc_uri), config_str
)
# Check that user config is ignored
empty_keys = [
"config",
"line_length",
"exclude",
"select",
"ignore",
"per_file_ignores",
]
for k in empty_keys:
assert getattr(ruff_settings, k) is None
with patch("pylsp_ruff.plugin.Popen") as popen_mock:
mock_instance = popen_mock.return_value
mock_instance.communicate.return_value = [bytes(), bytes()]
doc = workspace.get_document(doc_uri)
diags = ruff_lint.pylsp_lint(workspace, doc)
call_args = popen_mock.call_args[0][0]
assert call_args == [
"/nix/store/zx9c4rmbf463w2nc4xxynaxcqihl58yi-python3.14-ruff-0.16.1/bin/ruff",
"check",
"--quiet",
"--exit-zero",
"--output-format=json",
"--extension=ipynb:python",
"--no-fix",
"--force-exclude",
f"--stdin-filename={os.path.join("/tmp/", '__init__.py')}",
"--",
"-",
]
workspace._config.update(
{
"plugins": {
"ruff": {
"extendIgnore": ["D104"],
"severities": {"E402": "E", "D": "I", "D1": "H"},
}
}
}
)
diags = ruff_lint.pylsp_lint(workspace, doc)
_list = []
for diag in diags:
_list.append(diag["code"])
# Assert that ignore, extend-ignore and extend-select is working as intended
> assert "E402" in _list
E AssertionError: assert 'E402' in ['I001', 'F401', 'D103']
tests/test_ruff_lint.py:240: AssertionError
------------------------------ Captured log call -------------------------------
ERROR pylsp_ruff.plugin:plugin.py:571 Ruff returned <MagicMock name='Popen().returncode' id='140737295854832'> != 0
_____________________________ test_notebook_input ______________________________
workspace = <pylsp.workspace.Workspace object at 0x7ffff48c33f0>
def test_notebook_input(workspace):
doc_str = r"""
print('hi')
import os
def f():
a = 2
"""
# attribute the python code to a notebook file name per jupyterlab-lsp
doc_uri = uris.from_fs_path(os.path.join("/tmp/", "Untitled.ipynb"))
workspace.put_document(doc_uri, doc_str)
doc = workspace.get_document(doc_uri)
diags = ruff_lint.pylsp_lint(workspace, doc)
diag_codes = [diag["code"] for diag in diags]
assert "invalid-syntax" not in diag_codes
> assert "E402" in diag_codes
E AssertionError: assert 'E402' in ['D100', 'I001', 'F401', 'D103']
tests/test_ruff_lint.py:294: AssertionError
=========================== short test summary info ============================
FAILED tests/test_ruff_lint.py::test_ruff_settings - AssertionError: assert 'E402' in ['I001', 'F401', 'D103']
FAILED tests/test_ruff_lint.py::test_notebook_input - AssertionError: assert 'E402' in ['D100', 'I001', 'F401', 'D103']
========================= 2 failed, 12 passed in 1.38s =========================
Disabling the two offending tests helps, not sure if they are of any significance
Nixpkgs version
Steps to reproduce
nix build -vL nixpkgs\#python314Packages.python-lsp-ruffCan Hydra reproduce this build failure?
Yes, Hydra can reproduce this build failure.
Link to Hydra build job
https://hydra.nixos.org/build/340342944
Relevant log output
Additional context
Disabling the two offending tests helps, not sure if they are of any significance
System metadata
"x86_64-linux"Linux 6.18.41, NixOS, 26.11 (Zokor), 26.11.20260801.148bab9yesyesnix-env (Nix) 2.34.8/nix/store/j3wl46dgzlyr8bhqh0k24any86x0wn1j-sourceNotify maintainers
@linsui
Note for maintainers: Please tag this issue in your pull request description. (i.e.
Resolves #ISSUE.)I assert that this issue is relevant for Nixpkgs
Is this issue important to you?
Add a 👍 reaction to issues you find important.