Skip to content

Commit 929e961

Browse files
authored
Enhance middleware function argument handling
Update middleware handling to support varying argument counts.
1 parent 38dac41 commit 929e961

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

builder/frameworks/arduino.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -957,8 +957,21 @@ def custom_object_wrapper(node_arg, **kwargs):
957957
env.Object = custom_object_wrapper
958958

959959
# Call user middleware - it will call our wrapper
960-
for middleware_func, _ in existing_middlewares:
961-
middleware_func(env, node)
960+
for middleware_func, pattern in existing_middlewares:
961+
# Mirror PlatformIO: callbacks may be def f(node) or def f(env, node)
962+
try:
963+
argcount = middleware_func.__code__.co_argcount
964+
except AttributeError:
965+
argcount = 1
966+
if argcount == 2:
967+
result = middleware_func(env, node)
968+
else:
969+
result = middleware_func(node)
970+
# Honor return value: None drops the node
971+
if result is None:
972+
return None
973+
if result is not node:
974+
node = result
962975

963976
# Restore original env.Object
964977
env.Object = original_object

0 commit comments

Comments
 (0)