First notebook¶
Links: notebook
, html, PDF
, python
, slides, GitHub
Short examples on some pieces of the modules.
from jyquickhelper import add_notebook_menu
add_notebook_menu()
CodeNodeVisitor¶
import ast
import inspect
from pysqllike.translation.node_visitor_translator import CodeNodeVisitor
def myjob(input):
iter = input.select (input.age, input.nom, age2 = input.age2*input.age2)
wher = iter.where( (iter.age > 60).Or(iter.age < 25))
return wher
code = inspect.getsource(myjob)
node = ast.parse(code)
v = CodeNodeVisitor()
v.visit(node)
for r in v.Rows :
print("{0}{1}: {2}".format(" " * r["indent"], r["type"], r["str"]))
Module:
FunctionDef: myjob
arguments:
arg: input
Assign:
Name: iter
Call: select
Attribute: input.select
Attribute: input.age
Attribute: input.nom
keyword: age2
BinOp:
Attribute: input.age2
Mult:
Attribute: input.age2
Assign:
Name: wher
Call: where
Attribute: iter.where
Call: Or
Attribute: Or
Compare:
Attribute: iter.age
Gt:
Num: 60
Compare:
Attribute: iter.age
Lt:
Num: 25
Return:
Name: wher
Translate into Python¶
from pysqllike.translation.translation_to_python import Translate2Python
trans = Translate2Python(myjob)
code = trans.Code()
print(code)
def myjob(input):
iter = [ ]
for row in input:
_age=row['age']
_nom=row['nom']
_age2=row['age2']
newr = {
'age':_age,
'nom':_nom,
'age2':_age2*_age2,
}
iter.append(newr)
wher = [ ]
for row in iter:
_age=row['age']
_exp=(_age>60) or (_age<25)
if _exp: wher.append(row)
return wher