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 lummao

From source

How

For a real-world example, see https://github.com/SaladDais/SLGraphPather'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


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.1.4.post2.tar.gz (97.7 kB view details)

Uploaded Source

Built Distributions

lummao-0.1.4.post2-cp38-abi3-win_amd64.whl (158.2 kB view details)

Uploaded CPython 3.8+ Windows x86-64

lummao-0.1.4.post2-cp38-abi3-manylinux_2_24_x86_64.whl (2.2 MB view details)

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

lummao-0.1.4.post2-cp38-abi3-macosx_10_15_x86_64.whl (194.4 kB view details)

Uploaded CPython 3.8+ macOS 10.15+ x86-64

File details

Details for the file lummao-0.1.4.post2.tar.gz.

File metadata

  • Download URL: lummao-0.1.4.post2.tar.gz
  • Upload date:
  • Size: 97.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for lummao-0.1.4.post2.tar.gz
Algorithm Hash digest
SHA256 a4002aef8620471d696849a4faca34b4a5a105514ac9b2ff7252e9a1efaaf056
MD5 489ffea45dd082d049af4281533e20fe
BLAKE2b-256 aa3233187240b312bf8cf53666bd3fa6622c754093f3a268f14d2a9f2fae36ea

See more details on using hashes here.

File details

Details for the file lummao-0.1.4.post2-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for lummao-0.1.4.post2-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3a5473c85496c191537514f02751ffa88fdda1b829188517709a3c0f70b62bf2
MD5 cf5f59450dd1dfe5ed02a2be6f23da27
BLAKE2b-256 4e80850ab3f4c74f7e113224937a3be11809e550e9516c05f25fbf550b67c32a

See more details on using hashes here.

File details

Details for the file lummao-0.1.4.post2-cp38-abi3-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for lummao-0.1.4.post2-cp38-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 5df9de50a7a010c09ab85a03bce190d5dbc71df7f3880a9226ebaba76bcb253d
MD5 d1ac2360309ca19456f1739028c11e67
BLAKE2b-256 c2dc07f7e4e3e513de45be15a4b2eacd1b14c433ed39bc64f920393b73665c46

See more details on using hashes here.

File details

Details for the file lummao-0.1.4.post2-cp38-abi3-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for lummao-0.1.4.post2-cp38-abi3-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b34a2fe2e41803f1bfec9b470cfadd83952c41714609f9b1c83b939b1e9b0ad8
MD5 9a2144015604ee8908755187f1dea653
BLAKE2b-256 e42f8a960d75c4bf131ddbd16ebb0fa58f8d01804ec16ad2c2325808f3e0c272

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