All Projects β†’ rabix β†’ benten

rabix / benten

Licence: Apache-2.0 License
A language server for Common Workflow Language

Programming Languages

python
139335 projects - #7 most used programming language
typescript
32286 projects
shell
77523 projects

Projects that are alternatives of or similar to benten

Metals
Scala language server with rich IDE features πŸš€
Stars: ✭ 1,605 (+3110%)
Mutual labels:  language-server, ide
Php Language Server
PHP Implementation of the VS Code Language Server Protocol πŸ†šβ†”πŸ–₯
Stars: ✭ 1,019 (+1938%)
Mutual labels:  language-server, ide
Clangd
clangd language server
Stars: ✭ 293 (+486%)
Mutual labels:  language-server, ide
scalavista-server
A minimalistic Scala language-server
Stars: ✭ 14 (-72%)
Mutual labels:  language-server, ide
cwlexec
A new open source tool to run CWL workflows on LSF
Stars: ✭ 34 (-32%)
Mutual labels:  workflow, cwl
Ocaml Language Server
A language server for OCaml and related languages
Stars: ✭ 238 (+376%)
Mutual labels:  language-server, ide
Erlang ls
The Erlang Language Server
Stars: ✭ 363 (+626%)
Mutual labels:  language-server, ide
user guide
The CWL v1.0 user guide
Stars: ✭ 20 (-60%)
Mutual labels:  workflow, cwl
Onepanel
The open and extensible integrated development environment (IDE) for computer vision with built-in modules for model building, automated labeling, data processing, model training, hyperparameter tuning and workflow orchestration.
Stars: ✭ 428 (+756%)
Mutual labels:  workflow, ide
atom-ide-scala
Scala & Dotty support for Atom IDE (πŸ§Ÿβ€β™‚οΈ zombie repo)
Stars: ✭ 47 (-6%)
Mutual labels:  language-server, ide
open-development-template
Workflow and documentation templates that help teams formalize their goals, workflow and governance model to encourage participation and field contributions.
Stars: ✭ 18 (-64%)
Mutual labels:  workflow
zenaton-ruby
πŸ’Ž Ruby gem to run and orchestrate background jobs with Zenaton Workflow Engine
Stars: ✭ 32 (-36%)
Mutual labels:  workflow
polystores
A library for performing hyperparameter optimization
Stars: ✭ 48 (-4%)
Mutual labels:  workflow
iSkyLIMS
is an open-source LIMS (laboratory Information Management System) for Next Generation Sequencing sample management, statistics and reports, and bioinformatics analysis service management.
Stars: ✭ 33 (-34%)
Mutual labels:  workflow
ACEseqWorkflow
Allele-specific copy number estimation with whole genome sequencing
Stars: ✭ 19 (-62%)
Mutual labels:  workflow
bootstrap-gulp-starter-template
Bootstrap 4 + Gulp 4 + Panini for improve front-end development workflow
Stars: ✭ 67 (+34%)
Mutual labels:  workflow
veridical-flow
Making it easier to build stable, trustworthy data-science pipelines.
Stars: ✭ 28 (-44%)
Mutual labels:  workflow
outside-collaborators
Automatically Manage Outside Collaborators Organization-wide
Stars: ✭ 45 (-10%)
Mutual labels:  workflow
omgf
Use Git Flow with ease – maintain branches, semantic versioning, releases, and changelog with a single command.
Stars: ✭ 39 (-22%)
Mutual labels:  workflow
alfred-mailto
Send emails to recipients and groups from Alfred
Stars: ✭ 59 (+18%)
Mutual labels:  workflow

Benten

This is a language server for Common Workflow Language documents.

Tests codecov Codacy Badge PyPI version Conda Version Visual Studio Marketplace Version Open VSX

Features

(Click for feature screenshot gallery)

  • Syntax highlighting (CWL and JS)
  • Evaluate expression on hover
  • File path autocomplete for linked files in run field
  • Port completion for workflow
  • Navigate to linked sub-workflows and includes (Jump to definition)
  • Outline view (Symbols) + Step symbols
  • Type validations
  • Port validations
  • Display language documentation on hover

Benten + VS Code

Benten is written using Python3 and developed against VS Code. The language server component will work with any editor/IDE that offers language server support. Syntax highlighting is currently only available for the VS Code extension. The VS Code extension is written in Typescript.

Install VS Code extension

Search for "Benten" in the marketplace. The name of the client extension is Rabix/benten. Follow the usual method to install the extension.

If you have not installed the Benten server separately (see below) then the client will attempt to find and download a matching server version from the github releases page.

Server installation

Benten requires Python 3.7 or later

If you will be installing from source you will need git on your system

Using pipx

A neat way to install benten in a virtual env (isolating it from your system python) and still be able to call it as a regular executable is to use pipx

pip3 install pipx  # in case you don't have pipx
pipx ensurepath # ensures CLI application directory is on your $PATH

Now you can install Benten with

pipx install benten

If you already have Benten installed you can upgrade it

pipx upgrade benten

If your base python install is earlier than 3.7 you can tell pipx to use 3.7 for Benten

pipx install benten --python python3.7

Notes:

  1. pipx installs the executables in $HOME/.local/bin (%HOMEPATH%\.local\bin for Windows). This needs to be added to your PATH env variable. pipx ensurepath does this for you
  2. pipx install can be done from within another virtual environment. This is helpful when you have an incompatible global version of Python which you wish to keep but still want to install Benten. You can create a virtual env with Python > 3.7 and invoke the installation commands from there.
  3. If you are using VS Code, if you install the server after loading a CWL file you will have to restart VS Code.

Special instructions for Ubuntu Linux

sudo apt install python3-pip python3-venv

Note for Windows

If you are trying to reinstall or updating the server on windows with the server running (e.g. because you have VS Code running), you will have to shutdown the server (e.g. by exiting VS Code) before updating.

Installing versions directly from github

To install from the master branch

pipx install git+https://github.com/rabix/benten.git

To install from develop branch (or some other branch):

pipx install git+https://github.com/rabix/benten.git@develop

Or, if you have cloned the repository and want to play with the server code itself:

pipx install -e benten  # benten is the name of the directory with the cloned code

Using with VI/Vim

See this page please.

Expression evaluations on hover

Hovering over an expression will display the result of the evaluation or any errors that are encountered. Benten auto-generates sample process inputs, outputs and intermediate outputs (if the process is a workflow). Note that these are all randomly generated sample data meant for quick sanity checking of expressions.

Over-riding auto-generated sample data

The sample data is auto-generated on demand when an evaluation is requested. The generated sample data is also stored in a scratch file. This scratch file can be accessed by clicking "go to definition" when over any expression. Normally this file is just overwritten each time with fresh, randomly generated data.

If you wish to customize some of the sample data (for example you have specific test cases you want to check as you code the workflow) if you add the string (exactly)

#custom

to the first line of the sample data file, Benten will stop overwriting the file and use the contents of this customized file instead.

Once you add this line to the sample data file, Benten will no longer overwrite this file. If you want the test data to be regenerated (e.g. you've changed the input schema of the CWL) you need to remove this first sentinel line and Benten will regenerate the input.

Other tips and Tricks

Benten attaches onto your regular text editor and offers help by way of auto-completions and document validations, so most of its functionality is exposed naturally via the editor's regular UI, and a specialized tutorial is not necessary, but some helpful tips and tricks are listed in this page.

For developers

See the development documentation

License

Apache 2.0

Acknowledgments

Peter Amstutz for the PyInstaller formula and the auto-downloading feature on the VS Code extension.

Peter van Heusden for the Benten Conda distribution.

The low level client-server communication code is taken from Sourcegraph's (now defunct) Python Language Server as is the VS Code client code (which was based originally off Microsoft's example code). The CWL preview uses vis.js

What's in a name?

Saraswati is the Hindu goddess of learning and knowledge and a long time ago she visited Japan, where she is known as Benzaiten (Benten for short) and her sitar has morphed into a Japanese biwa but she has kept some of her many arms.

Benzaiten is the goddess of everything that flows: water, time, words, speech, eloquence, music and by extension, knowledge. Therefore Benten is an appropriate goddess for scientific workflow developers.

References


(c) 2019-2021 Seven Bridges Genomics. Rabix is a registered trademark of Seven Bridges Genomics
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].