Добавить executor/handlers/state.py
Test Actions / Builder (push) Failing after 7s

This commit is contained in:
2026-03-21 00:52:48 +03:00
parent dfa0c43834
commit 5b3dd0ed5d
+104
View File
@@ -0,0 +1,104 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
from uuid import uuid4
def closure_include(name):
def closure_filter(closure):
return closure['child']==name
return closure_filter
def closure_exclude(name):
def closure_filter(closure):
return closure['child']!=name
return closure_filter
def scope_addition(context, parent = None):
name = str(uuid4())
context.scopes[name] = {}
if parent:
context.closures.append({
'parent': parent,
'child': name
})
else:
context.closures.append({
'parent': context.current,
'child': name
})
return name
# def scope_del(context, name):
# closures = []
# for item in context.closures:
# if item['child'] != name:
# closures.append(item)
# context.closures = closures
# del context.scopes[name]
def scope_del(context, name):
if name in context.scopes:
context.closures = list(
filter(
closure_exclude,
context.closures
)
)
del context.scopes[name]
return
raise Exception('Область видимости {} не найдена'.format(name))
def variable_addition(context, name, value = None):
current = context.scopes[context.current]
if name in current:
raise Exception('Double declaration of the variable %s' % name)
current[name] = value
def variable_delete(context, name):
current = context.scopes[context.current]
if name in current:
del current[name]
raise Exception('Переменная {} не найдена'.format(name))
def variable_exist(context, name):
current = context.scopes[context.current]
return name in current
def variable_get(context, name):
scope = context.scopes[context.current]
if name in scope:
result = scope[name]
return result
stack = []
if context.current != 'root':
stack.append(context.current)
while len(stack) > 0:
scope_name = stack.pop()
closures = list(
filter(
closure_include(scope_name),
context.closures
)
)
for closure in closures:
stack.append(closure['parent'])
scope = context.scopes[scope_name]
if name in scope:
result = scope[name]
return result
raise Exception('Переменная {} не найдена'.format(name))
def variable_set(context, name, value):
current = context.scopes[context.current]
if name in current:
current[name] = value
return
raise Exception('Переменная {} не найдена'.format(name))