Skip to main content

Toolkit for compiling and executing the Linden Scripting Language as Python

Project description

Lummao

Lummao is a toolkit for compiling and executing the Linden Scripting Language as Python. It aims to ease testing of LSL code by leveraging Python's existing ecosystem for debugging and testing. Think of it as the less opinionated, stupider cousin of LSLForge's unit testing framework.

The runtime is largely handled by the excellent implementation of LSL's basic operations and library functions from Sei Lisa's LSL-PyOptimizer. See vendor/lslopt for Lummao's vendored copy of LSL-Pyoptimizer.

To see an example input script and its Python output, see the test_resources directory.

Setup

pip install --upgrade pip
pip install lummao

From source

pip install -e .

How

For a real-world example of local LSL testing with Lummao, see https://github.com/SaladDais/SLGraphPather or https://github.com/SaladDais/SickJoke's tests and test coverage reporting.

Along with the python API, a helper lummao script is provided that takes in an LSL file and outputs a python file. It can be invoked like lummao input.lsl output.py.

If you just want to run an LSL script from the command-line, the shellsl command will be installed alongside lummao, and can be run from the commandline like so:

$ shellsl tests/test_resources/lsl_conformance.lsl
All tests passed

Why

If you've ever written a sufficiently complicated system in LSL, you know how annoying it is to debug your scripts or be sure if they're even correct. Clearly the sanest way to bring sanity to your workflow is to convert your LSL scripts to Python, so you can mock LSL library functions and use Python debuggers. Hence, the name "Lummao".

TODO

  • Symbol shadowing behavior is not correct. Python has very different shadowing rules.
  • Provide mock helpers for:
    • inter-script communication
    • auto-stubs for all functions

License

GPLv3

Licensing Clarifications

The output of the compiler necessarily links against the GPL-licensed runtime code from LSL-PyOptimizer for functionality, and LSL-PyOptimizer does not provide a library exception in its license. You should assume that any LSL converted to Python by the compiler and any testcases you write exercising them must also be distributable under the GPL.

In short: If or when you distribute your testcases, you must also allow distribution of their direct dependencies (your LSL scripts) under the terms of the GPL. This does not necessarily change the license of your LSL scripts themselves, or require consumers of your scripts to license their own scripts under the GPL. It is perfectly possible to have an otherwise MIT-licensed or proprietary library with a GPL-licensed test suite. No distribution of testcases == no requirement to distribute under the GPL.

Suggested reading to understand your rights and obligations under the GPL when using a GPL-licensed test suite:

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

lummao-0.5.1.tar.gz (238.8 kB view details)

Uploaded Source

Built Distributions

lummao-0.5.1-cp38-abi3-win_amd64.whl (193.6 kB view details)

Uploaded CPython 3.8+ Windows x86-64

lummao-0.5.1-cp38-abi3-manylinux_2_24_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.8+ manylinux: glibc 2.24+ x86-64

lummao-0.5.1-cp38-abi3-macosx_11_0_x86_64.whl (238.0 kB view details)

Uploaded CPython 3.8+ macOS 11.0+ x86-64

File details

Details for the file lummao-0.5.1.tar.gz.

File metadata

  • Download URL: lummao-0.5.1.tar.gz
  • Upload date:
  • Size: 238.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for lummao-0.5.1.tar.gz
Algorithm Hash digest
SHA256 69896b5e4689c94b9ee10ffbbeff967c62fc76d28d6b22c971984e4fe106c121
MD5 9b6f59cd6abe098ce5c4e9b0397efa8d
BLAKE2b-256 ffb5bc320cb93b6fefcf6d5fadc948251379eb3055dcb2ed2bcbe5f8d8d77a21

See more details on using hashes here.

File details

Details for the file lummao-0.5.1-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: lummao-0.5.1-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 193.6 kB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for lummao-0.5.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 12f04e2a5894ec3fcc7dd81267e70b00860600fd019947d45c1c52ad10b4634d
MD5 25f459eb6ec0275687edebf6da367b1b
BLAKE2b-256 d1b17646749f25c1e20a14c660b1a30f300bcdb1d47e0154b8bf74c4a9314986

See more details on using hashes here.

File details

Details for the file lummao-0.5.1-cp38-abi3-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for lummao-0.5.1-cp38-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 e76e53c31d3c43699aa995671166435189005c429138bc30f7ea56048f18cb64
MD5 a0332e8da09d1c5e5597903feb5ef790
BLAKE2b-256 da466c9eb913dc430859eea68b4f6591cf63a5da6f1c471e5abd6a5a9b242a61

See more details on using hashes here.

File details

Details for the file lummao-0.5.1-cp38-abi3-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lummao-0.5.1-cp38-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8aaddded71599c8b92248ef1a03d49f65f4fc0da558d2fe3b27a06434b249e11
MD5 50db816d17452b5b303b8d74f235f5b3
BLAKE2b-256 2f2592089f91f1e6724a8c8ea361e33d5bc8462cad10d8737e8e175c4fd1b392

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