simple_flow 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/lib/simple_flow/version.rb +1 -1
  4. data/lib/simple_flow.rb +0 -17
  5. metadata +2 -68
  6. data/.envrc +0 -1
  7. data/.github/workflows/deploy-github-pages.yml +0 -52
  8. data/.rubocop.yml +0 -57
  9. data/COMMITS.md +0 -196
  10. data/Rakefile +0 -15
  11. data/benchmarks/parallel_vs_sequential.rb +0 -98
  12. data/benchmarks/pipeline_overhead.rb +0 -130
  13. data/docs/api/middleware.md +0 -468
  14. data/docs/api/parallel-step.md +0 -363
  15. data/docs/api/pipeline.md +0 -382
  16. data/docs/api/result.md +0 -375
  17. data/docs/concurrent/best-practices.md +0 -687
  18. data/docs/concurrent/introduction.md +0 -246
  19. data/docs/concurrent/parallel-steps.md +0 -418
  20. data/docs/concurrent/performance.md +0 -481
  21. data/docs/core-concepts/flow-control.md +0 -452
  22. data/docs/core-concepts/middleware.md +0 -389
  23. data/docs/core-concepts/overview.md +0 -219
  24. data/docs/core-concepts/pipeline.md +0 -315
  25. data/docs/core-concepts/result.md +0 -168
  26. data/docs/core-concepts/steps.md +0 -391
  27. data/docs/development/benchmarking.md +0 -443
  28. data/docs/development/contributing.md +0 -380
  29. data/docs/development/dagwood-concepts.md +0 -435
  30. data/docs/development/testing.md +0 -514
  31. data/docs/getting-started/examples.md +0 -197
  32. data/docs/getting-started/installation.md +0 -62
  33. data/docs/getting-started/quick-start.md +0 -218
  34. data/docs/guides/choosing-concurrency-model.md +0 -441
  35. data/docs/guides/complex-workflows.md +0 -440
  36. data/docs/guides/data-fetching.md +0 -478
  37. data/docs/guides/error-handling.md +0 -635
  38. data/docs/guides/file-processing.md +0 -505
  39. data/docs/guides/validation-patterns.md +0 -496
  40. data/docs/index.md +0 -169
  41. data/examples/.gitignore +0 -3
  42. data/examples/01_basic_pipeline.rb +0 -112
  43. data/examples/02_error_handling.rb +0 -178
  44. data/examples/03_middleware.rb +0 -186
  45. data/examples/04_parallel_automatic.rb +0 -221
  46. data/examples/05_parallel_explicit.rb +0 -279
  47. data/examples/06_real_world_ecommerce.rb +0 -288
  48. data/examples/07_real_world_etl.rb +0 -277
  49. data/examples/08_graph_visualization.rb +0 -246
  50. data/examples/09_pipeline_visualization.rb +0 -266
  51. data/examples/10_concurrency_control.rb +0 -235
  52. data/examples/11_sequential_dependencies.rb +0 -243
  53. data/examples/12_none_constant.rb +0 -161
  54. data/examples/README.md +0 -374
  55. data/examples/regression_test/01_basic_pipeline.txt +0 -38
  56. data/examples/regression_test/02_error_handling.txt +0 -92
  57. data/examples/regression_test/03_middleware.txt +0 -61
  58. data/examples/regression_test/04_parallel_automatic.txt +0 -86
  59. data/examples/regression_test/05_parallel_explicit.txt +0 -80
  60. data/examples/regression_test/06_real_world_ecommerce.txt +0 -53
  61. data/examples/regression_test/07_real_world_etl.txt +0 -58
  62. data/examples/regression_test/08_graph_visualization.txt +0 -429
  63. data/examples/regression_test/09_pipeline_visualization.txt +0 -305
  64. data/examples/regression_test/10_concurrency_control.txt +0 -96
  65. data/examples/regression_test/11_sequential_dependencies.txt +0 -86
  66. data/examples/regression_test/12_none_constant.txt +0 -64
  67. data/examples/regression_test.rb +0 -105
  68. data/mkdocs.yml +0 -146
  69. data/pipeline_graph.dot +0 -51
  70. data/pipeline_graph.html +0 -60
  71. data/pipeline_graph.mmd +0 -19
data/mkdocs.yml DELETED
@@ -1,146 +0,0 @@
1
- site_name: SimpleFlow Documentation
2
- site_description: "A lightweight, modular Ruby framework for building composable data processing pipelines with concurrent execution"
3
- site_author: "Dewayne VanHoozer"
4
- site_url: "https://madbomber.github.io/simple_flow/"
5
-
6
- repo_name: "MadBomber/simple_flow"
7
- repo_url: "https://github.com/MadBomber/simple_flow"
8
- edit_uri: "edit/main/docs/"
9
-
10
- theme:
11
- name: material
12
- language: en
13
- favicon: assets/logo.png
14
-
15
- palette:
16
- - media: "(prefers-color-scheme: light)"
17
- scheme: default
18
- primary: indigo
19
- accent: deep-purple
20
- toggle:
21
- icon: material/brightness-7
22
- name: Switch to dark mode
23
-
24
- - media: "(prefers-color-scheme: dark)"
25
- scheme: slate
26
- primary: indigo
27
- accent: deep-purple
28
- toggle:
29
- icon: material/brightness-4
30
- name: Switch to light mode
31
-
32
- font:
33
- text: Roboto
34
- code: Roboto Mono
35
-
36
- features:
37
- - navigation.instant
38
- - navigation.tracking
39
- - navigation.tabs
40
- - navigation.tabs.sticky
41
- - navigation.sections
42
- - navigation.path
43
- - navigation.indexes
44
- - navigation.top
45
- - toc.follow
46
- - search.suggest
47
- - search.highlight
48
- - search.share
49
- - header.autohide
50
- - content.code.copy
51
- - content.code.annotate
52
- - content.tabs.link
53
- - content.tooltips
54
- - content.action.edit
55
- - content.action.view
56
-
57
- plugins:
58
- - search:
59
- separator: '[\s\-,:!=\[\]()"\`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
60
-
61
- markdown_extensions:
62
- - abbr
63
- - admonition
64
- - attr_list
65
- - def_list
66
- - footnotes
67
- - md_in_html
68
- - toc:
69
- permalink: true
70
- title: On this page
71
- - pymdownx.arithmatex:
72
- generic: true
73
- - pymdownx.betterem:
74
- smart_enable: all
75
- - pymdownx.caret
76
- - pymdownx.details
77
- - pymdownx.emoji:
78
- emoji_index: !!python/name:material.extensions.emoji.twemoji
79
- emoji_generator: !!python/name:material.extensions.emoji.to_svg
80
- - pymdownx.highlight:
81
- anchor_linenums: true
82
- line_spans: __span
83
- pygments_lang_class: true
84
- - pymdownx.inlinehilite
85
- - pymdownx.keys
86
- - pymdownx.magiclink:
87
- repo_url_shorthand: true
88
- user: MadBomber
89
- repo: simple_flow
90
- - pymdownx.mark
91
- - pymdownx.smartsymbols
92
- - pymdownx.superfences:
93
- custom_fences:
94
- - name: mermaid
95
- class: mermaid
96
- format: !!python/name:pymdownx.superfences.fence_code_format
97
- - pymdownx.tabbed:
98
- alternate_style: true
99
- - pymdownx.tasklist:
100
- custom_checkbox: true
101
- - pymdownx.tilde
102
-
103
- extra:
104
- version: 0.0.1
105
- social:
106
- - icon: fontawesome/brands/github
107
- link: https://github.com/MadBomber/simple_flow
108
- name: GitHub Repository
109
- generator: false
110
-
111
- nav:
112
- - Home: index.md
113
- - 🚀 Getting Started:
114
- - Installation: getting-started/installation.md
115
- - Quick Start: getting-started/quick-start.md
116
- - Examples: getting-started/examples.md
117
- - 📖 Core Concepts:
118
- - Overview: core-concepts/overview.md
119
- - Result: core-concepts/result.md
120
- - Pipeline: core-concepts/pipeline.md
121
- - Steps: core-concepts/steps.md
122
- - Middleware: core-concepts/middleware.md
123
- - Flow Control: core-concepts/flow-control.md
124
- - ⚡ Concurrent Execution:
125
- - Introduction: concurrent/introduction.md
126
- - Parallel Steps: concurrent/parallel-steps.md
127
- - Performance: concurrent/performance.md
128
- - Best Practices: concurrent/best-practices.md
129
- - 📚 Guides:
130
- - Error Handling: guides/error-handling.md
131
- - Validation Patterns: guides/validation-patterns.md
132
- - Choosing Concurrency Model: guides/choosing-concurrency-model.md
133
- - Data Fetching: guides/data-fetching.md
134
- - File Processing: guides/file-processing.md
135
- - Complex Workflows: guides/complex-workflows.md
136
- - 🔌 API Reference:
137
- - Result API: api/result.md
138
- - Pipeline API: api/pipeline.md
139
- - ParallelStep API: api/parallel-step.md
140
- - Middleware API: api/middleware.md
141
- - ⚙️ Development:
142
- - Contributing: development/contributing.md
143
- - Testing: development/testing.md
144
- - Benchmarking: development/benchmarking.md
145
-
146
- copyright: Copyright © 2025 Dewayne VanHoozer
data/pipeline_graph.dot DELETED
@@ -1,51 +0,0 @@
1
- digraph DependencyGraph {
2
- rankdir=TB;
3
- node [shape=box, style=rounded];
4
-
5
- // Group 1
6
- validate_order [fillcolor=lightblue, style="rounded,filled"];
7
- // Group 2
8
- calculate_shipping [fillcolor=lightgreen, style="rounded,filled"];
9
- check_inventory [fillcolor=lightgreen, style="rounded,filled"];
10
- // Group 3
11
- calculate_totals [fillcolor=lightyellow, style="rounded,filled"];
12
- // Group 4
13
- process_payment [fillcolor=lightpink, style="rounded,filled"];
14
- // Group 5
15
- reserve_inventory [fillcolor=lightgray, style="rounded,filled"];
16
- // Group 6
17
- create_shipment [fillcolor=lightblue, style="rounded,filled"];
18
- // Group 7
19
- send_email [fillcolor=lightgreen, style="rounded,filled"];
20
- send_sms [fillcolor=lightgreen, style="rounded,filled"];
21
- // Group 8
22
- finalize_order [fillcolor=lightyellow, style="rounded,filled"];
23
-
24
- // Dependencies
25
- validate_order;
26
- validate_order -> check_inventory;
27
- validate_order -> calculate_shipping;
28
- calculate_shipping -> calculate_totals;
29
- check_inventory -> calculate_totals;
30
- calculate_totals -> process_payment;
31
- process_payment -> reserve_inventory;
32
- reserve_inventory -> create_shipment;
33
- create_shipment -> send_email;
34
- create_shipment -> send_sms;
35
- send_email -> finalize_order;
36
- send_sms -> finalize_order;
37
-
38
- // Legend
39
- subgraph cluster_legend {
40
- label="Parallel Groups";
41
- style=dashed;
42
- legend_0 [label="Group 1 (1 step)", fillcolor=lightblue, style="rounded,filled"];
43
- legend_1 [label="Group 2 (2 steps)", fillcolor=lightgreen, style="rounded,filled"];
44
- legend_2 [label="Group 3 (1 step)", fillcolor=lightyellow, style="rounded,filled"];
45
- legend_3 [label="Group 4 (1 step)", fillcolor=lightpink, style="rounded,filled"];
46
- legend_4 [label="Group 5 (1 step)", fillcolor=lightgray, style="rounded,filled"];
47
- legend_5 [label="Group 6 (1 step)", fillcolor=lightblue, style="rounded,filled"];
48
- legend_6 [label="Group 7 (2 steps)", fillcolor=lightgreen, style="rounded,filled"];
49
- legend_7 [label="Group 8 (1 step)", fillcolor=lightyellow, style="rounded,filled"];
50
- }
51
- }
data/pipeline_graph.html DELETED
@@ -1,60 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>E-commerce Pipeline</title>
5
- <script type="text/javascript" src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
6
- <style>
7
- body { font-family: Arial, sans-serif; margin: 20px; }
8
- #graph { width: 100%; height: 600px; border: 1px solid #ddd; }
9
- .info { margin-top: 20px; padding: 15px; background: #f5f5f5; border-radius: 5px; }
10
- .legend { display: flex; gap: 20px; margin-top: 10px; }
11
- .legend-item { display: flex; align-items: center; gap: 5px; }
12
- .legend-color { width: 20px; height: 20px; border-radius: 3px; }
13
- </style>
14
- </head>
15
- <body>
16
- <h1>E-commerce Pipeline</h1>
17
- <div id="graph"></div>
18
- <div class="info">
19
- <h3>Execution Groups (Parallel)</h3>
20
- <div class="legend">
21
- <div class='legend-item'><div class='legend-color' style='background: #A8D5FF'></div><span>Group 1: validate_order</span></div>
22
- <div class='legend-item'><div class='legend-color' style='background: #A8FFA8'></div><span>Group 2: calculate_shipping, check_inventory</span></div>
23
- <div class='legend-item'><div class='legend-color' style='background: #FFFFA8'></div><span>Group 3: calculate_totals</span></div>
24
- <div class='legend-item'><div class='legend-color' style='background: #FFA8FF'></div><span>Group 4: process_payment</span></div>
25
- <div class='legend-item'><div class='legend-color' style='background: #D3D3D3'></div><span>Group 5: reserve_inventory</span></div>
26
- <div class='legend-item'><div class='legend-color' style='background: #A8D5FF'></div><span>Group 6: create_shipment</span></div>
27
- <div class='legend-item'><div class='legend-color' style='background: #A8FFA8'></div><span>Group 7: send_email, send_sms</span></div>
28
- <div class='legend-item'><div class='legend-color' style='background: #FFFFA8'></div><span>Group 8: finalize_order</span></div>
29
- </div>
30
- </div>
31
- <script>
32
- var nodes = new vis.DataSet([{"id":"validate_order","label":"validate_order","color":"#A8D5FF","level":0},{"id":"check_inventory","label":"check_inventory","color":"#A8FFA8","level":1},{"id":"calculate_shipping","label":"calculate_shipping","color":"#A8FFA8","level":1},{"id":"calculate_totals","label":"calculate_totals","color":"#FFFFA8","level":2},{"id":"process_payment","label":"process_payment","color":"#FFA8FF","level":3},{"id":"reserve_inventory","label":"reserve_inventory","color":"#D3D3D3","level":4},{"id":"create_shipment","label":"create_shipment","color":"#A8D5FF","level":5},{"id":"send_email","label":"send_email","color":"#A8FFA8","level":6},{"id":"send_sms","label":"send_sms","color":"#A8FFA8","level":6},{"id":"finalize_order","label":"finalize_order","color":"#FFFFA8","level":7}]);
33
- var edges = new vis.DataSet([{"from":"validate_order","to":"check_inventory"},{"from":"validate_order","to":"calculate_shipping"},{"from":"calculate_shipping","to":"calculate_totals"},{"from":"check_inventory","to":"calculate_totals"},{"from":"calculate_totals","to":"process_payment"},{"from":"process_payment","to":"reserve_inventory"},{"from":"reserve_inventory","to":"create_shipment"},{"from":"create_shipment","to":"send_email"},{"from":"create_shipment","to":"send_sms"},{"from":"send_email","to":"finalize_order"},{"from":"send_sms","to":"finalize_order"}]);
34
- var container = document.getElementById('graph');
35
- var data = { nodes: nodes, edges: edges };
36
- var options = {
37
- layout: {
38
- hierarchical: {
39
- direction: 'UD',
40
- sortMethod: 'directed',
41
- levelSeparation: 150
42
- }
43
- },
44
- edges: {
45
- arrows: 'to',
46
- smooth: { type: 'cubicBezier' }
47
- },
48
- nodes: {
49
- shape: 'box',
50
- margin: 10,
51
- widthConstraint: { minimum: 100, maximum: 200 }
52
- },
53
- physics: {
54
- enabled: false
55
- }
56
- };
57
- var network = new vis.Network(container, data, options);
58
- </script>
59
- </body>
60
- </html>
data/pipeline_graph.mmd DELETED
@@ -1,19 +0,0 @@
1
- graph TD
2
- validate_order[validate_order]
3
- validate_order[validate_order] --> check_inventory[check_inventory]
4
- validate_order[validate_order] --> calculate_shipping[calculate_shipping]
5
- calculate_shipping[calculate_shipping] --> calculate_totals[calculate_totals]
6
- check_inventory[check_inventory] --> calculate_totals[calculate_totals]
7
- calculate_totals[calculate_totals] --> process_payment[process_payment]
8
- process_payment[process_payment] --> reserve_inventory[reserve_inventory]
9
- reserve_inventory[reserve_inventory] --> create_shipment[create_shipment]
10
- create_shipment[create_shipment] --> send_email[send_email]
11
- create_shipment[create_shipment] --> send_sms[send_sms]
12
- send_email[send_email] --> finalize_order[finalize_order]
13
- send_sms[send_sms] --> finalize_order[finalize_order]
14
- classDef group1 fill:#9f9
15
- class calculate_shipping group1
16
- class check_inventory group1
17
- classDef group6 fill:#9f9
18
- class send_email group6
19
- class send_sms group6