(translator, tree, parent_translator, code_key=None, filter_num=None, extractors=None, vars=None, vartypes=None, left_join=False, optimize=None)
| 247 | # the translator we take from the stack may be different from the translator that we pushed above |
| 248 | |
| 249 | def init(translator, tree, parent_translator, code_key=None, filter_num=None, extractors=None, vars=None, vartypes=None, left_join=False, optimize=None): |
| 250 | this = translator |
| 251 | assert isinstance(tree, ast.GeneratorExp), tree |
| 252 | translator.can_be_cached = True |
| 253 | translator.parent = parent_translator |
| 254 | translator.injected = False |
| 255 | if parent_translator is None: |
| 256 | translator.root_translator = translator |
| 257 | translator.database = None |
| 258 | translator.sqlquery = SqlQuery(translator, left_join=left_join) |
| 259 | assert code_key is not None and filter_num is not None |
| 260 | translator.code_key = translator.original_code_key = code_key |
| 261 | translator.filter_num = translator.original_filter_num = filter_num |
| 262 | else: |
| 263 | translator.root_translator = parent_translator.root_translator |
| 264 | translator.database = parent_translator.database |
| 265 | translator.sqlquery = SqlQuery(translator, parent_translator.sqlquery, left_join=left_join) |
| 266 | assert code_key is None and filter_num is None |
| 267 | translator.code_key = parent_translator.code_key |
| 268 | translator.filter_num = parent_translator.filter_num |
| 269 | translator.original_code_key = translator.original_filter_num = None |
| 270 | translator.extractors = extractors |
| 271 | translator.vars = vars |
| 272 | translator.vartypes = vartypes |
| 273 | translator.namespace_stack = [{}] if not parent_translator else [ parent_translator.namespace.copy() ] |
| 274 | translator.func_extractors_map = {} |
| 275 | translator.fixed_param_values = {} |
| 276 | translator.func_vartypes = {} |
| 277 | translator.left_join = left_join |
| 278 | translator.optimize = optimize |
| 279 | translator.from_optimized = False |
| 280 | translator.optimization_failed = False |
| 281 | translator.distinct = False |
| 282 | translator.conditions = translator.sqlquery.conditions |
| 283 | translator.having_conditions = [] |
| 284 | translator.order = [] |
| 285 | translator.limit = translator.offset = None |
| 286 | translator.inside_order_by = False |
| 287 | translator.aggregated = False if not optimize else True |
| 288 | translator.hint_join = False |
| 289 | translator.query_result_is_cacheable = True |
| 290 | translator.aggregated_subquery_paths = set() |
| 291 | for i, generator in enumerate(tree.generators): |
| 292 | target = generator.target |
| 293 | if isinstance(target, ast.Tuple): |
| 294 | ass_names = tuple(target.elts) |
| 295 | elif isinstance(target, ast.Name): |
| 296 | ass_names = (target,) |
| 297 | else: |
| 298 | throw(NotImplementedError, ast2src(target)) |
| 299 | |
| 300 | for ass_name in ass_names: |
| 301 | if not isinstance(ass_name, ast.Name): |
| 302 | throw(NotImplementedError, ast2src(ass_name)) |
| 303 | if not isinstance(ass_name.ctx, ast.Store): |
| 304 | throw(TypeError, ast2src(ass_name)) |
| 305 | |
| 306 | names = tuple(ass_name.id for ass_name in ass_names) |
no test coverage detected