Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb493626

Browse files
committed
Fixes toml reader script
1 parent9d4fcfc commitb493626

File tree

2 files changed

+98
-23
lines changed

2 files changed

+98
-23
lines changed

‎builder/toml_reader.py‎

Lines changed: 96 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
importos
22

33
try:
4-
importtomlibastoml
4+
importtomllibastoml
55
exceptImportError:
66
try:
77
importtoml
@@ -15,6 +15,10 @@
1515
)
1616

1717

18+
used_imports= []
19+
global_variable_names= []
20+
21+
1822
classTOMLMeta(type):
1923

2024
def__call__(cls,name,parent=None,**kwargs):
@@ -36,25 +40,27 @@ def __call__(cls, name, parent=None, **kwargs):
3640
classTOMLObject(metaclass=TOMLMeta):
3741

3842
def__init__(self,name,parent=None,**kwargs):
39-
4043
ifparentisnotNoneandparent.name=='MCU':
4144
self.build_args=kwargs
45+
self.mcu=name
46+
47+
paren=parent.parent
48+
whileparen.parentisnotNone:
49+
paren=parent.parent
50+
51+
paren.mcu_obj=TOMLmcu(self)
52+
else:
53+
self.mcu=None
4254

55+
self.mcu_obj=None
4356
self.name=name
4457
self.parent=parent
4558
self.__kwargs=kwargs
4659
self.__children= []
4760
self.imports= []
48-
self.mcu=None
4961

5062
defadd_child(self,child):
51-
ifself.name=='MCU':
52-
self.__dict__.update(child.__dict__)
53-
self.board=child.name
54-
self.name='MCU'
55-
elifself.parentisNoneandchild.name=='MCU':
56-
self.mcu=TOMLmcu(child)
57-
else:
63+
ifchild.name!='MCU':
5864
self.__children.append(child)
5965

6066
def__getattr__(self,item):
@@ -74,9 +80,21 @@ def fqn(self):
7480

7581
returnself.name+' = '+self.parent.fqn
7682

83+
ifself.name=='RGBDisplay':
84+
return'rgb_display.RGBDisplay'
85+
86+
ifself.name=='SDLDisplay':
87+
return'sdl_display.SDLDisplay'
88+
89+
ifself.name=='SDLPointer':
90+
return'sdl_pointer.SDLPointer'
91+
7792
ifself.name=='I2C':
7893
return'i2c.I2C'
7994

95+
ifself.name=='Spi3Wire':
96+
return'spi3wire.Spi3Wire'
97+
8098
ifself.name=='SPI':
8199
return'machine.SPI'
82100

@@ -145,16 +163,17 @@ def constants(self):
145163

146164
def__str__(self):
147165
ifself.parentisNone:
148-
var_names=self.var_names
166+
global_variable_names.extend(self.var_names)
149167

150168
output= []
151169
output.extend(self.constants)
152170

153171
forchildinself.__children:
154-
ifchild.namenotinvar_names:
172+
ifchild.namenotinglobal_variable_names:
155173
module=child.fqn.split('.')[0]
156-
ifmodulenotinself.imports:
174+
ifmodulenotinself.importsandmodulenotinused_imports:
157175
self.imports.append(module)
176+
used_imports.append(module)
158177
output.extend(['',f'import{module}',''])
159178

160179
output.append(str(child))
@@ -178,16 +197,72 @@ def __str__(self):
178197
iflen(self.__kwargs)==1:
179198
key=list(self.__kwargs.keys())[0]
180199
ifkey=='params':
200+
output=''
201+
forparaminself.__kwargs[key]:
202+
ifisinstance(param,str)and'.'inparam:
203+
mod=param.split('.',1)[0]
204+
if (
205+
modnotinused_importsand
206+
modnotinglobal_variable_namesand (
207+
modindisplay_driversor
208+
modinindev_driversor
209+
modinio_expanders
210+
)
211+
):
212+
output+=f'import{mod}\n\n'
213+
used_imports.append(mod)
214+
181215
params=', '.join(str(itm)foritminself.__kwargs[key])
182-
returnf'{fqn}({params})'
183-
elifkey=='value':
184-
returnf'{fqn} = '+str(self.__kwargs[key])
216+
output+=f'{fqn}({params})'
217+
returnoutput
185218
else:
186-
returnf'{fqn}({key}={str(self.__kwargs[key])})'
219+
output=''
220+
if (
221+
isinstance(self.__kwargs[key],str)and
222+
'.'inself.__kwargs[key]
223+
):
224+
mod=self.__kwargs[key].split('.',1)[0]
225+
if (
226+
modnotinused_importsand
227+
modnotinglobal_variable_namesand (
228+
modindisplay_driversor
229+
modinindev_driversor
230+
modinio_expanders
231+
)
232+
):
233+
output+=f'import{mod}\n\n'
234+
used_imports.append(mod)
235+
236+
ifkey=='value':
237+
output+=f'{fqn} = '+str(self.__kwargs[key])
238+
else:
239+
output+=f'{fqn}({key}={str(self.__kwargs[key])})'
240+
241+
returnoutput
187242
else:
243+
output= []
244+
245+
forvinself.__kwargs.values():
246+
ifnot (isinstance(v,str)and'.'inv):
247+
continue
248+
249+
mod=v.split('.',1)[0]
250+
if (
251+
modnotinused_importsand
252+
modnotinglobal_variable_namesand (
253+
modindisplay_driversor
254+
modinindev_driversor
255+
modinio_expanders
256+
)
257+
):
258+
output.append(f'import{mod}')
259+
used_imports.append(mod)
260+
ifoutput:
261+
output.append('')
262+
188263
params=',\n'.join(f'{k}={str(v)}'fork,vinself.__kwargs.items()ifnotisinstance(v,dict))
189264
ifparams:
190-
output= [f'{fqn}(\n{params}\n)','']
265+
output.append(f'{fqn}(\n{params}\n)\n')
191266
else:
192267
raiseRuntimeError
193268

@@ -203,7 +278,7 @@ def __str__(self):
203278
classTOMLmcu:
204279

205280
def__init__(self,mcu):
206-
name=mcu.board
281+
name=mcu.mcu
207282
build_args=mcu.build_args
208283

209284
command= [name]
@@ -259,10 +334,10 @@ def run(toml_path, output_file):
259334
indevs= [f'INDEV={item}'foritemintoml_obj.importsifiteminindev_drivers]
260335
expanders= [f'EXPANDER={item}'foritemintoml_obj.importsifiteminio_expanders]
261336

262-
iftoml_obj.mcuisNone:
337+
iftoml_obj.mcu_objisNone:
263338
build_command= []
264339
else:
265-
build_command=toml_obj.build_command
340+
build_command=toml_obj.mcu_obj.build_command
266341

267342
fordisplayindisplays[:]:
268343
ifdisplaynotinbuild_command:

‎custom_board_and_toml_examples/toml_example/example_build_toml.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ data_bus = "display_bus"
4444
display_width =320
4545
display_height =480
4646
backlight_pin =45
47-
color_byte_order ="st7789.BYTE_ORDER_BGR"
47+
color_byte_order ="st7796.BYTE_ORDER_BGR"
4848
color_space ="lv.COLOR_FORMAT.RGB565"
4949
rgb565_byte_swap =true
5050

51-
[ST7796.display.init]
51+
[display.init]
5252
params = []
5353

5454
[FT6x36.indev]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp