Skip to content

Create new node MultipleOutputs#61

Merged
VinyPinheiro merged 7 commits into
mainfrom
f/UPI-4030_new_node
Jun 11, 2026
Merged

Create new node MultipleOutputs#61
VinyPinheiro merged 7 commits into
mainfrom
f/UPI-4030_new_node

Conversation

@VinyPinheiro

@VinyPinheiro VinyPinheiro commented Jun 2, 2026

Copy link
Copy Markdown
Member
  • Novo nó dinâmico MultipleOutputs com kind = NodeKind.OUTPUT e inputs criados em runtime a partir de data.headers_map
  • run() publica em OUTPUT_REFERENCE_COLUMN um pd.Series de listas [{"key": k, "value": v}, ...], compatível com has_ended(), walk e RuleExecutor sem nenhuma alteração nesses componentes
  • Novo validator SingleTerminalNodeValidator que rejeita grafos com Output e MultipleOutputs coexistindo no mesmo flow
  • "MultipleOutputs" registrado no registry dinâmico e adicionado a EXCLUDED_NODE_TYPES

@VinyPinheiro VinyPinheiro self-assigned this Jun 2, 2026
@VinyPinheiro VinyPinheiro changed the title feat(UPI-4030): Create new node MultipleOutputs Create new node MultipleOutputs Jun 3, 2026
@VinyPinheiro VinyPinheiro marked this pull request as ready for review June 3, 2026 15:41
@VinyPinheiro VinyPinheiro requested review from a team and gabrielguarisa June 3, 2026 15:41
@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

coverage

Coverage Report
FileStmtsMissCoverMissing
retrack/engine
   base.py70593%48, 62–64, 152
   executor.py1311092%62, 74–75, 153, 225, 271, 289, 293, 305, 313
   request_manager.py67790%17, 36, 55, 70–71, 154, 157
   rule.py50394%87, 109, 116
retrack/nodes
   check.py41393%23, 26, 89
   constants.py93397%123, 126, 171
   math.py43198%75
retrack/nodes/dynamic
   base.py16194%26
   csv_table.py44295%60, 63
   flow.py44198%18
   flow_connector.py251252%24–48
retrack/utils
   component_registry.py1051883%77–78, 81–82, 85–86, 91–92, 101, 112–123
   exceptions.py28582%17–18, 106–127
   graph.py60788%35, 46, 59, 61, 63, 84, 86
   registry.py34682%23–26, 38, 43, 51
   transformers.py1561690%17, 37–38, 52, 57–58, 63, 66, 69, 72, 75, 109, 169, 178, 227, 353
retrack/validators
   base.py4175%14
   node_exists.py15287%36, 38
   node_validator.py33391%31, 56–57
TOTAL166910694% 

Tests Skipped Failures Errors Time
120 0 💤 0 ❌ 0 🔥 4.963s ⏱️

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

coverage

Coverage Report
FileStmtsMissCoverMissing
retrack/engine
   base.py70593%48, 62–64, 152
   executor.py1311092%62, 74–75, 153, 225, 271, 289, 293, 305, 313
   request_manager.py67790%17, 36, 55, 70–71, 154, 157
   rule.py50394%87, 109, 116
retrack/nodes
   check.py41393%23, 26, 89
   constants.py93397%123, 126, 171
   math.py43198%75
retrack/nodes/dynamic
   base.py16194%26
   csv_table.py44295%60, 63
   flow.py44198%18
   flow_connector.py251252%24–48
retrack/utils
   component_registry.py1051883%77–78, 81–82, 85–86, 91–92, 101, 112–123
   exceptions.py28389%106–127
   graph.py60788%35, 46, 59, 61, 63, 84, 86
   registry.py34682%23–26, 38, 43, 51
   transformers.py1561690%17, 37–38, 52, 57–58, 63, 66, 69, 72, 75, 109, 169, 178, 227, 353
retrack/validators
   base.py4175%14
   node_exists.py15287%36, 38
   node_validator.py33391%31, 56–57
TOTAL166910494% 

Tests Skipped Failures Errors Time
120 0 💤 0 ❌ 0 🔥 4.332s ⏱️

@github-actions

Copy link
Copy Markdown

coverage

Coverage Report
FileStmtsMissCoverMissing
retrack/engine
   base.py70593%48, 62–64, 152
   executor.py1311092%62, 74–75, 153, 225, 271, 289, 293, 305, 313
   request_manager.py67790%17, 36, 55, 70–71, 154, 157
   rule.py50394%87, 109, 116
retrack/nodes
   check.py41393%23, 26, 89
   constants.py93397%123, 126, 171
   math.py43198%75
retrack/nodes/dynamic
   base.py16194%26
   csv_table.py44295%60, 63
   flow.py44198%18
   flow_connector.py251252%24–48
retrack/utils
   component_registry.py1051883%77–78, 81–82, 85–86, 91–92, 101, 112–123
   exceptions.py28582%17–18, 106–127
   graph.py60788%35, 46, 59, 61, 63, 84, 86
   registry.py34682%23–26, 38, 43, 51
   transformers.py1651690%20, 40–41, 55, 60–61, 66, 69, 72, 75, 78, 112, 172, 181, 230, 375
retrack/validators
   base.py4175%14
   node_exists.py15287%36, 38
   node_validator.py33391%31, 56–57
TOTAL167810694% 

Tests Skipped Failures Errors Time
135 0 💤 0 ❌ 0 🔥 5.262s ⏱️

@github-actions

Copy link
Copy Markdown

coverage

Coverage Report
FileStmtsMissCoverMissing
retrack/engine
   base.py70593%48, 62–64, 152
   executor.py1311092%62, 74–75, 153, 225, 271, 289, 293, 305, 313
   request_manager.py67790%17, 36, 55, 70–71, 154, 157
   rule.py50394%87, 109, 116
retrack/nodes
   check.py41393%23, 26, 89
   constants.py93397%123, 126, 171
   math.py43198%75
retrack/nodes/dynamic
   base.py16194%26
   csv_table.py44295%60, 63
   flow.py44198%18
   flow_connector.py251252%24–48
retrack/utils
   component_registry.py1051883%77–78, 81–82, 85–86, 91–92, 101, 112–123
   exceptions.py28389%106–127
   graph.py60788%35, 46, 59, 61, 63, 84, 86
   registry.py34682%23–26, 38, 43, 51
   transformers.py1651690%20, 40–41, 55, 60–61, 66, 69, 72, 75, 78, 112, 172, 181, 230, 375
retrack/validators
   base.py4175%14
   node_exists.py15287%36, 38
   node_validator.py33391%31, 56–57
TOTAL167810494% 

Tests Skipped Failures Errors Time
135 0 💤 0 ❌ 0 🔥 4.356s ⏱️

@github-actions

Copy link
Copy Markdown

coverage

Coverage Report
FileStmtsMissCoverMissing
retrack/engine
   base.py70593%48, 62–64, 152
   executor.py1311092%62, 74–75, 153, 225, 271, 289, 293, 305, 313
   request_manager.py67790%17, 36, 55, 70–71, 154, 157
   rule.py50394%87, 109, 116
retrack/nodes
   check.py41393%23, 26, 89
   constants.py93397%123, 126, 171
   math.py43198%75
retrack/nodes/dynamic
   base.py16194%26
   csv_table.py44295%60, 63
   flow.py44198%18
   flow_connector.py251252%24–48
retrack/utils
   component_registry.py1051883%77–78, 81–82, 85–86, 91–92, 101, 112–123
   exceptions.py28389%106–127
   graph.py60788%35, 46, 59, 61, 63, 84, 86
   registry.py34682%23–26, 38, 43, 51
   transformers.py1651690%20, 40–41, 55, 60–61, 66, 69, 72, 75, 78, 112, 172, 181, 230, 375
retrack/validators
   base.py4175%14
   node_exists.py15287%36, 38
   node_validator.py33391%31, 56–57
TOTAL167810494% 

Tests Skipped Failures Errors Time
135 0 💤 0 ❌ 0 🔥 4.296s ⏱️

@github-actions

Copy link
Copy Markdown

coverage

Coverage Report
FileStmtsMissCoverMissing
retrack/engine
   base.py70593%48, 62–64, 152
   executor.py1311092%62, 74–75, 153, 225, 271, 289, 293, 305, 313
   request_manager.py67790%17, 36, 55, 70–71, 154, 157
   rule.py50394%87, 109, 116
retrack/nodes
   check.py41393%23, 26, 89
   constants.py93397%123, 126, 171
   math.py43198%75
retrack/nodes/dynamic
   base.py16194%26
   csv_table.py44295%60, 63
   flow.py44198%18
   flow_connector.py251252%24–48
retrack/utils
   component_registry.py1051883%77–78, 81–82, 85–86, 91–92, 101, 112–123
   exceptions.py28582%17–18, 106–127
   graph.py60788%35, 46, 59, 61, 63, 84, 86
   registry.py34682%23–26, 38, 43, 51
   transformers.py1651690%20, 40–41, 55, 60–61, 66, 69, 72, 75, 78, 112, 172, 181, 230, 375
retrack/validators
   base.py4175%14
   node_exists.py15287%36, 38
   node_validator.py33391%31, 56–57
TOTAL167810694% 

Tests Skipped Failures Errors Time
135 0 💤 0 ❌ 0 🔥 5.704s ⏱️

@VinyPinheiro VinyPinheiro merged commit 8597966 into main Jun 11, 2026
3 checks passed
@VinyPinheiro VinyPinheiro deleted the f/UPI-4030_new_node branch June 11, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants