InfoTracker 0.3.1__py3-none-any.whl → 0.4.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.
- infotracker/__init__.py +1 -1
- infotracker/cli.py +11 -0
- infotracker/engine.py +27 -11
- infotracker/infotracker.yml +1 -1
- infotracker/io_utils.py +312 -0
- infotracker/lineage.py +143 -13
- infotracker/models.py +4 -0
- infotracker/openlineage_utils.py +16 -0
- infotracker/parser.py +1748 -229
- {infotracker-0.3.1.dist-info → infotracker-0.4.0.dist-info}/METADATA +1 -1
- infotracker-0.4.0.dist-info/RECORD +17 -0
- infotracker-0.3.1.dist-info/RECORD +0 -16
- {infotracker-0.3.1.dist-info → infotracker-0.4.0.dist-info}/WHEEL +0 -0
- {infotracker-0.3.1.dist-info → infotracker-0.4.0.dist-info}/entry_points.txt +0 -0
infotracker/models.py
CHANGED
@@ -29,6 +29,8 @@ class TransformationType(Enum):
|
|
29
29
|
DATE_FUNCTION_AGGREGATION = "DATE_FUNCTION_AGGREGATION"
|
30
30
|
CASE_AGGREGATION = "CASE_AGGREGATION"
|
31
31
|
EXEC = "EXEC"
|
32
|
+
CONSTANT = "CONSTANT"
|
33
|
+
UNKNOWN = "UNKNOWN"
|
32
34
|
|
33
35
|
|
34
36
|
@dataclass
|
@@ -83,6 +85,8 @@ class ObjectInfo:
|
|
83
85
|
schema: TableSchema
|
84
86
|
lineage: List[ColumnLineage] = field(default_factory=list)
|
85
87
|
dependencies: Set[str] = field(default_factory=set) # Tables this object depends on
|
88
|
+
is_fallback: bool = field(default=False) # Whether this was created by fallback parsing
|
89
|
+
no_output_reason: Optional[str] = field(default=None) # Reason for no persistent output
|
86
90
|
|
87
91
|
|
88
92
|
class SchemaRegistry:
|
infotracker/openlineage_utils.py
CHANGED
@@ -163,3 +163,19 @@ def qualify_identifier(identifier: str, default_database: Optional[str] = None)
|
|
163
163
|
else:
|
164
164
|
# Already fully qualified
|
165
165
|
return identifier
|
166
|
+
|
167
|
+
|
168
|
+
def sanitize_name(name: str) -> str:
|
169
|
+
"""Sanitize object name by removing trailing semicolons and whitespace.
|
170
|
+
|
171
|
+
Args:
|
172
|
+
name: Object name to sanitize
|
173
|
+
|
174
|
+
Returns:
|
175
|
+
Sanitized name
|
176
|
+
"""
|
177
|
+
if not name:
|
178
|
+
return name
|
179
|
+
|
180
|
+
# Remove trailing semicolons and whitespace
|
181
|
+
return name.rstrip(';').strip()
|