A Language Server for zc.buildout.
This language server is implemented using pygls.
Installation
Standalone
Needs a python >= 3.7.
python -m pip install zc.buildout.languageserver
Then configure your editor to run buildoutls ( or python3 -m buildoutls ).
From vscode extension
On activation, the extension automatically installs the extension on the python configured in the extension preferences.
The automatic installation does not seem to work with theia and the python egg has to be installed beforehand.
Features
Completions
${complete sections.${section:completesection's options. Ifsectionuses a known recipe, dynamic options from the recipe are also completed.${buildout:extends}completes filenames.${buildout:parts}and<=option completes parts.
Diagnostics
- non existant section and options in
${section:option}references. - required options not defined for a a few "known recipes".
- python package listed in
[versions]with known vulnerabilities
Symbols
- Sections and options are shown are displayed in outline as symbols.
Links
${buildout:extends}are links.
Go to definitions
- from
${section:options}we can go to the location whereoptionis defined insection, or tosectionheader if it's not defined. - from
<= sectionwe can go tosection. - from
${buildout:extends}we can go to the extended profile.
Hover
- Hover on an option show the option value.
Find references
- Find references of the current symbol. A bit simple, it only look for references and does not check if profiles really
extendseach other. It does not look in templates either.
Code actions
- update a python package from
[versions]to its latest version on pypi - compute the
md5sumof an url
Template support
- "current" buildout profile is guessed, then completions and diagnostics should work on any files.
Jinja2 support
- Jinja syntax is syntax highlighted and jinja syntax markers are ignored when parsing buildout.
SlapOS support
- SlapOS instance buildout (ie. buildout generated by buildout) is understood,
${and$${are treated separatly for completions and diagnostics.
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added:
Fixed:
0.6.1 - 2022-01-04
Fixed:
- fix problems with automatic publishing of packages
0.6.0 - 2022-01-04
Added:
- diagnostic: report versions with known vulnerabilities
- code action: update a python package listed in
versionsto latest version - code action: view a python package page on pypi
- code action: compute md5sum of an url
Removed
- support for python 3.6, minimal supported version is now 3.7
Fixed:
- completions: don't offer completions in comments
- fix performance issues by cancelling pending tasks
0.5.0 - 2021-03-28
Added:
- diagnostic: warn when options are redefining the current value
- completions: complete existing options of current sections
- diagnostic: support recipes with arbitrary options (like slapos.recipe.build)
- diagnostic: report error when existing non existant profiles
Fixed:
- stop emitting false positives diagnostics with multi line jinja
- stop emitting false positives diagnostics for missing sections/options when extending dynamic profile
- fixed "add line comment" action
0.4.0 - 2020-10-08
Fixed:
- don't skip lines containing jinja expressions. This was causing some missing options when jinja was used in option
- diagnostic: tolerate unknown part when extends jinja
0.3.0 - 2020-02-23
Added:
- support http URLs in
${buildout:extends}
0.2.1 - 2020-04-25
Fixed
- references: consider listing a section in
${buildout:parts}as a reference. - completions: use
textEditto properly overwrite exiting text. - all: debounce protocol functions to accept cancellations.
- all: fix errors when opening profiles outside of workspace.
0.2.0 - 2020-02-12
Added:
- support running with buildout < 2.9.3
- initial support of
instance.cfgdefined usingslapos.recipe.template:jinja2
Fixed
- fixed broken v0.1.1 release, it could not be installed from pypi.
- diagnostics: prevent "missing required options" false positive on sections used only as macros.
- diagnostic: Correctly analyze sections with
.or-in their names - diagnostic: Fix false positives on
${buildout:parts}with extended sections - diagnostic: Fix false positives on
${buildout:parts}when dynamically adding parts with jinja.
0.1.1 - 2020-01-30
Added
- definitions: paths from
${buildout:extends}can also be opened with jump to definition. - completions: fix insertText with
-. - diagnostics: detect missing non existant sections listed in
${buildout:parts}. - diagnostics: detect sections without recipe listed in
${buildout:parts}.
0.1.0 - 2020-01-04
- Initial Version
Metadata
Release files for zc.buildout.languageserver 0.6.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 | Provenance | Actions |
|---|---|---|---|---|
| zc.buildout.languageserver-0.6.1.tar.gz | 38.2 kB | Without provenance | Details for zc.buildout.languageserver-0.6.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zc.buildout.languageserver-0.6.1-py3-none-any.whl | Python 3 | none | any | Details for zc.buildout.languageserver-0.6.1-py3-none-any.whl |
Total release size: 77.6 kB
Release files / zc.buildout.languageserver-0.6.1.tar.gz
| Download URL | zc.buildout.languageserver-0.6.1.tar.gz |
|---|---|
| Size | 38.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98cbfe7fa4ad6effefee088e261ce646cad10e634d6e92cc7e94dcef50de9ff6
|
|
BLAKE2b-256 checksum How to use checksums |
0debce668c397694bf5013b2b8703353a91c7be76294680776da76e914ebcb1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
|
Release files / zc.buildout.languageserver-0.6.1-py3-none-any.whl
| Download URL | zc.buildout.languageserver-0.6.1-py3-none-any.whl |
|---|---|
| Size | 39.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
efafab9773adf5707a4920d5e39aeb7c3a685bf13c8a870981470104961070dc
|
|
BLAKE2b-256 checksum How to use checksums |
900166a852bde3a5ab5ce97fb5a9cd460e319f4843c88308fd6937a20867e03c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
|
Security for zc.buildout.languageserver 0.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.