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, 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


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.4.0.tar.gz (236.0 kB view details)

Uploaded Source

Built Distributions

lummao-0.4.0-cp38-abi3-win_amd64.whl (190.3 kB view details)

Uploaded CPython 3.8+ Windows x86-64

lummao-0.4.0-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.4.0-cp38-abi3-macosx_11_0_x86_64.whl (234.8 kB view details)

Uploaded CPython 3.8+ macOS 11.0+ x86-64

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

Hashes for lummao-0.4.0.tar.gz
Algorithm Hash digest
SHA256 e8e7f9821a7fc3574fc17e405ae0e23e9f9fd7f44c3be50ba73492cc554b996f
MD5 17f7aae1cd64ef502d4fb73782e52326
BLAKE2b-256 db4248a18bb2a1119bb4857bbab260e1f460fbb20065f022db5cf358032b3ce4

See more details on using hashes here.

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

Hashes for lummao-0.4.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3c4290c128e87949595aacd530e765a0e9caa0f4034c73e408f31dcf6e969b74
MD5 b92ed47fee80977219e9ca3fcaa4055a
BLAKE2b-256 b38c1747382d739187a80d2e7c114ac4636324e9c66d4d47ddb26aa67c57ce13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lummao-0.4.0-cp38-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 d431b2f31848d9e36c9ed189b437082d5861d389112fa6b368066bba760827cc
MD5 25295742442812a3998f834caa16c7e6
BLAKE2b-256 3eaf197bd633be06c642c6c3f75677b56c6389f20d0a70c0197cce787aec9e3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lummao-0.4.0-cp38-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 7d0fbd408379f62588b85fe8693424e59d22ec2609259a2e1c57ae2ce6b5ebf0
MD5 aa103b3ffa0eddfbe1dc6a130a3e21e1
BLAKE2b-256 ebddd08ffedfa81f2cd4d92c49a96f9ead3b46feebe2fbcbe08dd4b0b1d707bc

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