odibi 2.5.0__py3-none-any.whl

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 (124) hide show
  1. odibi/__init__.py +32 -0
  2. odibi/__main__.py +8 -0
  3. odibi/catalog.py +3011 -0
  4. odibi/cli/__init__.py +11 -0
  5. odibi/cli/__main__.py +6 -0
  6. odibi/cli/catalog.py +553 -0
  7. odibi/cli/deploy.py +69 -0
  8. odibi/cli/doctor.py +161 -0
  9. odibi/cli/export.py +66 -0
  10. odibi/cli/graph.py +150 -0
  11. odibi/cli/init_pipeline.py +242 -0
  12. odibi/cli/lineage.py +259 -0
  13. odibi/cli/main.py +215 -0
  14. odibi/cli/run.py +98 -0
  15. odibi/cli/schema.py +208 -0
  16. odibi/cli/secrets.py +232 -0
  17. odibi/cli/story.py +379 -0
  18. odibi/cli/system.py +132 -0
  19. odibi/cli/test.py +286 -0
  20. odibi/cli/ui.py +31 -0
  21. odibi/cli/validate.py +39 -0
  22. odibi/config.py +3541 -0
  23. odibi/connections/__init__.py +9 -0
  24. odibi/connections/azure_adls.py +499 -0
  25. odibi/connections/azure_sql.py +709 -0
  26. odibi/connections/base.py +28 -0
  27. odibi/connections/factory.py +322 -0
  28. odibi/connections/http.py +78 -0
  29. odibi/connections/local.py +119 -0
  30. odibi/connections/local_dbfs.py +61 -0
  31. odibi/constants.py +17 -0
  32. odibi/context.py +528 -0
  33. odibi/diagnostics/__init__.py +12 -0
  34. odibi/diagnostics/delta.py +520 -0
  35. odibi/diagnostics/diff.py +169 -0
  36. odibi/diagnostics/manager.py +171 -0
  37. odibi/engine/__init__.py +20 -0
  38. odibi/engine/base.py +334 -0
  39. odibi/engine/pandas_engine.py +2178 -0
  40. odibi/engine/polars_engine.py +1114 -0
  41. odibi/engine/registry.py +54 -0
  42. odibi/engine/spark_engine.py +2362 -0
  43. odibi/enums.py +7 -0
  44. odibi/exceptions.py +297 -0
  45. odibi/graph.py +426 -0
  46. odibi/introspect.py +1214 -0
  47. odibi/lineage.py +511 -0
  48. odibi/node.py +3341 -0
  49. odibi/orchestration/__init__.py +0 -0
  50. odibi/orchestration/airflow.py +90 -0
  51. odibi/orchestration/dagster.py +77 -0
  52. odibi/patterns/__init__.py +24 -0
  53. odibi/patterns/aggregation.py +599 -0
  54. odibi/patterns/base.py +94 -0
  55. odibi/patterns/date_dimension.py +423 -0
  56. odibi/patterns/dimension.py +696 -0
  57. odibi/patterns/fact.py +748 -0
  58. odibi/patterns/merge.py +128 -0
  59. odibi/patterns/scd2.py +148 -0
  60. odibi/pipeline.py +2382 -0
  61. odibi/plugins.py +80 -0
  62. odibi/project.py +581 -0
  63. odibi/references.py +151 -0
  64. odibi/registry.py +246 -0
  65. odibi/semantics/__init__.py +71 -0
  66. odibi/semantics/materialize.py +392 -0
  67. odibi/semantics/metrics.py +361 -0
  68. odibi/semantics/query.py +743 -0
  69. odibi/semantics/runner.py +430 -0
  70. odibi/semantics/story.py +507 -0
  71. odibi/semantics/views.py +432 -0
  72. odibi/state/__init__.py +1203 -0
  73. odibi/story/__init__.py +55 -0
  74. odibi/story/doc_story.py +554 -0
  75. odibi/story/generator.py +1431 -0
  76. odibi/story/lineage.py +1043 -0
  77. odibi/story/lineage_utils.py +324 -0
  78. odibi/story/metadata.py +608 -0
  79. odibi/story/renderers.py +453 -0
  80. odibi/story/templates/run_story.html +2520 -0
  81. odibi/story/themes.py +216 -0
  82. odibi/testing/__init__.py +13 -0
  83. odibi/testing/assertions.py +75 -0
  84. odibi/testing/fixtures.py +85 -0
  85. odibi/testing/source_pool.py +277 -0
  86. odibi/transformers/__init__.py +122 -0
  87. odibi/transformers/advanced.py +1472 -0
  88. odibi/transformers/delete_detection.py +610 -0
  89. odibi/transformers/manufacturing.py +1029 -0
  90. odibi/transformers/merge_transformer.py +778 -0
  91. odibi/transformers/relational.py +675 -0
  92. odibi/transformers/scd.py +579 -0
  93. odibi/transformers/sql_core.py +1356 -0
  94. odibi/transformers/validation.py +165 -0
  95. odibi/ui/__init__.py +0 -0
  96. odibi/ui/app.py +195 -0
  97. odibi/utils/__init__.py +66 -0
  98. odibi/utils/alerting.py +667 -0
  99. odibi/utils/config_loader.py +343 -0
  100. odibi/utils/console.py +231 -0
  101. odibi/utils/content_hash.py +202 -0
  102. odibi/utils/duration.py +43 -0
  103. odibi/utils/encoding.py +102 -0
  104. odibi/utils/extensions.py +28 -0
  105. odibi/utils/hashing.py +61 -0
  106. odibi/utils/logging.py +203 -0
  107. odibi/utils/logging_context.py +740 -0
  108. odibi/utils/progress.py +429 -0
  109. odibi/utils/setup_helpers.py +302 -0
  110. odibi/utils/telemetry.py +140 -0
  111. odibi/validation/__init__.py +62 -0
  112. odibi/validation/engine.py +765 -0
  113. odibi/validation/explanation_linter.py +155 -0
  114. odibi/validation/fk.py +547 -0
  115. odibi/validation/gate.py +252 -0
  116. odibi/validation/quarantine.py +605 -0
  117. odibi/writers/__init__.py +15 -0
  118. odibi/writers/sql_server_writer.py +2081 -0
  119. odibi-2.5.0.dist-info/METADATA +255 -0
  120. odibi-2.5.0.dist-info/RECORD +124 -0
  121. odibi-2.5.0.dist-info/WHEEL +5 -0
  122. odibi-2.5.0.dist-info/entry_points.txt +2 -0
  123. odibi-2.5.0.dist-info/licenses/LICENSE +190 -0
  124. odibi-2.5.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,122 @@
1
+ from odibi.registry import FunctionRegistry
2
+
3
+ # Import all transform modules
4
+ from odibi.transformers import (
5
+ advanced,
6
+ delete_detection,
7
+ manufacturing,
8
+ merge_transformer,
9
+ relational,
10
+ scd,
11
+ sql_core,
12
+ validation,
13
+ )
14
+
15
+ # List of all standard library modules
16
+ _MODULES = [sql_core, relational, advanced, scd, validation, delete_detection]
17
+
18
+
19
+ def register_standard_library():
20
+ """
21
+ Registers all standard transformations into the global registry.
22
+ This is called automatically when the framework initializes.
23
+ """
24
+ # Helper to register functions from a module
25
+ # We look for functions that match the transform signature or are explicitly exported
26
+ # For now, we manually register the known list to be safe and explicit.
27
+
28
+ registry = FunctionRegistry
29
+
30
+ # SQL Core
31
+ registry.register(sql_core.filter_rows, "filter_rows", sql_core.FilterRowsParams)
32
+ registry.register(sql_core.derive_columns, "derive_columns", sql_core.DeriveColumnsParams)
33
+ registry.register(sql_core.cast_columns, "cast_columns", sql_core.CastColumnsParams)
34
+ registry.register(sql_core.clean_text, "clean_text", sql_core.CleanTextParams)
35
+ registry.register(sql_core.extract_date_parts, "extract_date_parts", sql_core.ExtractDateParams)
36
+ registry.register(sql_core.normalize_schema, "normalize_schema", sql_core.NormalizeSchemaParams)
37
+ registry.register(sql_core.sort, "sort", sql_core.SortParams)
38
+ registry.register(sql_core.limit, "limit", sql_core.LimitParams)
39
+ registry.register(sql_core.sample, "sample", sql_core.SampleParams)
40
+ registry.register(sql_core.distinct, "distinct", sql_core.DistinctParams)
41
+ registry.register(sql_core.fill_nulls, "fill_nulls", sql_core.FillNullsParams)
42
+ registry.register(sql_core.split_part, "split_part", sql_core.SplitPartParams)
43
+ registry.register(sql_core.date_add, "date_add", sql_core.DateAddParams)
44
+ registry.register(sql_core.date_trunc, "date_trunc", sql_core.DateTruncParams)
45
+ registry.register(sql_core.date_diff, "date_diff", sql_core.DateDiffParams)
46
+ registry.register(sql_core.case_when, "case_when", sql_core.CaseWhenParams)
47
+ registry.register(sql_core.convert_timezone, "convert_timezone", sql_core.ConvertTimezoneParams)
48
+ registry.register(sql_core.concat_columns, "concat_columns", sql_core.ConcatColumnsParams)
49
+ registry.register(sql_core.select_columns, "select_columns", sql_core.SelectColumnsParams)
50
+ registry.register(sql_core.drop_columns, "drop_columns", sql_core.DropColumnsParams)
51
+ registry.register(sql_core.rename_columns, "rename_columns", sql_core.RenameColumnsParams)
52
+ registry.register(sql_core.add_prefix, "add_prefix", sql_core.AddPrefixParams)
53
+ registry.register(sql_core.add_suffix, "add_suffix", sql_core.AddSuffixParams)
54
+ registry.register(
55
+ sql_core.normalize_column_names,
56
+ "normalize_column_names",
57
+ sql_core.NormalizeColumnNamesParams,
58
+ )
59
+ registry.register(sql_core.coalesce_columns, "coalesce_columns", sql_core.CoalesceColumnsParams)
60
+ registry.register(sql_core.replace_values, "replace_values", sql_core.ReplaceValuesParams)
61
+ registry.register(sql_core.trim_whitespace, "trim_whitespace", sql_core.TrimWhitespaceParams)
62
+
63
+ # Relational
64
+ registry.register(relational.join, "join", relational.JoinParams)
65
+ registry.register(relational.union, "union", relational.UnionParams)
66
+ registry.register(relational.pivot, "pivot", relational.PivotParams)
67
+ registry.register(relational.unpivot, "unpivot", relational.UnpivotParams)
68
+ registry.register(relational.aggregate, "aggregate", relational.AggregateParams)
69
+
70
+ # Advanced
71
+ registry.register(advanced.deduplicate, "deduplicate", advanced.DeduplicateParams)
72
+ registry.register(advanced.explode_list_column, "explode_list_column", advanced.ExplodeParams)
73
+ registry.register(advanced.dict_based_mapping, "dict_based_mapping", advanced.DictMappingParams)
74
+ registry.register(advanced.regex_replace, "regex_replace", advanced.RegexReplaceParams)
75
+ registry.register(advanced.unpack_struct, "unpack_struct", advanced.UnpackStructParams)
76
+ registry.register(advanced.hash_columns, "hash_columns", advanced.HashParams)
77
+ registry.register(advanced.parse_json, "parse_json", advanced.ParseJsonParams)
78
+ registry.register(
79
+ advanced.generate_surrogate_key, "generate_surrogate_key", advanced.SurrogateKeyParams
80
+ )
81
+ registry.register(
82
+ advanced.generate_numeric_key, "generate_numeric_key", advanced.NumericKeyParams
83
+ )
84
+ registry.register(
85
+ advanced.validate_and_flag, "validate_and_flag", advanced.ValidateAndFlagParams
86
+ )
87
+ registry.register(
88
+ advanced.window_calculation, "window_calculation", advanced.WindowCalculationParams
89
+ )
90
+ registry.register(advanced.normalize_json, "normalize_json", advanced.NormalizeJsonParams)
91
+ registry.register(advanced.sessionize, "sessionize", advanced.SessionizeParams)
92
+ registry.register(advanced.geocode, "geocode", advanced.GeocodeParams)
93
+ registry.register(
94
+ advanced.split_events_by_period,
95
+ "split_events_by_period",
96
+ advanced.SplitEventsByPeriodParams,
97
+ )
98
+
99
+ # SCD
100
+ registry.register(scd.scd2, "scd2", scd.SCD2Params)
101
+
102
+ # Merge
103
+ registry.register(merge_transformer.merge, "merge", merge_transformer.MergeParams)
104
+
105
+ # Validation
106
+ registry.register(validation.cross_check, "cross_check", validation.CrossCheckParams)
107
+
108
+ # Delete Detection
109
+ from odibi.config import DeleteDetectionConfig
110
+
111
+ registry.register(delete_detection.detect_deletes, "detect_deletes", DeleteDetectionConfig)
112
+
113
+ # Manufacturing
114
+ registry.register(
115
+ manufacturing.detect_sequential_phases,
116
+ "detect_sequential_phases",
117
+ manufacturing.DetectSequentialPhasesParams,
118
+ )
119
+
120
+
121
+ # Auto-register on import
122
+ # register_standard_library() # Removed to allow explicit registration