This commit adds full VB.NET language support to graphify, raising the supported language count from 25 to 26. The implementation follows the established LanguageConfig pattern used by all other tree-sitter-backed extractors. New dependency: - Adds optional extra [vbnet] backed by tree-sitter-vbnet (published to PyPI at https://pypi.org/project/tree-sitter-vbnet/0.1.0/). Install with: pip install graphifyy[vbnet] graphify/detect.py: - Added .vb to CODE_EXTENSIONS so VB.NET files are discovered during corpus ingestion and file-system watching. graphify/extract.py: - _import_vbnet(): import handler for imports_statement nodes; emits imports edges using the namespace_name child text. - _vbnet_extra_walk(): extra-walk hook that intercepts namespace_block nodes, emits a namespace node, and recurses. - _VBNET_CONFIG: full LanguageConfig covering class_block / module_block / structure_block / interface_block as class types; method_declaration / constructor_declaration / property_declaration as function types; invocation call nodes with target/member_access fields. - VB.NET-specific branches in _extract_generic: * Class body: VB.NET has no wrapper body node; inherits and implements are named fields directly on the class_block. Emits separate inherits and implements edges for each base type, stripping generic arguments. * Constructor name: constructor_declaration carries no name field in the grammar; always resolves to New. * Function body: uses the declaration node itself as body sentinel so the call-graph pass can find invocations inside methods. - extract_vbnet(path): public wrapper that delegates to _extract_generic. - _DISPATCH['.vb']: routes .vb files to extract_vbnet. pyproject.toml: - Added vbnet = ['tree-sitter-vbnet'] optional dependency group. - Added 'tree-sitter-vbnet' to the all extra. tests/fixtures/sample.vb: - New fixture file exercising: Imports statements, Namespace block, Interface, Class with Inherits + Implements, Module, Structure, Sub/Function/Property methods, and method calls. tests/test_languages.py: - Added 13 tests covering: no-error, class/interface/module/structure detection, method detection, imports relation, inherits edge, implements edge, and no-dangling-edges invariant. README.md: - Updated language count 25 to 26. - Added VB.NET to language list and file-extension table.
72 lines
2.4 KiB
TOML
72 lines
2.4 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "graphifyy"
|
|
version = "0.6.0"
|
|
description = "AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph"
|
|
readme = "README.md"
|
|
license = { file = "LICENSE" }
|
|
keywords = ["claude", "claude-code", "codex", "opencode", "cursor", "gemini", "aider", "kiro", "knowledge-graph", "rag", "graphrag", "obsidian", "community-detection", "tree-sitter", "leiden", "llm"]
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"networkx",
|
|
"tree-sitter>=0.23.0",
|
|
"tree-sitter-python",
|
|
"tree-sitter-javascript",
|
|
"tree-sitter-typescript",
|
|
"tree-sitter-go",
|
|
"tree-sitter-rust",
|
|
"tree-sitter-java",
|
|
"tree-sitter-c",
|
|
"tree-sitter-cpp",
|
|
"tree-sitter-ruby",
|
|
"tree-sitter-c-sharp",
|
|
"tree-sitter-kotlin",
|
|
"tree-sitter-scala",
|
|
"tree-sitter-php",
|
|
"tree-sitter-swift",
|
|
"tree-sitter-lua",
|
|
"tree-sitter-zig",
|
|
"tree-sitter-powershell",
|
|
"tree-sitter-elixir",
|
|
"tree-sitter-objc",
|
|
"tree-sitter-julia",
|
|
"tree-sitter-verilog",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/safishamsi/graphify"
|
|
Repository = "https://github.com/safishamsi/graphify"
|
|
Issues = "https://github.com/safishamsi/graphify/issues"
|
|
|
|
[project.optional-dependencies]
|
|
mcp = ["mcp"]
|
|
neo4j = ["neo4j"]
|
|
pdf = ["pypdf", "html2text"]
|
|
watch = ["watchdog"]
|
|
svg = ["matplotlib"]
|
|
leiden = ["graspologic; python_version < '3.13'"]
|
|
office = ["python-docx", "openpyxl"]
|
|
video = ["faster-whisper", "yt-dlp"]
|
|
kimi = ["openai"]
|
|
sql = ["tree-sitter-sql"]
|
|
vbnet = ["tree-sitter-vbnet"]
|
|
all = ["mcp", "neo4j", "pypdf", "html2text", "watchdog", "graspologic; python_version < '3.13'", "python-docx", "openpyxl", "faster-whisper", "yt-dlp", "matplotlib", "openai", "tree-sitter-sql", "tree-sitter-vbnet"]
|
|
|
|
[project.scripts]
|
|
graphify = "graphify.__main__:main"
|
|
|
|
[tool.uv]
|
|
# Install via: uv tool install graphifyy
|
|
# Run without installing: uvx graphifyy install
|
|
package = true
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["graphify*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
graphify = ["skill.md", "skill-codex.md", "skill-opencode.md", "skill-aider.md", "skill-copilot.md", "skill-claw.md", "skill-windows.md", "skill-droid.md", "skill-trae.md", "skill-kiro.md", "skill-vscode.md"]
|