Skip to main content

A language server for zc.buildout

Project description

A Language Server for zc.buildout.

This language server is implemented using pygls.

Installation

Standalone

Needs a python >= 3.8.

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: complete section's options. If section uses 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 where option is defined in section, or to section header if it's not defined.
  • from <= section we can go to section.
  • 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 extends each other. It does not look in templates either.

Code actions

  • update a python package from [versions] to its latest version on pypi
  • compute the md5sum of 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

0.12.0 - 2023-10-08

  • support python 3.12
  • version up dependencies

Fixed

  • hover: fix crash when opening instance.cfg.in without opening a folder (by updating pygls)

0.11.0 - 2023-10-04

Added

  • code actions: support cancellation of md5sum command

Fixed

  • hover: fix crash when opening instance.cfg.in outside of workspace folder

0.10.1 - 2023-09-20

Fixed

  • revert: code actions: support cancellation of md5sum command, this needs an unreleased pygls

0.10.0 - 2023-09-20

Added

  • code actions: support cancellation of md5sum command
  • references: support cancellation

0.9.3 - 2023-09-19

Fixed

  • server: Fix crash when hover .cfg.in in gitlens views
  • client,server: update dependencies

0.9.2 - 2023-02-24

Fixed

  • server: fixed definition of python_requires

0.9.1 - 2023-02-24

Added

  • client: version up dependencies

0.9.0 - 2023-01-01

Added

  • update to pygls 1.0

0.8.3 - 2022-11-06

Fixed

  • client: revert to older vscode and vscode-languageclient dependencies

Added

  • server: support more slapos recipes

0.8.2 - 2022-10-29

Fixed:

  • client: install with requirements.txt to install a fixed version

Added:

  • client: version up dependencies
  • server: support python 3.11

0.8.1 - 2022-07-03

Fixed:

  • code_actions: fix visit project on pypi when invoked from option key
  • aiohttp: don't set global timeout

0.8.0 - 2022-07-02

Added:

  • switch from requests to aiohttp. Doing http requests asynchronously and in the case of pypi diagnostics, concurrently.
  • diagnostic: lower severity of option redefined to same value to information level
  • diagnostic: add hint level diagnostic for every redefined value
  • cli: new --log-pygls flag to include pygls logs. By default they are not included.
  • diagnostic: report unknown pypi projects or versions

Fixed:

  • pypi: fix a crash when unknown project is listed in versions
  • diagnostic: don't emit false positives for profiles generated with jinja
  • fix crash with empty ${buildout:extends}

0.7.1 - 2022-05-08

Added:

  • recipe: support defining deprecated options
  • recipe: support slapos.recipe.template version 0.5

Fixed:

  • recipe: fix some markdown syntax in recipe docs

0.7.0 - 2022-04-03

Added:

  • code actions: report progress when updating md5sum
  • expose commands to start & stop profiling.

Fixed:

  • significantly improve performance by implementing .copy() method and using an intermediate cache.
  • fix crash when completing option made only of space
  • fix crash when completing after ${}

0.6.2 - 2022-01-06

Fixed:

  • fix a packaging mistake with the vscode extension

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 versions to 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 actually the fix was wrong

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 textEdit to 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.cfg defined using slapos.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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zc.buildout.languageserver-0.12.0.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file zc.buildout.languageserver-0.12.0.tar.gz.

File metadata

File hashes

Hashes for zc.buildout.languageserver-0.12.0.tar.gz
Algorithm Hash digest
SHA256 786129396992454da7149494fe793e96804b913f48a6e77f0c6392b5ce380910
MD5 77c756ef35aa31532b2524cf64a5b47c
BLAKE2b-256 24286e7cf913775410fe36cfde4ee45c5a3f729b803dff58631f9aa52ca8b326

See more details on using hashes here.

File details

Details for the file zc.buildout.languageserver-0.12.0-py3-none-any.whl.

File metadata

File hashes

Hashes for zc.buildout.languageserver-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fdd189312c00f9966d5483737c8e2fbef8fb937bbbfeb712b19c6ee47de5c735
MD5 74b04e2403fa161fffe0d9dde4b813a1
BLAKE2b-256 fa99245a18daea2808d7426d0e603fe524642dd831724f63bd68be2d69595c50

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page