Quick Start¶
After the installation is complete, we can run some simple examples. This page will show you this.
Simple Translation¶
A simplest translation can be processed with the code below.
1 2 3 4 5 6 7 8 9 | from potc import transobj if __name__ == '__main__': print("transobj(1):", transobj(1)) print("transobj([1, 2, 'sdkfj\u0123']):", transobj([1, 2, 'sdkfj\u0123'])) print('empty set:', transobj(set())) print('1-lengthened tuple:', transobj((1,))) |
The output result should be
1 2 3 4 | transobj(1): 1 transobj([1, 2, 'sdkfjģ']): [1, 2, 'sdkfjģ'] empty set: set() 1-lengthened tuple: (1, ) |
Most of the primitive data types supported by python can be turned back to runnable source code with potc
.
Scriptable Translation¶
If we need to translate multiple values, and dump the translation result to a runnable .py
script, we can do like this
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import math from typing import Callable, Dict, List import numpy as np from potc import transvars if __name__ == '__main__': _code = transvars({ 'complex_array': [ 1, 1.5, math.e, object(), float('nan'), float('+inf'), float('-inf'), 'str', None, {1, 2, 't' * 30}, { 1: 2, 'c': 3, 'g': lambda x: x ** 2, 't': dict(c=print, z=2), }, {}, frozenset({1, 2, }), max, min, NotImplemented, range(10), 7 + 8.0j, ], 'vbytes_': b'klsdjflkds\\\x00', 'empty_str': '', 'ba': bytearray(b'a' * 20), 'long_list': [123, {'1', b'klsdjf'}] * 10, 'np_object': np.array([[1, 2, ], [3, 4]]), 'np_module': np, 'typing_': Callable[[int, str], Dict[str, List[int]]], }, reformat='pep8') # auto reformat the code print(_code) |
The output result (as well as the dumped script) should be
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import math from builtins import frozenset, object from typing import _GenericAlias import numpy from numpy import ndarray from potc.supports import function, typed_object __all__ = [ 'ba', 'complex_array', 'empty_str', 'long_list', 'np_module', 'np_object', 'typing_', 'vbytes_' ] ba = bytearray(b'aaaaaaaaaaaaaaaaaaaa') complex_array = [ 1, 1.5, math.e, typed_object( object, b'x\x9ck`NN\xc9\xcc\xc9\xd1\x8b\x07\x91\\\xf19\xf9\x89)\xf1%\x95\x05\xa9\\\x85\x0c\x11l\x0c\x0c\x0c\xf9IY\xa9\xc9%\x85\x8c\xad\x85LA\x85\xcc\x9a\x8d\x85,z\x00\xb3Q\x0f\xb5' ), math.nan, +math.inf, -math.inf, 'str', None, {1, 2, 'tttttttttttttttttttttttttttttt'}, { 1: 2, 'c': 3, 'g': function( '<lambda>', typed_object( _GenericAlias, b"x\x9ck`N\x8e\xcf/H-J,\xc9/\xe2JO-\xc9,I\xcd\xe5*dH.\xa9,\xc8\xccK\xe7rN\xcc\xc9IL\xcaI\xe5*d\x8c-d\x82\x89:\xe6Ur\x152'f0\xb7\x15\xb2\xb4\x15\xb2\x06\x15\xb2\xe9\x01\x00\x9c\x00\x17\xf2" ), b"x\x9cm\x90KK\xc3@\x14\x85'\xad\xda\x18\x1f\xad\xf8'\xdaM\xa6\x8f\xf4\x05\xe2&\xcb@\x16u\x93\xdde\xe6\xce\x94\x06\x93LofR-Xpc\x7f\xb7\xa9k\x17\xdf\xe1\xc0\x81s\xe0|wQ\xe5E\x11\xc2E\x03\xc0Z\x0b\xa7a\xdbT\xe8rS\x05\xc4\x86\xff\xe5h\x94\x0e\xc8\x1b&^\xc2Z:I\x1c\xfb_Ly\xcf\xec\x8dQ'M:g\xea\x8e2\x8f1\xf6IW?t\x9d\xedZ\xcb]\xb9\xbf0Y\x1c\xd7\x87h\xf9\xc1#5\xc1h&p\x16m\xf5X\xa0\\N\xe5b\xba\x8c\xc6+\x19\xad\xe7\x93\xd5|\x8c+\x94\xd3\x99\xe6\xca\xa0\xe5\xd645j\xee\x1ag\xea\\\x14\x96S\x93\xe3;X'j\xc7\x0f\xa2\xb6\xa1\xd2\xa5\t\xf7G\xba\xc9\xfcv\xee\xa5\x10\xa5T\xe2\x95z\xc9 f\xe4\x8fF\x8en7\x14 \x80l\xf2\xc2\xe5\x15@\x00P\x8a?\xb3\xeb\xa5\xa9\xa3\xbb\r\xdd\x9f\xe8\xe1D\x8fY\xbf\xad\x00\x10Ue\x9c\xb8\\a\x01\xa8\x7f\xa2\x81=\xd3\x93\x0c\x7f\x01V\x16_K" ), 't': { 'c': print, 'z': 2 } }, {}, frozenset({1, 2}), max, min, NotImplemented, range(10), (7 + 8j) ] empty_str = '' long_list = [ 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'}, 123, {'1', b'klsdjf'} ] np_module = numpy np_object = typed_object( ndarray, b"x\x9c-\x8b\xb9\x12\x820\x18\x84s\xe0\x15\xcfG\xb0\xa4JmaGgfRP\xd1e0\xa4`\x86\xeb\x8f\xa1\xa0\xb3Q\xe4\xa9\x15$[\xec7\xb3\xc7\x93\xea,/\n\xae&gJ[\x93:\xa3Rk\xd3\x8e\x01\nu\xd5\x96M\xc7um\r/\xdb\xc2\xe5s\xa3\xac\xd1u\xf5p\xb6\xd5\x8e\x01\x9eW\xac\xca\xfc\x8f\x08\xf4\x02\x1a\xe1;\x04=,B\x81\x05\x11\xe4\rK\xbf\xcb\\\xd7\x18\x06\xab\x84 \x84\xf2\x0b\xac\x87O\x0f\x9b\x18X(h\x82\xc7\xec\n[)\xe5\xed;\xeao\x029\xd8\xdd\x87\xe8<\x95\x93\x88'\xf5\x0c<a\xef\xe0 \x1d\x1cc8\xf1\x1f\x14\xb8?\xa9" ) typing_ = typed_object( _GenericAlias, b'x\x9cE\xcc\xbf\x0e\x820\x18\x04\xf0*\x8a\xf2\xf9__\xc2\x89\x97\xd0\xd1\xa9\x93\x8bijih\x93\n\x1c|\x8b\x9b\x0b}n1&\xba\xdc\xf0\xbb\xcb\xbd\x12\xa3\xea\xc6\xb6\x9a\xeb\x96J\xcb\x9e\xed\x83 \x0c?\x1b_\x95t\xd2!\xe8{\xb0\x84\xd1\r\xe3\xa3)|\x08\xb9\xfa$\xa9P\xebB\r\xbb\xa1L\xae\x89\x10\xc2W\x8cI\x8f\xa9D\xea\xbe\xd2q\x8bY\x8f\xb9Df\xdd\xef\xf4\xec\r\x13\xc8e\x7f\xba\xf8n\xa0\x85K#\x96\x12\xab\x88u\xc4Fb\x1b\xb1\x8b\xd8K\x1c\xf27(\xf14\xe9' ) vbytes_ = b'klsdjflkds\\\x00' |
It is runnable, you can take a try.