From ae5a265ca18a4e08defb621bf4daea7903d9779a Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Wed, 2 May 2018 20:36:11 +0200 Subject: [PATCH] Fix unsupported async list comprehension in py3.5 --- telethon_generator/generators/tlobject.py | 25 ++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/telethon_generator/generators/tlobject.py b/telethon_generator/generators/tlobject.py index f133d392..63613c9f 100644 --- a/telethon_generator/generators/tlobject.py +++ b/telethon_generator/generators/tlobject.py @@ -239,14 +239,25 @@ def _write_resolve(tlobject, builder): ac = AUTO_CASTS.get(arg.type, None) if not ac: continue - if arg.is_vector: - builder.write('self.{0} = [{1} for _x in self.{0}]', - arg.name, ac.format('_x')) - else: - builder.write('self.{} = {}', arg.name, + + if arg.is_flag: + builder.writeln('if self.{}:', arg.name) + + if not arg.is_vector: + builder.writeln('self.{} = {}', arg.name, ac.format('self.' + arg.name)) - builder.writeln(' if self.{} else None'.format(arg.name) - if arg.is_flag else '') + else: + # Since the auto-cast might have await, we can't use that in + # Python 3.5's list comprehensions. Build the list manually. + builder.writeln('_tmp = []') + builder.writeln('for _x in self.{}:', arg.name) + builder.writeln('_tmp.append({})', ac.format('_x')) + builder.end_block() + builder.writeln('self.{} = _tmp', arg.name) + + if arg.is_flag: + builder.end_block() + builder.end_block()