wpipe 2.1.2__tar.gz → 2.1.3__tar.gz

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 (129) hide show
  1. {wpipe-2.1.2 → wpipe-2.1.3}/PKG-INFO +1 -1
  2. {wpipe-2.1.2 → wpipe-2.1.3}/pyproject.toml +1 -1
  3. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/pipe.py +19 -6
  4. {wpipe-2.1.2 → wpipe-2.1.3}/.gitignore +0 -0
  5. {wpipe-2.1.2 → wpipe-2.1.3}/LICENSE +0 -0
  6. {wpipe-2.1.2 → wpipe-2.1.3}/README.md +0 -0
  7. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/01_simple_function/README.md +0 -0
  8. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/01_simple_function/example.py +0 -0
  9. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/02_class_steps/README.md +0 -0
  10. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/02_class_steps/example.py +0 -0
  11. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/03_mixed_steps/README.md +0 -0
  12. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/03_mixed_steps/example.py +0 -0
  13. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/04_default_values/README.md +0 -0
  14. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/04_default_values/example.py +0 -0
  15. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/05_args_kwargs/README.md +0 -0
  16. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/05_args_kwargs/example.py +0 -0
  17. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/06_dict_processing/README.md +0 -0
  18. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/06_dict_processing/example.py +0 -0
  19. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/07_multiple_runs/README.md +0 -0
  20. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/07_multiple_runs/example.py +0 -0
  21. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/08_data_aggregation/README.md +0 -0
  22. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/08_data_aggregation/example.py +0 -0
  23. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/09_empty_data/README.md +0 -0
  24. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/09_empty_data/example.py +0 -0
  25. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/10_lambda_steps/README.md +0 -0
  26. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/10_lambda_steps/example.py +0 -0
  27. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/11_decorator_steps/README.md +0 -0
  28. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/11_decorator_steps/example.py +0 -0
  29. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/12_context_manager/README.md +0 -0
  30. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/12_context_manager/example.py +0 -0
  31. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/13_async_pipeline/README.md +0 -0
  32. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/13_async_pipeline/example.py +0 -0
  33. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/14_pipeline_chaining/README.md +0 -0
  34. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/14_pipeline_chaining/example.py +0 -0
  35. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/15_pipeline_clone/README.md +0 -0
  36. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/15_pipeline_clone/example.py +0 -0
  37. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/16_LogGestor/example.py +0 -0
  38. {wpipe-2.1.2 → wpipe-2.1.3}/examples/01_basic_pipeline/README.md +0 -0
  39. {wpipe-2.1.2 → wpipe-2.1.3}/examples/15_export/01_json/export_json.py +0 -0
  40. {wpipe-2.1.2 → wpipe-2.1.3}/examples/15_export/README.md +0 -0
  41. {wpipe-2.1.2 → wpipe-2.1.3}/test/__init__.py +0 -0
  42. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_api_pipeline.py +0 -0
  43. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_async.py +0 -0
  44. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_basic_pipeline.py +0 -0
  45. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_checkpoint.py +0 -0
  46. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_core.py +0 -0
  47. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_dashboard_and_monitor.py +0 -0
  48. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_export.py +0 -0
  49. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_misc.py +0 -0
  50. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_nested_pipelines.py +0 -0
  51. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_pipe.py +0 -0
  52. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_pipe_async.py +0 -0
  53. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_pipeline_config.py +0 -0
  54. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_sqlite.py +0 -0
  55. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_tracking.py +0 -0
  56. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_util.py +0 -0
  57. {wpipe-2.1.2 → wpipe-2.1.3}/test/test_yaml_config.py +0 -0
  58. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/README.md +0 -0
  59. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/__init__.py +0 -0
  60. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/api_client/__init__.py +0 -0
  61. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/api_client/api_client.py +0 -0
  62. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/checkpoint/README.md +0 -0
  63. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/checkpoint/__init__.py +0 -0
  64. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/checkpoint/checkpoint.py +0 -0
  65. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/composition/README.md +0 -0
  66. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/composition/__init__.py +0 -0
  67. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/composition/pipeline_step.py +0 -0
  68. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/__init__.py +0 -0
  69. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/__main__.py +0 -0
  70. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/main.py +0 -0
  71. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/static/dashboard.js +0 -0
  72. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/static/styles.css +0 -0
  73. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/base.html +0 -0
  74. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/alerts.html +0 -0
  75. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/analytics.html +0 -0
  76. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/data.html +0 -0
  77. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/events.html +0 -0
  78. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/graph.html +0 -0
  79. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/pipelines.html +0 -0
  80. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/states.html +0 -0
  81. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/dashboard/templates/tabs/timeline.html +0 -0
  82. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/decorators/README.md +0 -0
  83. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/decorators/__init__.py +0 -0
  84. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/decorators/step.py +0 -0
  85. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/exception/__init__.py +0 -0
  86. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/exception/api_error.py +0 -0
  87. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/export/README.md +0 -0
  88. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/export/__init__.py +0 -0
  89. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/export/exporter.py +0 -0
  90. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/log/__init__.py +0 -0
  91. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/log/log.py +0 -0
  92. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/parallel/README.md +0 -0
  93. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/parallel/__init__.py +0 -0
  94. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/parallel/executor.py +0 -0
  95. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/__init__.py +0 -0
  96. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/__init__.py +0 -0
  97. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/constants.py +0 -0
  98. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/logic_blocks.py +0 -0
  99. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/logic_blocks_async.py +0 -0
  100. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/metrics.py +0 -0
  101. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/progress.py +0 -0
  102. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/components/reporting.py +0 -0
  103. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/pipe_async.py +0 -0
  104. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/pipe/pipe_async_minimal.py +0 -0
  105. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/ram/__init__.py +0 -0
  106. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/ram/ram.py +0 -0
  107. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/resource_monitor/README.md +0 -0
  108. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/resource_monitor/__init__.py +0 -0
  109. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/resource_monitor/monitor.py +0 -0
  110. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/sqlite/Sqlite.py +0 -0
  111. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/sqlite/__init__.py +0 -0
  112. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/sqlite/tables_dto/__init__.py +0 -0
  113. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/sqlite/tables_dto/log_gestor_model.py +0 -0
  114. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/sqlite/tables_dto/records.py +0 -0
  115. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/sqlite/tables_dto/tracker_models.py +0 -0
  116. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/timeout/README.md +0 -0
  117. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/timeout/__init__.py +0 -0
  118. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/timeout/timeout.py +0 -0
  119. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/tracking/__init__.py +0 -0
  120. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/tracking/alerts.py +0 -0
  121. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/tracking/analysis.py +0 -0
  122. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/tracking/queries.py +0 -0
  123. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/tracking/tracker.py +0 -0
  124. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/type_hinting/README.md +0 -0
  125. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/type_hinting/__init__.py +0 -0
  126. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/type_hinting/validators.py +0 -0
  127. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/util/__init__.py +0 -0
  128. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/util/transform.py +0 -0
  129. {wpipe-2.1.2 → wpipe-2.1.3}/wpipe/util/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wpipe
3
- Version: 2.1.2
3
+ Version: 2.1.3
4
4
  Summary: Pipeline library with API integration for task orchestration and execution tracking
5
5
  Project-URL: Homepage, https://github.com/wisrovi/wpipe
6
6
  Project-URL: Documentation, https://wpipe.readthedocs.io/en/latest/
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "wpipe"
7
- version = "2.1.2"
7
+ version = "2.1.3"
8
8
  authors = [
9
9
  { name = "William Steve Rodriguez Villamizar", email = "wisrovi.rodriguez@gmail.com" }
10
10
  ]
@@ -698,15 +698,23 @@ class Pipeline(APIClient):
698
698
  raise
699
699
  except Exception as e: # pylint: disable=broad-exception-caught
700
700
  last_exception = e
701
- tb = traceback.extract_tb(e.__traceback__)
702
- last_trace = tb[-1] if tb else None
701
+ tb_list = traceback.extract_tb(e.__traceback__)
702
+
703
+ # Find the most relevant frame (user code instead of library code)
704
+ # We look for the last frame that doesn't contain 'site-packages' or 'wpipe'
705
+ relevant_frame = tb_list[-1]
706
+ for frame in reversed(tb_list):
707
+ if "site-packages" not in frame.filename and "wpipe/pipe" not in frame.filename:
708
+ relevant_frame = frame
709
+ break
710
+
703
711
  error_details = {
704
712
  "step_name": name,
705
713
  "error_message": str(e),
706
714
  "error_traceback": traceback.format_exc(),
707
- "file_path": last_trace.filename if last_trace else "unknown",
708
- "line_number": last_trace.lineno if last_trace else 0,
709
- "method": last_trace.name if last_trace else "unknown",
715
+ "file_path": relevant_frame.filename,
716
+ "line_number": relevant_frame.lineno,
717
+ "method": relevant_frame.name,
710
718
  "timestamp": datetime.now().isoformat(),
711
719
  "attempt": attempt + 1,
712
720
  }
@@ -860,7 +868,12 @@ class Pipeline(APIClient):
860
868
  step_id = item[3]
861
869
  elif callable(item):
862
870
  func = item
863
- name = getattr(item, "NAME", getattr(item, "__name__", "task"))
871
+ # Look for step name in priorities: NAME attribute > __name__ > class name
872
+ name = getattr(item, "NAME", getattr(item, "__name__", item.__class__.__name__))
873
+ if name == "task" or name == "function":
874
+ # Fallback to a more descriptive name if possible
875
+ name = item.__class__.__name__
876
+
864
877
  version = getattr(item, "VERSION", "v1.0")
865
878
  step_meta = getattr(item, "_wpipe_metadata", {})
866
879
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes