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, 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
.
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
-
- HTTP
-
- auto-stubs for all functions
-
- state-aware event queueing
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file lummao-0.4.0.tar.gz
.
File metadata
- Download URL: lummao-0.4.0.tar.gz
- Upload date:
- Size: 236.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8e7f9821a7fc3574fc17e405ae0e23e9f9fd7f44c3be50ba73492cc554b996f |
|
MD5 | 17f7aae1cd64ef502d4fb73782e52326 |
|
BLAKE2b-256 | db4248a18bb2a1119bb4857bbab260e1f460fbb20065f022db5cf358032b3ce4 |
File details
Details for the file lummao-0.4.0-cp38-abi3-win_amd64.whl
.
File metadata
- Download URL: lummao-0.4.0-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 190.3 kB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c4290c128e87949595aacd530e765a0e9caa0f4034c73e408f31dcf6e969b74 |
|
MD5 | b92ed47fee80977219e9ca3fcaa4055a |
|
BLAKE2b-256 | b38c1747382d739187a80d2e7c114ac4636324e9c66d4d47ddb26aa67c57ce13 |
File details
Details for the file lummao-0.4.0-cp38-abi3-manylinux_2_24_x86_64.whl
.
File metadata
- Download URL: lummao-0.4.0-cp38-abi3-manylinux_2_24_x86_64.whl
- Upload date:
- Size: 3.5 MB
- Tags: CPython 3.8+, manylinux: glibc 2.24+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d431b2f31848d9e36c9ed189b437082d5861d389112fa6b368066bba760827cc |
|
MD5 | 25295742442812a3998f834caa16c7e6 |
|
BLAKE2b-256 | 3eaf197bd633be06c642c6c3f75677b56c6389f20d0a70c0197cce787aec9e3f |
File details
Details for the file lummao-0.4.0-cp38-abi3-macosx_11_0_x86_64.whl
.
File metadata
- Download URL: lummao-0.4.0-cp38-abi3-macosx_11_0_x86_64.whl
- Upload date:
- Size: 234.8 kB
- Tags: CPython 3.8+, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d0fbd408379f62588b85fe8693424e59d22ec2609259a2e1c57ae2ce6b5ebf0 |
|
MD5 | aa103b3ffa0eddfbe1dc6a130a3e21e1 |
|
BLAKE2b-256 | ebddd08ffedfa81f2cd4d92c49a96f9ead3b46feebe2fbcbe08dd4b0b1d707bc |