Module for building and managing the code graph (Neo4j / Falkor / Kùzu).
| 24 | |
| 25 | |
| 26 | class GraphBuilder: |
| 27 | """Module for building and managing the code graph (Neo4j / Falkor / Kùzu).""" |
| 28 | |
| 29 | def __init__(self, db_manager: DatabaseManager, job_manager: JobManager, loop: asyncio.AbstractEventLoop): |
| 30 | self.db_manager = db_manager |
| 31 | self.job_manager = job_manager |
| 32 | self.loop = loop |
| 33 | self.driver = self.db_manager.get_driver() |
| 34 | self._writer = GraphWriter(self.driver) |
| 35 | self.parsers = { |
| 36 | ".py": "python", |
| 37 | ".ipynb": "python", |
| 38 | ".js": "javascript", |
| 39 | ".jsx": "javascript", |
| 40 | ".mjs": "javascript", |
| 41 | ".cjs": "javascript", |
| 42 | ".go": "go", |
| 43 | ".ts": "typescript", |
| 44 | ".d.ts": "typescript", |
| 45 | ".tsx": "tsx", |
| 46 | ".cpp": "cpp", |
| 47 | ".h": "cpp", |
| 48 | ".hpp": "cpp", |
| 49 | ".hh": "cpp", |
| 50 | ".rs": "rust", |
| 51 | ".c": "c", |
| 52 | ".java": "java", |
| 53 | ".rb": "ruby", |
| 54 | ".cs": "c_sharp", |
| 55 | ".php": "php", |
| 56 | ".kt": "kotlin", |
| 57 | ".scala": "scala", |
| 58 | ".sc": "scala", |
| 59 | ".swift": "swift", |
| 60 | ".hs": "haskell", |
| 61 | ".dart": "dart", |
| 62 | ".pl": "perl", |
| 63 | ".pm": "perl", |
| 64 | ".lua": "lua", |
| 65 | ".ex": "elixir", |
| 66 | ".exs": "elixir", |
| 67 | ".html": "html", |
| 68 | ".css": "css", |
| 69 | } |
| 70 | |
| 71 | # Files that should be added to the graph as minimal File nodes, even if not parsed |
| 72 | self.generic_extensions = { |
| 73 | ".toml", ".sh", ".yaml", ".yml", ".json", ".ini", ".cfg", ".md", ".txt", ".env", |
| 74 | ".bat", ".ps1", ".dockerignore", ".gitignore" |
| 75 | } |
| 76 | self.generic_filenames = { |
| 77 | "Dockerfile", "Makefile" |
| 78 | } |
| 79 | |
| 80 | self._parsed_cache = {} |
| 81 | self.create_schema() |
| 82 | |
| 83 | def get_parser(self, extension: str) -> Optional[TreeSitterParser]: |
no outgoing calls
no test coverage detected