Skip to content

DaelonSuzuka/cyber-python

Repository files navigation

cyberlang - batteries included python bindings for cyber

license pypi version PyPI status discord

Built with cyberlang 0.3

Installation

pip install cyberlang

Usage

Simply create a CyberVM instance and evaluate a string:

from cyber import CyberVM

vm = CyberVM()
vm.eval("print 'hello world!'")

Want to capture printed output? Override the print function from Cyber's core module with a binding.

The decorator generates all the required wrappers and interfaces, and registers everything with Cyber's VM.

from cyber import CyberVM

vm = CyberVM()

@vm.function('core.print')
def _print(string: str):
    print(string)

vm.eval("print 'hello world!'")

Alternate techniques for creating callback functions:

# if no module, assume core
# same result as previous example
# this creates function "print2" in the "core" module
@cyber.function('print2')
def _print2(string: str):
    print(string)

# if no module, assume core
# if no function name, use existing function name
# this creates function "test" in the "core" module
@cyber.function
def test():
    print('core.test')

Or define multiple functions at once using this class-based syntax

# "core" already exists, so add a() and b() to it
class Core(cyber.module('core')):
    def a(self):
        print('core.test')
    def b(self):
        print('core.test2')

# create "new_module" and add c() and d() to it
@cyber.module('new_module')
class Module:
    def c(self):
        print('new_module.test')
    def d(self):
        print('new_module.test2')

# create module, implicitly named "NewModule" and add e() and f() to it
@cyber.module
class NewModule:
    def e(self):
        print('NewModule.test')
    def f(self):
        print('NewModule.test2')

Supporters

fubar - creator of the Cyber language

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published