This legacy web site is no longer updated but will remain online for the foreseeable future. UUhistle is not being actively supported or developed. Successor systems include Jsvee and Kelmu.
Supported Python Language Features
This page documents which features of the Python language UUhistle supports as of February 28th, 2012 (UUhistle v0.6.1).
If you use any of the entirely unsupported features (marked in red below) in a program, UUhistle shows an error message and won't run your program. When something has limited support (marked in yellow), you need to be careful not to only use the language feature in the limited fashion — UUhistle won't warn you and may behave unexpectedly otherwise!
Name | Status | Example | Limitations |
---|---|---|---|
Assertion | Not supported | assert a == 3 |
|
Assignment | Limited support | a = 3 |
The left-hand side must contain only one destination and cannot contain any calls. Chained assignments not supported. |
Built-in types | Limited support | set.add(x) |
See Other Limitations below |
Calls | Limited support | foo(2, 3) |
Named parameters are not supported. |
Class definition | Limited support | class A: |
Code within classes but outside of method definitions is not supported. There are known issues with class redefinitions. |
Comparison | Limited support | 2 < 3 |
Chained comparisons like 2 < 3 < 4 are not supported. |
Conditional expression | Not supported | 2 if a < b else 3 |
|
Control flow statements | Supported | break |
|
Delete | Not supported | del a |
|
Dictionary | Supported | {'a' : 3} |
|
Ellipsis | Not supported | a[1, ..., 1] |
|
For | Supported | for i in range(4): |
|
Function/method definition | Limited support | def foo(a, b): |
Varargs (*) and kwargs (**) are not supported. Functions can be defined only at the module level. Class and static methods are not supported. There are known issues with function/method redefinitions. |
Generator expression | Not supported | foo(x for x in range(4)) |
|
Global variables | Not supported | global a |
|
If | Supported | if a < b: |
|
Import | Limited support | import math |
Only functions from built-in modules can be imported. See also Other Limitations below. |
Indexing | Supported | a[3] |
|
I/O | Limited support | print a, b |
Trailing commas not allowed in print . I/O does not work properly within 'hidden code' built into an exercise
in a course config file. See Other Limitations below for more on I/O. |
Inheritance | Not supported | class Sub(Super): |
|
Lambda expression | Not supported | lambda a: a ** 2 |
|
List | Supported | [1, 2, 3] |
|
List comprehensions | Not supported | [x for x in range(3)] |
|
Pass | Supported | pass |
|
Raise | Limited support | raise IOError |
Does not currently work without an exception as argument. |
Return | Supported | return 5 |
|
Slicing | Supported | a[2 : 5] |
|
Threads | Not supported | Thread(...) | |
Try-except | Limited support | try: |
Only the message field of caught builtin exceptions is accessible. |
Tuple | Supported | (2, 3) |
|
While | Supported | while a < 4: |
|
With | Not supported | with |
|
Yield | Not supported | yield 3 |
Other Limitations
UUhistle supports only following built-in types: bool
, dict
,
float
, int
, list
, long
, str
,
tuple
and set
. Objects of other built-in types are
shown as empty class instances in the heap; their internal structure is not shown at all.
You can not use methods of built-in classes other than those listed above. For instance, you cannot
call the close
method for a file
object.
For UUhistle to work as it should — allowing the user to undo and redo execution steps at will — don't use any file or network operations or other streams. If UUhistle fails to serialize the program's state at each step into its undo buffer, undoing steps has undocumented and probably undesirable behavior.