Skip to main content

Scriptable is a sand-boxed scripting engine which can be used safely in an embedded environment.

Project description

Scriptable is a sand-boxed scripting engine which can be used safely in an embedded environment.

Its canonical abstract syntax tree model is designed to support various syntax forms. At the moment the typescript syntax as well as the hypothesis syntax (a typescript syntax subset used for logical reasoning) and the mustache syntax are supported.

The scripting engine forbids endless loops and has a recursion guard, which detects loops in a function call stack. In addition to that scriptable allows to define more detailed AST restrictions. At the moment following restrictions are supported:

  • max_precision # The max allowed number of digits in a number.
  • max_scale # The max allowed digits to the right of the decimal point in a number.
  • max_loops # The max allowed number of loop iterations.

Usage

TypescriptEngine

engine = TypescriptEngine.parse("""
   function fibonacci(n:number) {
      if (n == 0) return 0
      if (n == 1) return 1
      if (n == 2) return 1
      return fibonacci(n - 1) + fibonacci(n - 2)
   }
   
   fibonacci(8) // returns 21
""")
    
engine.execute()

HypothesisEngine

engine = HypothesisEngine.parse("x > 0")
engine.execute({"x": 1}) // returns True

MustacheEngine

engine = MustacheEngine.parse("text {{x}} text")
engine.execute({"x": 1}) // returns "text 1 text"

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

scriptable-0.1.8.tar.gz (99.2 kB view details)

Uploaded Source

File details

Details for the file scriptable-0.1.8.tar.gz.

File metadata

  • Download URL: scriptable-0.1.8.tar.gz
  • Upload date:
  • Size: 99.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.42.1 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.7.3

File hashes

Hashes for scriptable-0.1.8.tar.gz
Algorithm Hash digest
SHA256 6a4657d98b2e87a868103521160475aad78cdbcbdc49ace220c92c8e1a7eed08
MD5 1444317b287f80b6c5ad923833e95fe5
BLAKE2b-256 48572fa5d92041c31f5bdb240ab157eac4e649b0a96a39cd5ad517edae1df92b

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