Skip to content

Commit 37b1cfc

Browse files
committed
Continue moving around the code
1 parent 739cdf9 commit 37b1cfc

File tree

1 file changed

+128
-121
lines changed

1 file changed

+128
-121
lines changed

src/redis_release/bht/tree.py

Lines changed: 128 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
"""
2+
This module contains tree initialization, larger branches creation
3+
and utility functions to run or inspect the tree.
4+
"""
5+
16
import asyncio
27
import logging
38
import os
@@ -50,125 +55,6 @@
5055
logger = logging.getLogger(__name__)
5156

5257

53-
class TreeInspector:
54-
"""Inspector for creating and inspecting behavior tree branches and PPAs."""
55-
56-
# List of available branch/PPA names
57-
AVAILABLE_NAMES = [
58-
"workflow_success",
59-
"workflow_completion",
60-
"find_workflow",
61-
"trigger_workflow",
62-
"identify_target_ref",
63-
"download_artifacts",
64-
"extract_artifact_result",
65-
"workflow_complete_branch",
66-
"workflow_with_result_branch",
67-
"publish_workflow_branch",
68-
"build_workflow_branch",
69-
"demo_sequence",
70-
"demo_selector",
71-
]
72-
73-
def __init__(self, release_tag: str):
74-
"""Initialize TreeInspector.
75-
76-
Args:
77-
release_tag: Release tag for creating mock ReleaseMeta
78-
"""
79-
self.release_tag = release_tag
80-
81-
def get_names(self) -> List[str]:
82-
"""Get list of available branch/PPA names.
83-
84-
Returns:
85-
List of available names that can be passed to create_by_name()
86-
"""
87-
return self.AVAILABLE_NAMES.copy()
88-
89-
def create_by_name(self, name: str) -> Union[Selector, Sequence, Behaviour]:
90-
"""Create a branch or PPA by name.
91-
92-
Args:
93-
name: Name of the branch or PPA to create
94-
95-
Returns:
96-
The created behavior tree branch or PPA
97-
98-
Raises:
99-
ValueError: If the name is not found in the available branches
100-
"""
101-
if name not in self.AVAILABLE_NAMES:
102-
available = ", ".join(self.get_names())
103-
raise ValueError(f"Unknown name '{name}'. Available options: {available}")
104-
105-
# Create mock objects for PPA/branch creation
106-
workflow = Workflow(workflow_file="test.yml", inputs={})
107-
package_meta = PackageMeta(repo="redis/redis", ref="main")
108-
release_meta = ReleaseMeta(tag=self.release_tag)
109-
github_client = GitHubClientAsync(token="dummy")
110-
package = Package(
111-
meta=package_meta,
112-
build=workflow,
113-
publish=Workflow(workflow_file="publish.yml", inputs={}),
114-
)
115-
log_prefix = "test"
116-
117-
# Create and return the requested branch/PPA
118-
if name == "workflow_success":
119-
return create_workflow_success_ppa(workflow, log_prefix)
120-
elif name == "workflow_completion":
121-
return create_workflow_completion_ppa(
122-
workflow, package_meta, github_client, log_prefix
123-
)
124-
elif name == "find_workflow":
125-
return create_find_workflow_by_uuid_ppa(
126-
workflow, package_meta, github_client, log_prefix
127-
)
128-
elif name == "trigger_workflow":
129-
return create_trigger_workflow_ppa(
130-
workflow, package_meta, release_meta, github_client, log_prefix
131-
)
132-
elif name == "identify_target_ref":
133-
return create_identify_target_ref_ppa(
134-
package_meta, release_meta, github_client, log_prefix
135-
)
136-
elif name == "download_artifacts":
137-
return create_download_artifacts_ppa(
138-
workflow, package_meta, github_client, log_prefix
139-
)
140-
elif name == "extract_artifact_result":
141-
return create_extract_artifact_result_ppa(
142-
"test-artifact", workflow, package_meta, github_client, log_prefix
143-
)
144-
elif name == "workflow_complete_branch":
145-
return create_workflow_complete_tree_branch(
146-
workflow, package_meta, release_meta, github_client, ""
147-
)
148-
elif name == "workflow_with_result_branch":
149-
return create_workflow_with_result_tree_branch(
150-
"artifact", workflow, package_meta, release_meta, github_client, ""
151-
)
152-
elif name == "publish_workflow_branch":
153-
return create_publish_workflow_tree_branch(
154-
workflow,
155-
workflow,
156-
package_meta,
157-
release_meta,
158-
workflow,
159-
github_client,
160-
"",
161-
)
162-
elif name == "build_workflow_branch":
163-
return create_build_workflow_tree_branch(
164-
package, release_meta, package, github_client, ""
165-
)
166-
elif name == "demo_sequence":
167-
return create_sequence_branch()
168-
else: # name == "demo_selector"
169-
return create_selector_branch()
170-
171-
17258
async def async_tick_tock(tree: BehaviourTree, cutoff: int = 100) -> None:
17359
"""Drive Behaviour tree using async event loop
17460
@@ -244,8 +130,10 @@ def initialize_tree_and_state(
244130
tree.add_post_tick_handler(lambda _: state_syncer.sync())
245131
tree.add_post_tick_handler(log_tree_state_with_markup)
246132

247-
yield (tree, state_syncer)
248-
print_state_table(state_syncer.state)
133+
try:
134+
yield (tree, state_syncer)
135+
finally:
136+
print_state_table(state_syncer.state)
249137

250138

251139
def log_tree_state_with_markup(tree: BehaviourTree) -> None:
@@ -536,6 +424,125 @@ def create_extract_result_tree_branch(
536424
return extract_artifact_result
537425

538426

427+
class TreeInspector:
428+
"""Inspector for creating and inspecting behavior tree branches and PPAs."""
429+
430+
# List of available branch/PPA names
431+
AVAILABLE_NAMES = [
432+
"workflow_success",
433+
"workflow_completion",
434+
"find_workflow",
435+
"trigger_workflow",
436+
"identify_target_ref",
437+
"download_artifacts",
438+
"extract_artifact_result",
439+
"workflow_complete_branch",
440+
"workflow_with_result_branch",
441+
"publish_workflow_branch",
442+
"build_workflow_branch",
443+
"demo_sequence",
444+
"demo_selector",
445+
]
446+
447+
def __init__(self, release_tag: str):
448+
"""Initialize TreeInspector.
449+
450+
Args:
451+
release_tag: Release tag for creating mock ReleaseMeta
452+
"""
453+
self.release_tag = release_tag
454+
455+
def get_names(self) -> List[str]:
456+
"""Get list of available branch/PPA names.
457+
458+
Returns:
459+
List of available names that can be passed to create_by_name()
460+
"""
461+
return self.AVAILABLE_NAMES.copy()
462+
463+
def create_by_name(self, name: str) -> Union[Selector, Sequence, Behaviour]:
464+
"""Create a branch or PPA by name.
465+
466+
Args:
467+
name: Name of the branch or PPA to create
468+
469+
Returns:
470+
The created behavior tree branch or PPA
471+
472+
Raises:
473+
ValueError: If the name is not found in the available branches
474+
"""
475+
if name not in self.AVAILABLE_NAMES:
476+
available = ", ".join(self.get_names())
477+
raise ValueError(f"Unknown name '{name}'. Available options: {available}")
478+
479+
# Create mock objects for PPA/branch creation
480+
workflow = Workflow(workflow_file="test.yml", inputs={})
481+
package_meta = PackageMeta(repo="redis/redis", ref="main")
482+
release_meta = ReleaseMeta(tag=self.release_tag)
483+
github_client = GitHubClientAsync(token="dummy")
484+
package = Package(
485+
meta=package_meta,
486+
build=workflow,
487+
publish=Workflow(workflow_file="publish.yml", inputs={}),
488+
)
489+
log_prefix = "test"
490+
491+
# Create and return the requested branch/PPA
492+
if name == "workflow_success":
493+
return create_workflow_success_ppa(workflow, log_prefix)
494+
elif name == "workflow_completion":
495+
return create_workflow_completion_ppa(
496+
workflow, package_meta, github_client, log_prefix
497+
)
498+
elif name == "find_workflow":
499+
return create_find_workflow_by_uuid_ppa(
500+
workflow, package_meta, github_client, log_prefix
501+
)
502+
elif name == "trigger_workflow":
503+
return create_trigger_workflow_ppa(
504+
workflow, package_meta, release_meta, github_client, log_prefix
505+
)
506+
elif name == "identify_target_ref":
507+
return create_identify_target_ref_ppa(
508+
package_meta, release_meta, github_client, log_prefix
509+
)
510+
elif name == "download_artifacts":
511+
return create_download_artifacts_ppa(
512+
workflow, package_meta, github_client, log_prefix
513+
)
514+
elif name == "extract_artifact_result":
515+
return create_extract_artifact_result_ppa(
516+
"test-artifact", workflow, package_meta, github_client, log_prefix
517+
)
518+
elif name == "workflow_complete_branch":
519+
return create_workflow_complete_tree_branch(
520+
workflow, package_meta, release_meta, github_client, ""
521+
)
522+
elif name == "workflow_with_result_branch":
523+
return create_workflow_with_result_tree_branch(
524+
"artifact", workflow, package_meta, release_meta, github_client, ""
525+
)
526+
elif name == "publish_workflow_branch":
527+
return create_publish_workflow_tree_branch(
528+
workflow,
529+
workflow,
530+
package_meta,
531+
release_meta,
532+
workflow,
533+
github_client,
534+
"",
535+
)
536+
elif name == "build_workflow_branch":
537+
return create_build_workflow_tree_branch(
538+
package, release_meta, package, github_client, ""
539+
)
540+
elif name == "demo_sequence":
541+
return create_sequence_branch()
542+
else: # name == "demo_selector"
543+
return create_selector_branch()
544+
545+
539546
### Demo ###
540547

541548

0 commit comments

Comments
 (0)