Skip to main content

Sysl

https://img.shields.io/travis/anz-bank/sysl/master.svg?branch=master https://img.shields.io/appveyor/ci/anz-bank/sysl/master.svg?logo=appveyor https://img.shields.io/codecov/c/github/anz-bank/sysl/master.svg https://img.shields.io/gitter/room/nwjs/nw.js.svg

Sysl (pronounced “sizzle”) is a system specification language. Using Sysl, you can specify systems, endpoints, endpoint behaviour, data models and data transformations. The Sysl compiler automatically generates sequence diagrams, integrations, and other views. It also offers a range of code generation options, all from one common Sysl specification.

The set of outputs is open-ended and allows for your own extensions. Sysl has been created with extensibility in mind and it will grow to support other representations over time.

Installation

Windows users can download the sysl-bundle-windows.zip, containing sysl.exe and reljam.exe, from our release page.

Users on other operating systems need to work with Python or Docker.

Python

Install Python 2.7. If your specific environment causes problems you might find our guide helpful.

Install Sysl with

> pip install sysl

Now you can execute Sysl on the command line with

> sysl   textpb -o out/petshop.txt /demo/petshop/petshop
> reljam model /demo/petshop/petshop PetShopModel

See sysl --help and reljam --help for more options.

Docker

Install Docker and pull the Docker Image with

> docker pull anzbank/sysl

Consider tagging the docker image to make commands shorter

> docker tag anzbank/sysl sysl

Try the following commands

> docker run sysl
> docker run sysl sysl -h
> docker run sysl reljam -h

See https://hub.docker.com/r/anzbank/sysl/ for more details.

Development

Install dependencies and the sysl package with symlinks

> pip install pytest flake8 -e .

Sysl depends upon PlantUML for diagram generation. Some of the automated tests require a PlantUML dependency. Provide PlantUML access either via local installation or URL to remote service. Warning, for sensitive data the public service at www.plantuml.com is not suitable. You can use one of the following options to set up your environment:

  • execute SYSL_PLANTUML=http://www.plantuml.com/plantuml

  • add export SYSL_PLANTUML=http://www.plantuml.com/plantuml to you .bashrc or similar

  • install PlantUML locally and run on port 8080 or you can refer to the plantuml server guide

Test and lint the source code and your changes with

> pytest
> flake8

Consider using virtualenv and virtualenvwrapper to isolate your development environment.

For Java tests install Java 8 and gradle and run

> gradle test -b test/java/build.gradle

If your corporate environment restricts access to jcenter our environment guide might hold the answer for you. It also includes tips on using virtualenv with gradle test.

We encourage contributions to this project! Please have a look at the contributing guide for more information.

If you need to create a release follow the release documentation.

Local Travis CI builds (experimental)

./run-travis.sh runs a local Travis CI build. This is intended primarily to test Travis builds offline.

Extending Sysl

In order to easily reuse and extend Sysl across systems, the Sysl compiler translates Sysl files into an intermediate representation expressed as protocol buffer messages. These protobuf messages can be consumed in your favorite programming language and transformed to your desired output. In this way you are creating your own Sysl exporter.

Using the protoc compiler you can translate the definition file of the intermediate representation src/proto/sysl.proto into your preferred programming language in a one-off step or on every build. You can then easily consume Sysl models in your programming language of choice in a typesafe way without having to write a ton of mapping boilerplate. With that you can create your own tailored output diagrams, source code, views, integrations or other desired outputs.

In this project, several Python based exporters exist under src/sysl/exporters and the relevant Python protobuf definitions sysl_pb2.py have been created from sysl.proto with

> protoc --python_out=src/sysl/proto  --proto_path=src/proto sysl.proto

If sysl.proto is updated, the above command needs to be re-run to update the corresponding Python definitions in sysl_pb2.py.

Status

Sysl is currently targeted at early adopters. The current focus is to improve documentation and usability, especially error messages and warnings.

Release files for sysl 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sysl 0.3.0
File Size Uploaded
sysl-0.3.0.tar.gz 112.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sysl 0.3.0
File Interpreter ABI Platform
sysl-0.3.0-py2-none-any.whl Python 2 none any Details

Total release size: 240.5 kB

Release files / sysl-0.3.0.tar.gz

Download URL sysl-0.3.0.tar.gz
Size 112.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6bf6531a7c79dd4698e567e9b0f66da78cc43bff285fc64773d8f625a8f407ed
BLAKE2b-256 checksum
How to use checksums
0773722f56a5d4187b4782504917f2848c0692da26b0ab94882347369f09e58d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/2.7.15

Release files / sysl-0.3.0-py2-none-any.whl

Download URL sysl-0.3.0-py2-none-any.whl
Size 127.7 kB
Tags Python 2
SHA-256 checksum
How to use checksums
1bae78a6a9379aac2bb7530e370b36e3a88c17593a8b748335eb64899bed1f86
BLAKE2b-256 checksum
How to use checksums
2e81560e2e4986b8f78c09fe1d8206a4b9c580fc16314503718c8d04bef6bf1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/2.7.15

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.1

1 release file

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page