Changelog¶
All notable changes to this project will be documented in this file.
[2.0.0] - 2025-10-17¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0
Bug Fixes¶
Handle a special case of BrokenPipeError exception (#573)
Missing inline completion provider server capability
Documentation¶
Switch to furo theme
Add how-to guide on running a server
Add reference on pygls’ built in features
Add (incomplete) guide on supporting notebooks
Move guide on custom converters to the library
Move guide on pygls-playground to the library
Add (incomplete) guide on working with text docs
Add how-to guide on getting the client’s configuration
Add reference on supported handler types
Add how-to guide on custom error reporting
Add (incomplete) guide on implementing diagnostics
Add how-to guide on giving user feedback
Add how-to guide on sending custom messages
Add howto guide on accessing the server instance
Features¶
Change
pythonPathtopythonCommand
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Remove unecessary dependencies from requirements.txt
Add esbonio config
Ensure poe uses uv
Add local Makefile
Bump node to v20
Npm audit fix
Update cattrs to 25.3.0 in uv.lock
Drop call for testing
Testing¶
Adjust tests for cattrs structuring sequences as tuples
Build¶
V2.0.0
[2.0.0a6] - 2025-07-18¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a6
Bug Fixes¶
🐛 fix conversion of client_position into offset_at_position
CI¶
Pin all action versions
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Build¶
V2.0.0a6
[2.0.0a5] - 2025-07-14¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a5
Bug Fixes¶
Utf8 encodings
CI¶
Migrate from
poetrytouvPin all action versions
Features¶
Make
TextDocument.linesbe aSequence[str]Provide encoding hint in repr
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Re-export get_capability
More accurate typing
Lsprotocol 2025.0.0
Fix indentation
Add required groups to Makefile
Update Makefiles to make it easy to switch Python versions
Refactor¶
Use clearer logic for accumulating code unit count
Testing¶
Run slow tests last
Test position codecs against actual string encoding
Fix some incorrect utf-8 offsets
Build¶
Bump the pip group across 2 directories with 5 updates
V2.0.0a5
[2.0.0a4] - 2025-06-05¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a4
Bug Fixes¶
Update the hello world example to the v2.0 syntax (#533)
workspace/executeCommandwith async handlersCrash on unknown message ids
CI¶
Start testing on Python 3.14
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Lsprotocol 2025.0.0rc1
Improve type annotations and docstrings
Improve type annotations in generated code
Improve typing of get_capability
Bump pyodide version
Add devcontainer and Makefiles
Testing¶
Update error message regex
Fix pyodide test suite
Build¶
V2.0.0a4
[2.0.0a3] - 2025-05-18¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a3
Bug Fixes¶
Add fallback JsonRpcException code for malformed server errors (#520)
Don’t cancel the future handling the shutdown request
Use
issubclassto check client/server instanceError when passing max_workers
Don’t wrap JsonRpcExceptions
Documentation¶
Features¶
Yield to the user’s initialize before calculating capabilities
Use type annotations to parse command arguments
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Fix migration guide link
Add missing version number
Fix mypy errors
Resolve
pytest-asynciodeprecation warnings
Refactor¶
Unify message handler execution
Re-implement pygls’ builtin handlers using generators
Testing¶
Add test ensuring we can register handlers during
initializeEnsure async user shutdown handlers are executed correctly
Build¶
V2.0.0a3
[2.0.0a2] - 2024-11-04¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a2
Bug Fixes¶
Use
BinaryIOnotTextIOinstart_io()Reduce log noise generated by unimplemented methods
Return
Nonefor nonfile:URIsCancel pending client requests when server process exits
Wait for the server process to exit
Don’t call sys.exit
CI¶
Run the new pyodide test suite in CI
Bump action versions
Documentation¶
Add RELEASING.md doc
Update migration guide to cover thread pool changes
Remove Strata server implementation
Update v2 migration guide
Update migration guide
Fix intersphinx reference
Add guide on running the pyodide test suite
Restructure the documentation… again
Add guide on running a pyodide server on nodejs
Add guide on running a pyodide server in the browser
Features¶
Add
start_tcpmethod toJsonRPCClientAdd
pygls.cli.start_serverAdd
start_wsmethod to pygls’LangugageClientFallback to a synchronous main loop on WASM platforms
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Properly indent RELEASING.md
Fix task name
Bump minimum required websockets version
Update to lsprotocol-2024.0.0b1
Delete pyodide specific code
Refactor¶
Remove
multiprocessing.pool.ThreadPoolMake some methods public
Convert
aio_readlinefunction to arun_asyncmethodUse high-level asyncio API in
start_ioUse new
pygls.io_module for pygls’ clientUse high-level asyncio API for
server.start_tcpUse high-level asyncio API for
server.start_wsStop inheriting from
asyncio.ProtocolRename transport to writer
Testing¶
Add end-to-end test covering threaded handlers
Simplify coverage reporting
Add the option to run the end-to-end tests over TCP
Skip test on Windows for now
Run end-to-end tests over WebSockets
Include values for runtime and transport in pytest’s header
Update test cases to align with event loop changes
Delete the old pyodide test suite
Add option to run end-to-end tests under pyodide
Build¶
V2.0.0a2
[2.0.0a1] - 2024-08-24¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a1
Bug Fixes¶
Compute
resolve_providervalue forCodeLensOptionsRespect client’s preferred encoding when possible
Compute
prepare_providerforRenameOptionsDefault cwd for local extension
Compute
resolve_providerforDocumentLinkOptions
CI¶
Update json-extension.yml to align with local extension
Start testing against Python 3.13
Stop testing on Python 3.8
Use Python version in cache key
Documentation¶
Update CONTRIBUTING.md
Add linter commander to PR template
Add
sphinx-designpluginDelete getting started guide
Create a “How To” section
Add guide on handling invalid data
Add about section
Add API Reference section
Update home page
Setup basic tutorial structure
Add how to guide on using the
pygls-playgroundAdd module docstrings for the example servers
Include the hello world example code directly
Include the example servers in the documentation
Add Document Links example server
Rpm-spec-language-server to Implementations.md
Update GotoX title
Add Document and Workspace symbol example server
Fix typo in
server.pyFix typo in user guide
Add guide on implementing semantic tokens
Add example semantic tokens server
Add draft v2 migration guide
Features¶
Provide more detail in exception
Update to latest lsprotocol 2024.0.0a2
Generate server methods from lsp types
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Add README
Add Kedro VS Code extension into implementations.md
Update VSCode settings to align with local extension
Update pygls-playground README
Update requirements.txt for documentation
Regen poetry.lock
Fix lints
Remove
pathMappingsRemove redundant method definitions
Align to new server implementation
Align tests with new server implementation
Rename scripts to
generate_codeAdd call for testing to README
Remove deprecated code
Refactor¶
End-to-end test infrastructure
Update hover.py example to use language server argument
Make the playground extension workspace local
Rely on the
pygls.server.cwdsettingUse generated
BaseLanguageServerRename
ServertoJsonRPCServer
Testing¶
Add end-to-end test for
textDocument/hoverrequestsAdd end-to-end tests for color related methods
Add end-to-end tests for various “Goto X” methods
Add end-to-end tests for
textDocument/codeLensAdd end-to-end tests for the different diagnostic approaches
Add end-to-end tests for the various formatting requests
Extend
get_client_forto accept custom capabilitiesAdd end-to-end tests for rename methods
Add end-to-end semantic tokens test
Build¶
Upgrade black to latest (24.3.0)
Bump idna from 3.6 to 3.7
Bump jinja2 from 3.1.3 to 3.1.4
Requests from 2.31.0 to 2.32.0
Bump idna from 3.6 to 3.7 in /docs
Bump certifi from 2023.11.17 to 2024.7.4
Bump requests from 2.31.0 to 2.32.2 in /docs
Bump urllib3 from 2.1.0 to 2.2.2
Bump jinja2 from 3.1.2 to 3.1.4 in /docs
Bump zipp from 3.17.0 to 3.19.1
Bump setuptools from 69.0.2 to 70.0.0 in /docs
[1.3.1] - 2024-03-26¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.3.1
Documentation¶
Add systemd-language-server to implementations
Update implementations.md with Chapel’s language server
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Apache license missing dash
Build¶
V1.3.1
[1.3.0] - 2024-01-29¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.3.0
Bug Fixes¶
Add missing value to
pygls.trace.server
CI¶
Don’t let Pyodide test fail the whole build
Don’t trigger CI on both push and pull_request
Features¶
Drop Python 3.7 support
Update dependencies to latest(ish)
Enable debugging of servers in the playground
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Cattrs is a direct dependency
Update pytest-asyncio
Add pytest-lsp and lsp-devtools to Implementations.md
Update lsprotocol to 2023.0.1
Build¶
V1.3.0
[1.2.1] - 2023-11-30¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.2.1
Bug Fixes¶
Handle ResponseErrors correctly
Miscellaneous Tasks¶
Update CHANGELOG.md
Clean CHANGELOG
Build¶
V1.2.1
[1.2.0] - 2023-11-18¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.2.0
Bug Fixes¶
Remove dependency on typeguard
Linting and formatting issues
Simplify option validation check
Index error on empty workspace
Features¶
Allow user to override Python interpreter
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Update
poetry.lockafter removing typeguardAdd example configuration
Pin lsprotocol to 2023.0.0
Refactor¶
Move workspace/ into servers/ dir
[1.1.2] - 2023-10-28¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.1.2
Documentation¶
Correct doc comment for PositionCodec.client_num_units
Miscellaneous Tasks¶
Update CHANGELOG.md
Update CONTRIBUTORS.md
Split protocol.py into own folder/files
Build¶
Bump urllib3 from 2.0.6 to 2.0.7
Allow installation with typeguard 4.x
V1.1.2
[1.1.1] - 2023-10-06¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.1.1
Bug Fixes¶
Prevent AttributeError root_path when no workspace
CI¶
Fix release process
Miscellaneous Tasks¶
Manual changes for v1.1.0 release
Explicit exports from pygls.workspace
Build¶
Bump urllib3 from 2.0.5 to 2.0.6
V1.1.1
[1.1.0] - 2023-10-02¶
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.1.0
Bug Fixes¶
Fix broken link and outdated comment
Correctly cast from UTF16 positions
Ensure server commands can be executed
Mypy lints
Error code of JsonRpcInternalError
Only show code action when there’s no sum
Don’t include trailing whitespace in code action title
‘bool’ object has no attribute ‘resolve_provider’
Computation of formatting and diagnostic provider capabilities
CI¶
Migrate to Poetry and modernise
Linter for conventional commits
Autogenerate changelog with
git-cliffAutomate CONTRIBUTORS.md
Retry Pyodide tests
Test against Python 3.12
Use
matrix.python-versionin cache keyUpdate json-extension pipeline
Pin poetry to 1.5.1
Do not install chromium/chromedriver
Enable coverage reporting
Run all lints even when some fail
Increase Pyodide CI retries to 6
Documentation¶
Use autodoc to document client methods
Update docstrings
Change specification for commit messages
Typo in vscode-playground README.md
Add api docs for servers, protocol and workspace
Align docstring formatting
Handle methods starting with
$/Update links and code snippets
Rename advanced usage to user guide
Instructions for using plain text files with vscode-playground
Features¶
Add document diagnostic capability
Add workspace symbol resolve
Add workspace diagnostic support
Adds inline value support
Adds type hierarchy request support
Add
awaitsyntax support for sending edit request to clientAllow servers to provide
NotebookDocumentSyncOptionsInitial support for notebook document syncronisation
Add notebook support to example
inlay_hints.pyserverAccept
PositionEncodingclient capabilitySupport UTF32 ans UTF8 position encoding
Miscellaneous Tasks¶
Update autogenerated Pygls client
Introduce
blackformattingAdd
.git-blame-ignore-revsfileDelete fountain-vscode-extension
Update README.md
Bump lsprotocol version
Fix deprecation warning, set chrome path
Disable body-max-line-length check
Add .readthedocs.yaml
Strict types in uris.py and workspace.py
Move workspace/doc/position into own files
Fix mypy types
Maintain
Workspacebackwards compatFix use of deprecated methods in tests/test_language_server.py
Refactor¶
Move example json-server to
examples/serversRename
json-vscode-extension/->vscode-playgroundSimplify end-to-end test client fixture definition
Rename
Client->JsonRPCClientRename
LanguageClient->BaseLanguageClientRename
<verb>_documentto<verb>_text_documentExpose workspace via a property
Server
PositionclassRename server Position to PositionCodec, instantiate it in Workspace
Reference types via
typesmoduleMake
defaultargument mandatory, add type annotations
Testing¶
Test that the client provided token is used
Remove a useless sleep
Test cases of server initiated progress
Base Pyodide wheel deps off poetry.lock
Build¶
Bump semver in /examples/fountain-vscode-extension
Bump semver in /examples/json-vscode-extension
Bump word-wrap in /examples/json-vscode-extension
Lock min Python version to 3.7.9
Cache specific Python minor version
Bump lsprotocol to 2023.0.0b1
Release v1.1.0
Json-extension¶
Support cancellation in progress example
Progress¶
Support work done progress cancellation from client
Server¶
Add a type annotation to help completions in editor
Extra Notes¶
Added¶
Add
LanguageClientwith LSP methods autogenerated from type annotations inlsprotocol(#328)Add base JSON-RPC
Clientwith support for running servers in a subprocess and communicating over stdio. (#328)Support work done progress cancel (#253)
Add support for
textDocument/inlayHintandinlayHint/resolverequests (#342)
Changed¶
Fixed¶
pyglsno longer overrides the event loop for the current thread when given an explicit loop to use. (#334)Fixed
MethodTypeNotRegisteredErrorwhen registering aTEXT_DOCUMENT_DID_SAVEfeature with options. (#338)Fixed detection of
LanguageServertype annotations when using string-based annotations. ([#352])
Pre Automation Changelog¶
[1.0.2] - May 15th, 2023¶
Changed¶
Update typeguard to 3.x (#327)
Fixed¶
Data files are no longer placed inside the wrong
site-packagesfolder when installingpygls([#232]) [#232]: https://github.com/openlawlibrary/pygls/issues/232
[1.0.1] - February 16th, 2023¶
Fixed¶
Fix progress example in json extension. (#230)
Fix
AttributeErrorsinget_configuration_async,get_configuration_callback,get_configuration_threadedcommands in json extension. (#307)Fix type annotations for
get_configuration_asyncandget_configurationmethods onLanguageServerandLanguageServerProtocolobjects (#307)Provide
versionparam for publishing diagnostics (#303)Relaxed the Python version upper bound to
<4(#318)
1.0.0 - 2/12/2022¶
Changed¶
BREAKING CHANGE: Replaced pydantic with lsprotocol
0.13.1 - 1/12/2022¶
Changed¶
Docs now state that the v1 alpha branch is the recommended way to start new projects
Fixed¶
Support CodeActionKind.SourceFixAll
0.13.0 - 2/11/2022¶
Added¶
Add
nameandversionarguments to the constructor ofLanguageServer(#274)
Changed¶
Default behaviour change: uncaught errors are now sent as
showMessageerrors to client. Overrideable inLanguageServer.report_server_error(): https://github.com/openlawlibrary/pygls/pull/282
Fixed¶
_data_recevied()JSONRPC message parsing errors now caughtFix “Task attached to a different loop” error in
Server.start_ws(#268)
0.12.4 - 24/10/2022¶
Fixed¶
Remove upper bound on Pydantic when Python is <3.11
0.12.3 - 24/10/2022¶
Fixed¶
Require Pydantic 1.10.2 when Python is 3.11
0.12.2 - 26/09/2022¶
Fixed¶
Relaxed the Python version upper bound to
<4(#266)
0.12.1 - 01/08/2022¶
Changed¶
Documentobjects now expose a text document’slanguage_idVarious Pyodide improvements
Improved tests for more reliable CI
0.12 - 04/07/2022¶
Added¶
Allow custom word matching for
Document.word_at_point
Changed¶
Upgraded Python support to 3.10, dropping support for 3.6
Dependency updates, notably Pydantic 1.9 and Websockets 10
Fixed¶
0.11.3 - 11/06/2021¶
Added¶
Changed¶
Update json-example to include an example semantic tokens method (#204)
Fixed¶
0.11.2 - 07/23/2021¶
Added¶
Changed¶
Fixed¶
0.11.1 - 06/21/2021¶
Added¶
Changed¶
Remove defaults from all optional fields on protocol-defined types (#198)
Fixed¶
0.11.0 - 06/18/2021¶
Added¶
Changed¶
Fixed¶
0.10.3 - 05/05/2021¶
Added¶
Changed¶
Fixed¶
0.10.2 - 03/25/2021¶
Added¶
Changed¶
Handle lost connection; Remove psutil (#163)
Fixed¶
0.10.1 - 03/17/2021¶
Fixed¶
Remove “query” from FoldingRangeParams (#153)
0.10.0 - 03/16/2021¶
Added¶
Changed¶
Fixed¶
0.9.1 - 09/29/2020¶
Added¶
Changed¶
Fixed¶
coroutinedeprecation warning - use async def instead (#136)
0.9.0 - 04/20/2020¶
Changed¶
Added¶
Removed¶
appveyor build script (#103)
0.8.1 - 09/05/2019¶
Changed¶
0.8.0 - 05/13/2019¶
Added¶
Changed¶
0.7.4 - 03/21/2019¶
Added¶
Add Pull Request template (#54)
Changed¶
0.7.3 - 01/30/2019¶
Added¶
Add flake8 and bandit checks to appveyor script
Changed¶
Start using Keep a Changelog format.
Fix and refactor initialize LSP method and add more tests
Fix python 3.5 compatibility
Use python 3.5 in appveyor script
0.7.2 - 12/28/2018¶
Fix README to use absolute paths for GitHub urls (needed for PyPi)
0.7.1 - 12/28/2018¶
Add
publish_diagnosticsto LanguageServerFix validation function in json example
Correct advanced usage doc page
“pygls” -> pygls everywhere in the docs
0.7.0 - 12/21/2018¶
Open source pygls
0.6.0¶
Modules/functions/methods reorganization
Add more features/commands to json-extension example
Add unit tests to json-extension example
Update
appveyor.ymlSmall bug fixes
0.5.0¶
Return awaitable Future object from get_configuration
Add / Remove Workspace folders bugfix
Attach loop to child watcher for UNIX systems
0.4.0¶
Gracefully shutdown and exit server process
Disallow requests after shutdown request is received
Added more types for type hints
Improved example
0.3.0¶
Async functions (coroutines) support
Mark function to execute it in a thread pool
Added lsp types
New example
Fixed
appveyor.yml
0.2.0¶
Added classes for
textDocument/completionmethod response
0.1.0¶
Initial Version