aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/Udf/PythonGeneratorWithClosure.yql
blob: 87799cbf69dcf30ed6eb6cbf9e2bed03eec498c8 (plain) (blame)
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
(
(let config (DataSource 'config))
(let world (Configure! world config 'PureDataSource 'yt))

# prepare python udf
(let i64 (DataType 'Int64))
(let udfType (CallableType '() '((ListType i64)) '((ListType i64))))
(let udfScript (String '@@
def h(input):
    def gen():
        for x in input:
            yield long(x + 42)
    return gen
@@))
(let udf (ScriptUdf 'Python 'h udfType udfScript))

# call udf
(let result (Apply udf (AsList (Int64 '1) (Int64 '2) (Int64 '3))))

# output result with type
(let sink (DataSink 'result))
(let world (Write! world sink (Key) result '( '('type) )))

# finish
(return (Commit! world sink))
)