Xirider / LiveCode

Real-time python variable evaluation
MIT License
14 stars 2 forks source link

LiveCode

LiveCode evaluates your python code while you type and displays variable values for each line.

demo gif

LiveCode is available for free on the vscode marketplace.

Usage

First, make sure you have python 3.5 or greater installed.

Open a python file and click on icon in the top bar to the right to open LiveCode. Click on the icon again to close LiveCode.

Or run LiveCode through the command search: control-shift-p

or use the shortcuts: control-shift-a (current doc) / control-shift-q (new doc)

Features

$save

If you want to avoid a section of code being executed in real-time (due to it being slow or calling external resources) you can use #\$save. For example:

def largest_prime_factor(n):
    i = 2
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
    return n

# this takes a looonnggg time to execute
result = largest_prime_factor(8008514751439999)

#$save
print("but now that i saved i am back to real-time execution")
import random
x = random.random()
#$save
print(x) # this number will not change when editing below the #$save line

Please note that #$save does not work with certain types, like generators.

$end

Use the #$end comment to indicate the end of the real-time code. Code after #$end will not be executed in real-time. This is useful if you have something specific you want to run without running the entire file along with it. For example:

x = calculate_all_digits_of_pi()

#$end

# I can inspect variables without rerunning calculate_all_digits_of_pi
# the shortcut is control-enter - the code block should flash yellow.
print(x) # 3.14......

# I can also temporarily change the state of variables
# note that control-enter will run all adjacent lines of code
x = math.floor(x)
print(x) # 3

# i only want to do this once I've determined that x is correct
upload_results_to_s3(x)

You can also use control-enter to run a block of code outside #$end.

Credits

This extension is based on a fork of the awesome AREPL VSCode extension from Almenon.