sql-code-graph 0.2.1__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.
- sql_code_graph-0.2.1.dist-info/METADATA +171 -0
- sql_code_graph-0.2.1.dist-info/RECORD +55 -0
- sql_code_graph-0.2.1.dist-info/WHEEL +4 -0
- sql_code_graph-0.2.1.dist-info/entry_points.txt +2 -0
- sqlcg/__init__.py +5 -0
- sqlcg/__main__.py +6 -0
- sqlcg/cli/__init__.py +1 -0
- sqlcg/cli/commands/__init__.py +1 -0
- sqlcg/cli/commands/analyze.py +93 -0
- sqlcg/cli/commands/db.py +83 -0
- sqlcg/cli/commands/find.py +63 -0
- sqlcg/cli/commands/gain.py +169 -0
- sqlcg/cli/commands/git.py +73 -0
- sqlcg/cli/commands/index.py +92 -0
- sqlcg/cli/commands/install.py +60 -0
- sqlcg/cli/commands/mcp.py +54 -0
- sqlcg/cli/commands/report.py +135 -0
- sqlcg/cli/commands/watch.py +57 -0
- sqlcg/cli/main.py +40 -0
- sqlcg/core/__init__.py +8 -0
- sqlcg/core/config.py +104 -0
- sqlcg/core/graph_db.py +179 -0
- sqlcg/core/jobs.py +105 -0
- sqlcg/core/kuzu_backend.py +269 -0
- sqlcg/core/neo4j_backend.py +195 -0
- sqlcg/core/queries.py +82 -0
- sqlcg/core/schema.cypher +104 -0
- sqlcg/core/schema.py +48 -0
- sqlcg/indexer/__init__.py +1 -0
- sqlcg/indexer/dbt_adapter.py +23 -0
- sqlcg/indexer/indexer.py +317 -0
- sqlcg/indexer/walker.py +55 -0
- sqlcg/indexer/watcher.py +195 -0
- sqlcg/lineage/__init__.py +1 -0
- sqlcg/lineage/aggregator.py +58 -0
- sqlcg/lineage/schema_resolver.py +198 -0
- sqlcg/metrics/__init__.py +5 -0
- sqlcg/metrics/store.py +273 -0
- sqlcg/parsers/__init__.py +30 -0
- sqlcg/parsers/ansi_parser.py +215 -0
- sqlcg/parsers/base.py +414 -0
- sqlcg/parsers/bigquery_parser.py +77 -0
- sqlcg/parsers/postgres_parser.py +27 -0
- sqlcg/parsers/registry.py +46 -0
- sqlcg/parsers/snowflake_parser.py +148 -0
- sqlcg/parsers/tsql_parser.py +27 -0
- sqlcg/server/__init__.py +1 -0
- sqlcg/server/exceptions.py +20 -0
- sqlcg/server/models.py +83 -0
- sqlcg/server/server.py +57 -0
- sqlcg/server/tools.py +663 -0
- sqlcg/utils/__init__.py +6 -0
- sqlcg/utils/hashing.py +18 -0
- sqlcg/utils/ignore.py +36 -0
- sqlcg/utils/logging.py +29 -0
sqlcg/utils/ignore.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Utilities for handling .sqlcgignore patterns."""
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import pathspec
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def load_ignore_spec(root: Path) -> pathspec.PathSpec:
|
|
9
|
+
"""Load .sqlcgignore patterns from root directory.
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
root: Root directory to search for .sqlcgignore
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
PathSpec object for matching ignore patterns
|
|
16
|
+
"""
|
|
17
|
+
ignore_file = root / ".sqlcgignore"
|
|
18
|
+
if ignore_file.exists():
|
|
19
|
+
patterns = ignore_file.read_text().splitlines()
|
|
20
|
+
else:
|
|
21
|
+
patterns = []
|
|
22
|
+
return pathspec.PathSpec.from_lines("gitwildmatch", patterns)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def is_ignored(path: Path, root: Path, spec: pathspec.PathSpec) -> bool:
|
|
26
|
+
"""Check if a path matches any ignore patterns.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
path: Path to check
|
|
30
|
+
root: Root directory (for relative path calculation)
|
|
31
|
+
spec: PathSpec object with patterns
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
True if the path matches any ignore pattern
|
|
35
|
+
"""
|
|
36
|
+
return spec.match_file(str(path.relative_to(root)))
|
sqlcg/utils/logging.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Logging utilities for sqlcg.
|
|
2
|
+
|
|
3
|
+
All logging is directed to stderr to keep stdout clean for tool output.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import logging
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def getLogger(name: str | None = None) -> logging.Logger:
|
|
11
|
+
"""Get a logger instance configured to write to stderr.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
name: Logger name (typically __name__ of the calling module)
|
|
15
|
+
|
|
16
|
+
Returns:
|
|
17
|
+
A logging.Logger configured with a StreamHandler to sys.stderr.
|
|
18
|
+
"""
|
|
19
|
+
logger = logging.getLogger(name)
|
|
20
|
+
|
|
21
|
+
# Only add handler if not already configured to avoid duplicates
|
|
22
|
+
if not logger.handlers:
|
|
23
|
+
handler = logging.StreamHandler(sys.stderr)
|
|
24
|
+
formatter = logging.Formatter("%(asctime)s [%(name)s] %(levelname)s: %(message)s")
|
|
25
|
+
handler.setFormatter(formatter)
|
|
26
|
+
logger.addHandler(handler)
|
|
27
|
+
logger.setLevel(logging.INFO)
|
|
28
|
+
|
|
29
|
+
return logger
|