omnata-plugin-runtime 0.10.14__tar.gz → 0.10.15__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.
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/PKG-INFO +1 -1
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/pyproject.toml +1 -1
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/json_schema.py +17 -19
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/LICENSE +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/README.md +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/__init__.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/api.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/configuration.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/forms.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/logging.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/omnata_plugin.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/plugin_entrypoints.py +0 -0
- {omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/rate_limiting.py +0 -0
@@ -493,7 +493,7 @@ class SnowflakeViewParts(BaseModel):
|
|
493
493
|
self.main_part.cte_text(original_name=True)
|
494
494
|
] + [
|
495
495
|
part.cte_text(original_name=True,include_only_columns=all_referenced_columns.get(part.stream_name))
|
496
|
-
for part in
|
496
|
+
for part in joined_parts_deduped
|
497
497
|
]
|
498
498
|
# we need a final CTE which selects the main part's direct columns and joined columns, with their original names
|
499
499
|
# then the final select statement will just be aliasing to the transformed names
|
@@ -535,6 +535,7 @@ class SnowflakeViewParts(BaseModel):
|
|
535
535
|
Returns the building blocks required to create a normalized view from a stream.
|
536
536
|
This includes any joins that are required, via CTEs.
|
537
537
|
"""
|
538
|
+
logger.debug(f"Generating view parts for stream: {stream_name}")
|
538
539
|
# we start with the view parts for the view we are building
|
539
540
|
main_stream_view_part = normalized_view_part(
|
540
541
|
stream_name=stream_name,
|
@@ -551,6 +552,7 @@ class SnowflakeViewParts(BaseModel):
|
|
551
552
|
and join.join_stream_name in stream_schemas]
|
552
553
|
|
553
554
|
for join in main_stream_view_part.joins:
|
555
|
+
logger.debug(f"Generating view parts for join stream: {join.join_stream_name}")
|
554
556
|
joined_parts.append(normalized_view_part(
|
555
557
|
stream_name=join.join_stream_name,
|
556
558
|
raw_table_location=raw_stream_locations[join.join_stream_name],
|
@@ -577,6 +579,7 @@ class SnowflakeViewParts(BaseModel):
|
|
577
579
|
|
578
580
|
# Process all joins to build the mappings
|
579
581
|
for part in [main_stream_view_part] + joined_parts:
|
582
|
+
logger.debug(f"Processing joins for stream: {part.stream_name}")
|
580
583
|
# Make sure the part's stream name is in the mappings
|
581
584
|
if part.stream_name not in stream_to_aliases:
|
582
585
|
stream_to_aliases[part.stream_name] = {part.stream_name}
|
@@ -656,6 +659,11 @@ class SnowflakeViewParts(BaseModel):
|
|
656
659
|
# These are not considered circular references
|
657
660
|
if all(ref_type == "join" or ref_type == "join_reverse" for ref_type, _ in refs1):
|
658
661
|
continue
|
662
|
+
|
663
|
+
# Skip self-references (same stream referencing itself)
|
664
|
+
# These are not considered circular references
|
665
|
+
if source_stream == target_stream:
|
666
|
+
continue
|
659
667
|
|
660
668
|
# Check for direct circular references
|
661
669
|
reverse_key = (target, source)
|
@@ -666,27 +674,17 @@ class SnowflakeViewParts(BaseModel):
|
|
666
674
|
if all(ref_type == "join" or ref_type == "join_reverse" for ref_type, _ in refs2):
|
667
675
|
continue
|
668
676
|
|
677
|
+
# Skip if the references are through different aliases
|
678
|
+
# This is not a circular reference
|
679
|
+
if source != target and target != source:
|
680
|
+
continue
|
681
|
+
|
669
682
|
raise ValueError(f"""Cyclic dependency detected: Circular reference between {source} and {target}.
|
670
683
|
{source} -> {target}: {refs1}
|
671
684
|
{target} -> {source}: {refs2}""")
|
672
685
|
|
673
|
-
#
|
674
|
-
|
675
|
-
if source == other_source or target == other_target:
|
676
|
-
continue # Skip self-comparisons
|
677
|
-
|
678
|
-
# Skip references that are just join relationships
|
679
|
-
if all(ref_type == "join" or ref_type == "join_reverse" for ref_type, _ in refs2):
|
680
|
-
continue
|
681
|
-
|
682
|
-
other_source_stream = alias_to_stream.get(other_source, other_source)
|
683
|
-
other_target_stream = alias_to_stream.get(other_target, other_target)
|
684
|
-
|
685
|
-
# Check if this is a circular reference through aliases
|
686
|
-
if target_stream == other_source_stream and source_stream == other_target_stream:
|
687
|
-
raise ValueError(f"""Cyclic dependency detected: Circular reference through aliases.
|
688
|
-
{source} ({source_stream}) -> {target} ({target_stream}): {refs1}
|
689
|
-
{other_source} ({other_source_stream}) -> {other_target} ({other_target_stream}): {refs2}""")
|
686
|
+
# We don't need to check for circular references through aliases
|
687
|
+
# because we're already handling them in the direct circular reference check above
|
690
688
|
|
691
689
|
# If we get here, no circular references were found
|
692
690
|
logger.debug("No circular references found")
|
@@ -702,7 +700,7 @@ class SnowflakeViewParts(BaseModel):
|
|
702
700
|
prune_count = 0
|
703
701
|
while prune(main_stream_view_part, joined_parts):
|
704
702
|
prune_count += 1
|
705
|
-
if prune_count >
|
703
|
+
if prune_count > 10:
|
706
704
|
raise ValueError("Pruning of columns from the view has entered an infinite loop")
|
707
705
|
|
708
706
|
return cls(main_part=main_stream_view_part, joined_parts=joined_parts)
|
File without changes
|
File without changes
|
File without changes
|
{omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/api.py
RENAMED
File without changes
|
File without changes
|
{omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/forms.py
RENAMED
File without changes
|
{omnata_plugin_runtime-0.10.14 → omnata_plugin_runtime-0.10.15}/src/omnata_plugin_runtime/logging.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|