From ec15761d5b7740acfab7158ea74b0343318d60c1 Mon Sep 17 00:00:00 2001 From: lojack5 <1458329+lojack5@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:34:08 -0600 Subject: [PATCH] Better generated global variables Use the more generic type rather than a literal type. Before, a type-checker would infer an int defined this way as `Literal[0]` vs the more correctly generic `int` for example. --- etgtools/pi_generator.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/etgtools/pi_generator.py b/etgtools/pi_generator.py index d9d965af..4ca49cec 100644 --- a/etgtools/pi_generator.py +++ b/etgtools/pi_generator.py @@ -236,22 +236,16 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix): if globalVar.ignored or piIgnored(globalVar): return name = globalVar.pyName or globalVar.name + valTyp = 'Any' if guessTypeInt(globalVar): - valTyp = '0' + valTyp = 'int' elif guessTypeFloat(globalVar): - valTyp = '0.0' + valTyp = 'float' elif guessTypeStr(globalVar): - valTyp = '""' - else: - valTyp = globalVar.type - valTyp = valTyp.replace('const ', '') - valTyp = valTyp.replace('*', '') - valTyp = valTyp.replace('&', '') - valTyp = valTyp.replace(' ', '') - valTyp = self.fixWxPrefix(valTyp) - valTyp += '()' - - stream.write('%s = %s\n' % (name, valTyp)) + valTyp = 'str' + elif globalVar.type: + valTyp = self.cleanType(globalVar.type) or valTyp + stream.write(f'{name}: {valTyp}\n') #----------------------------------------------------------------------- def generateDefine(self, define, stream): @@ -259,10 +253,11 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix): if define.ignored or piIgnored(define): return # we're assuming that all #defines that are not ignored are integer or string values + name = define.pyName or define.name if '"' in define.value: - stream.write('%s = ""\n' % (define.pyName or define.name)) + stream.write(f'{name}: str\n') else: - stream.write('%s = 0\n' % (define.pyName or define.name)) + stream.write(f'{name}: int\n') #----------------------------------------------------------------------- def generateTypedef(self, typedef, stream, indent=''):