client-py/venv/lib/python3.12/site-packages/pylsp/plugins/references.py
2026-05-02 13:34:53 +05:00

33 lines
1 KiB
Python

# Copyright 2017-2020 Palantir Technologies, Inc.
# Copyright 2021- Python Language Server Contributors.
import logging
from pylsp import _utils, hookimpl, uris
log = logging.getLogger(__name__)
@hookimpl
def pylsp_references(document, position, exclude_declaration):
code_position = _utils.position_to_jedi_linecolumn(document, position)
usages = document.jedi_script().get_references(**code_position)
if exclude_declaration:
# Filter out if the usage is the actual declaration of the thing
usages = [d for d in usages if not d.is_definition()]
# Filter out builtin modules
return [
{
"uri": uris.uri_with(document.uri, path=str(d.module_path))
if d.module_path
else document.uri,
"range": {
"start": {"line": d.line - 1, "character": d.column},
"end": {"line": d.line - 1, "character": d.column + len(d.name)},
},
}
for d in usages
if not d.in_builtin_module()
]