lsproxy SDK
A Python SDK for interacting with the lsproxy container, providing language-server protocol functionality for code analysis across multiple languages.
Features
- Symbol definition lookup
- Reference lookup across files
- Support for analyzing Python, TypeScript/JavaScript, and Rust
- Pydantic models for type safety
Try it out!
If you just want to get a feel for lsproxy try out the tutorial at demo.lsproxy.dev
Installation
pip install lsproxy-sdk
Usage
You can use lsproxy either by running a local server or using Modal cloud infrastructure.
Using Modal
First, install the Modal dependencies:
pip install 'lsproxy-sdk[modal]'
Then use the SDK:
from lsproxy import Lsproxy
# Synchronous usage
lsp = Lsproxy.initialize_with_modal(
repo_url="https://github.com/username/repo",
git_token="your-github-token", # Optional, for private repos
)
# Async usage
from lsproxy import AsyncLsproxy
import asyncio
async def main():
lsp = await AsyncLsproxy.initialize_with_modal(
repo_url="https://github.com/username/repo"
)
try:
files = await lsp.list_files()
finally:
await lsp.close()
asyncio.run(main())
Using Local Server
- Start the LSProxy container:
docker run --rm -d -p 4444:4444 -v "/path/to/your/code:/mnt/workspace" -e USE_AUTH=false --name lsproxy agenticlabs/lsproxy:0.3.5
- Use the SDK:
# Synchronous usage
from lsproxy import Lsproxy
lsp = Lsproxy()
# Async usage
from lsproxy import AsyncLsproxy
import asyncio
async def main():
async with AsyncLsproxy() as lsp:
# Use async methods
files = await lsp.list_files()
# Run the async code
asyncio.run(main())
List all files in the workspace
lsp.list_files()
Get symbols in a file
lsp.definitions_in_file(path="path/to/file.py")
Get references to a symbol
# Find all references to a symbol at a specific position
references = lsp.find_references(
GetReferencesRequest(
identifier_position=FilePosition(
file_path="path/to/file.py",
line=10,
character=15
),
include_code_context_lines=2, # Show 2 lines of context around each reference
include_declaration=True # Include the original declaration
)
)
# Print found references
for ref in references.references:
print(f"Reference in {ref.file_path} at line {ref.range.start.line}")
if ref.code_context:
print(ref.code_context)
Metadata
Release files for lsproxy-sdk 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lsproxy_sdk-0.3.1.tar.gz | 10.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lsproxy_sdk-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.7 kB
Release files / lsproxy_sdk-0.3.1.tar.gz
| Download URL | lsproxy_sdk-0.3.1.tar.gz |
|---|---|
| Size | 10.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ae6fb01e1891455a8cded009739245bcbdf8129fcb063e8c510b710ee18cf7e5
|
|
BLAKE2b-256 checksum How to use checksums |
7a55b47720c5f28d854ba329bcc826cd7403afbb1465ab2048f3ef839f63a814
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|
Release files / lsproxy_sdk-0.3.1-py3-none-any.whl
| Download URL | lsproxy_sdk-0.3.1-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
56962e37a14773f0db55fde70a26aa526b80faa1ef25554f98446c405ba055f4
|
|
BLAKE2b-256 checksum How to use checksums |
9cca37faf59b4d7a09766e9f4c4c1f942460489aa50bc069e1cff56b18d983e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|