Generated on: 2025-08-29 16:17:51 Total files analyzed: 19
- Total Classes: 78
- Total Functions: 13
- Total Lines of Code: 10223
Lines: 380 | Classes: 5 | Functions: 1
Description:
VysualPy Project Analyzer
This tool scans the VysualPy source files and generates a structural overview of classes, functions, and their relationships. It helps track the codebase during refactoring and provides quick reference information.
Usage: python analyze_project.py [--output PROJECT_STRUCTURE.md] [--json project_structure.json]
Key Imports:
astosjsonargparsefrom pathlib import Pathfrom typing import Dictfrom typing import Listfrom typing import Tuplefrom typing import Anyfrom typing import Optional- ... and 2 more
Classes:
FunctionInfo(line 23)ClassInfo(line 36)FileInfo(line 47)ProjectAnalyzer(line 57)__init__()(method)analyze_file()(method)analyze_project()(method)generate_markdown_report()(method)_format_file_info()(method)- ... and 2 more methods
FileVisitor(NodeVisitor)(line 212)__init__()(method)visit_Module()(method)visit_Import()(method)visit_ImportFrom()(method)visit_ClassDef()(method)- ... and 5 more methods
Functions:
main()(function, line 343)
Lines: 116 | Classes: 1 | Functions: 1
Description:
Debug script to test multi-selection functionality with new node system.
Key Imports:
sysfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QLabelfrom PyQt5.QtCore import Qtfrom PyQt5.QtGui import QBrushfrom PyQt5.QtGui import QColorfrom vpy_node_types import BlueprintNode- ... and 3 more
Classes:
MultiSelectDebugWindow(QMainWindow)(line 15)__init__()(method)create_test_nodes()(method)
Functions:
main()(function, line 102)
Lines: 1181 | Classes: 4 | Functions: 1
Description:
Comprehensive debug application for VysualPy node system.
Features:
- Right-click context menus for creating nodes
- Full support for Blueprint, Execution, and Buildable nodes
- Multi-selection and group operations
- Node editing and property management
- Visual feedback and state management
Key Imports:
sysfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QLabelfrom PyQt5.QtWidgets import QMenufrom PyQt5.QtWidgets import QActionfrom PyQt5.QtWidgets import QInputDialogfrom PyQt5.QtWidgets import QMessageBox- ... and 20 more
Classes:
NodeCreationDialog(QDialog)(line 28)__init__()(method)get_default_content()(method)get_node_data()(method)
SimpleConnection(QGraphicsPathItem)(line 103)__init__()(method)updatePath()(method)paint()(method)setEndPoint()(method)updateForNodeMovement()(method)- ... and 9 more methods
EnhancedBlueprintScene(BlueprintScene)(line 486)__init__()(method)showContextMenu()(method)create_node_at_position()(method)clear_all_nodes()(method)delete_selected_nodes()(method)- ... and 9 more methods
NodeSystemDebugWindow(QMainWindow)(line 987)__init__()(method)create_sample_nodes()(method)update_window_title()(method)open_demo_text_editor()(method)
Functions:
main()(function, line 1157)
Lines: 81 | Classes: 1 | Functions: 1
Description:
Debug script to test node rendering in isolation.
Key Imports:
sysfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QGraphicsScenefrom PyQt5.QtWidgets import QGraphicsViewfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtCore import QRectFfrom PyQt5.QtCore import QPointFfrom PyQt5.QtGui import QColor- ... and 2 more
Classes:
DebugWindow(QMainWindow)(line 14)__init__()(method)create_test_nodes()(method)
Functions:
main()(function, line 72)
Lines: 10 | Classes: 0 | Functions: 0
Key Imports:
sysfrom PyQt5.QtWidgets import QApplicationfrom vpy_editor import PythonIDE
Lines: 1602 | Classes: 12 | Functions: 1
Key Imports:
astbuiltinsjsonfrom PyQt5.QtWidgets import QGraphicsScenefrom PyQt5.QtWidgets import QGraphicsViewfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QMenuBarfrom PyQt5.QtWidgets import QAction- ... and 22 more
Classes:
GraphLayoutOptimizer(line 18)__init__()(method)optimize()(method)
FunctionCallCollector(NodeVisitor)(line 70)__init__()(method)visit_FunctionDef()(method)visit_AsyncFunctionDef()(method)visit_Call()(method)_get_callable_name()(method)- ... and 1 more methods
BlueprintScene(QGraphicsScene)(line 124)__init__()(method)mouseMoveEvent()(method)mouseReleaseEvent()(method)mousePressEvent()(method)showContextMenu()(method)
BlueprintView(QGraphicsView)(line 203)__init__()(method)keyPressEvent()(method)mousePressEvent()(method)mouseMoveEvent()(method)mouseReleaseEvent()(method)- ... and 2 more methods
BlueprintGraphWindow(QMainWindow, CustomWindowMixin)(line 304)__init__()(method)showPreferences()(method)updateGridSize()(method)saveBlueprintWorkspace()(method)loadBlueprintWorkspace()(method)- ... and 6 more methods
FunctionCallVisitor(NodeVisitor)(line 668)__init__()(method)should_include_call()(method)visit_Module()(method)visit_If()(method)visit_While()(method)- ... and 9 more methods
ExecutionScene(BlueprintScene)(line 852)__init__()(method)
ExecutionView(BlueprintView)(line 857)__init__()(method)
ExecutionGraphWindow(QMainWindow, CustomWindowMixin)(line 862)__init__()(method)addCommentBoxToScene()(method)create_menus()(method)showPreferences()(method)updateGridSize()(method)- ... and 8 more methods
BuildGraphScene(BlueprintScene)(line 1227)__init__()(method)should_initialize()(method)initialize_default_structure()(method)keyPressEvent()(method)mousePressEvent()(method)- ... and 3 more methods
BuildGraphView(BlueprintView)(line 1409)__init__()(method)keyPressEvent()(method)deleteSelectedNodes()(method)mousePressEvent()(method)
BuildGraphWindow(QMainWindow)(line 1502)__init__()(method)addCommentBoxToScene()(method)confirm_code_replacement()(method)create_initial_nodes()(method)setup_menus()(method)
Functions:
detect_function_calls(source_code)(function, line 28)
Lines: 139 | Classes: 2 | Functions: 0
Key Imports:
from os import pathfrom os import makedirsfrom os import listdirjson
Classes:
LanguageConfig(line 5)__init__()(method)load_configs()(method)create_default_config()(method)get_language_config()(method)get_language_by_name()(method)
ConfigManager(line 59)__init__()(method)ensure_config_exists()(method)get_default_config()(method)load_config()(method)save_config()(method)- ... and 1 more methods
Lines: 153 | Classes: 2 | Functions: 0
Key Imports:
from PyQt5.QtWidgets import QGraphicsEllipseItemfrom PyQt5.QtWidgets import QGraphicsPathItemfrom PyQt5.QtCore import Qtfrom PyQt5.QtCore import QPointFfrom PyQt5.QtGui import QPenfrom PyQt5.QtGui import QColorfrom PyQt5.QtGui import QPainterPathre
Classes:
ConnectionPoint(QGraphicsEllipseItem)(line 13)__init__()(method)mousePressEvent()(method)addConnection()(method)removeConnection()(method)showContextMenu()(method)- ... and 2 more methods
Connection(QGraphicsPathItem)(line 70)__init__()(method)updatePath()(method)setEndPoint()(method)cleanup()(method)
Lines: 498 | Classes: 4 | Functions: 0
Description:
Enhanced connection system for VysualPy.
Provides improved connection management, validation, and visual feedback while maintaining backward compatibility with the existing system.
Key Imports:
from typing import Dictfrom typing import Listfrom typing import Anyfrom typing import Optionalfrom typing import Callablefrom typing import Setfrom enum import Enumuuidfrom PyQt5.QtWidgets import QGraphicsPathItemfrom PyQt5.QtWidgets import QGraphicsScene- ... and 11 more
Classes:
ConnectionStyle(Enum)(line 19)ConnectionState(Enum)(line 27)Connection(QGraphicsPathItem, BaseConnection)(line 36)__init__()(method)setEndPoint()(method)updatePath()(method)updatePen()(method)validate()(method)- ... and 9 more methods
ConnectionManager(QObject)(line 340)__init__()(method)add_validation_rule()(method)start_connection()(method)update_connection()(method)complete_connection()(method)- ... and 9 more methods
Lines: 76 | Classes: 2 | Functions: 0
Key Imports:
from PyQt5.QtWidgets import QPushButtonfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QHBoxLayoutfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QListWidgetfrom PyQt5.QtWidgets import QColorDialogfrom PyQt5.QtWidgets import QFileDialog
Classes:
ColorButton(QPushButton)(line 6)__init__()(method)setColor()(method)choose_color()(method)getColor()(method)
PathListWidget(QWidget)(line 24)__init__()(method)initUI()(method)add_path()(method)remove_path()(method)edit_path()(method)- ... and 2 more methods
Lines: 1892 | Classes: 8 | Functions: 0
Key Imports:
reossubprocessfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtWidgets import QMenuBarfrom PyQt5.QtWidgets import QActionfrom PyQt5.QtWidgets import QTextEditfrom PyQt5.QtWidgets import QMessageBoxfrom PyQt5.QtWidgets import QGraphicsViewfrom PyQt5.QtWidgets import QFileDialog- ... and 37 more
Classes:
GlobalNodeTextEditor(QMainWindow, CustomWindowMixin)(line 30)__init__()(method)add_tracked_node()(method)remove_tracked_node()(method)refresh_tracked_nodes()(method)refresh_node_selector()(method)- ... and 8 more methods
ExternalTextEditorDialog(QMainWindow, CustomWindowMixin)(line 390)__init__()(method)on_content_changed()(method)save_and_sync()(method)cancel_editing()(method)closeEvent()(method)- ... and 2 more methods
CodeViewerWindow(QMainWindow, CustomWindowMixin)(line 610)__init__()(method)
SyntaxHighlighter(QSyntaxHighlighter)(line 646)__init__()(method)setup_default_format()(method)load_language()(method)setup_formats()(method)highlightBlock()(method)
LineNumberArea(QWidget)(line 719)__init__()(method)sizeHint()(method)paintEvent()(method)
CodeEditor(QTextEdit)(line 730)__init__()(method)handleScrollRangeChange()(method)handleTextChanged()(method)lineNumberAreaPaintEvent()(method)line_number_area_width()(method)- ... and 7 more methods
EditorTabs(QTabWidget)(line 1045)__init__()(method)add_new_tab()(method)_create_code_editor()(method)_mark_dirty()(method)_mark_clean()(method)- ... and 6 more methods
PythonIDE(QMainWindow)(line 1272)__init__()(method)initUI()(method)createMenuBar()(method)createMenus()(method)toggleMaximized()(method)- ... and 26 more methods
Lines: 531 | Classes: 4 | Functions: 0
Key Imports:
refrom PyQt5.QtWidgets import QGraphicsRectItemfrom PyQt5.QtWidgets import QGraphicsTextItemfrom PyQt5.QtWidgets import QInputDialogfrom PyQt5.QtWidgets import QGraphicsItemfrom PyQt5.QtCore import QRectFfrom PyQt5.QtCore import Qtfrom PyQt5.QtGui import QColorfrom PyQt5.QtGui import QBrushfrom PyQt5.QtGui import QPen- ... and 3 more
Classes:
CommentBox(QGraphicsRectItem)(line 17)__init__()(method)mousePressEvent()(method)mouseMoveEvent()(method)mouseReleaseEvent()(method)paint()(method)- ... and 1 more methods
DraggableRect(QGraphicsRectItem)(line 103)__init__()(method)snapToGrid()(method)updateConnectionPoints()(method)updateConnectedLines()(method)mousePressEvent()(method)- ... and 3 more methods
ExecutionDraggableRect(DraggableRect)(line 228)__init__()(method)itemChange()(method)updateConnectedLines()(method)mousePressEvent()(method)mouseMoveEvent()(method)
BuildableNode(QGraphicsRectItem)(line 332)__init__()(method)updateConnectionPoints()(method)updateTitle()(method)startEditing()(method)stopEditing()(method)- ... and 6 more methods
Lines: 297 | Classes: 5 | Functions: 0
Key Imports:
from PyQt5.QtWidgets import QTreeViewfrom PyQt5.QtWidgets import QFileSystemModelfrom PyQt5.QtWidgets import QDockWidgetfrom PyQt5.QtWidgets import QPlainTextEditfrom PyQt5.QtWidgets import QSplitterfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QHBoxLayoutfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QPushButtonfrom PyQt5.QtWidgets import QStyle- ... and 7 more
Classes:
ProjectBrowser(QWidget)(line 10)__init__()(method)load_project()(method)close_project()(method)on_file_clicked()(method)
FileBrowser(QWidget)(line 99)__init__()(method)set_current_directory()(method)on_file_clicked()(method)
BrowserTabs(QDockWidget)(line 154)__init__()(method)
Terminal(QDockWidget)(line 191)__init__()(method)write()(method)flush()(method)clear_output()(method)restore_stdout()(method)
IDELayout(line 259)setup()(method)
Lines: 351 | Classes: 7 | Functions: 5
Description:
Backward compatibility layer for VysualPy refactored architecture.
This module provides compatibility wrappers and import paths for existing code that relies on the old node and connection classes.
Key Imports:
warningsfrom typing import Anyfrom typing import Dictfrom typing import Optionalfrom PyQt5.QtCore import QPointFfrom PyQt5.QtCore import QRectFfrom PyQt5.QtWidgets import QGraphicsScenefrom vpy_node_base import BaseNodefrom vpy_node_base import NodeTypefrom vpy_node_base import NodeState- ... and 7 more
Classes:
DraggableRect(BlueprintNode)(line 30)__init__()(method)full_content()(method)full_content()(method)snapToGrid()(method)
ExecutionDraggableRect(ExecutionNode)(line 74)__init__()(method)full_content()(method)full_content()(method)
LegacyConnection(line 109)__init__()(method)setEndPoint()(method)updatePath()(method)__getattr__()(method)
CommentBox(CommentNode)(line 157)__init__()(method)
ConnectionPoint(line 177)__init__()(method)parentItem()(method)connections()(method)
LegacyGraphModule(line 240)__getattr__()(method)
LegacyConnectionModule(line 257)__getattr__()(method)
Functions:
_deprecated_warning(old_name, new_name, version)(function, line 20)create_legacy_node(node_type)(function, line 214)setup_legacy_imports()(function, line 231)migrate_workspace_data(old_data)(function, line 270)check_compatibility()(function, line 309)
Lines: 682 | Classes: 4 | Functions: 0
Key Imports:
jsonfrom os import pathfrom os import makedirsfrom os.path import expanduserfrom os.path import existsfrom os.path import basenamefrom pathlib import Pathfrom PyQt5.QtWidgets import QActionfrom PyQt5.QtWidgets import QMenufrom PyQt5.QtWidgets import QDialog- ... and 20 more
Classes:
PresetDialog(QDialog)(line 19)__init__()(method)get_name()(method)
PreferencesDialog(QDialog)(line 48)__init__()(method)_collect_values()(method)save_and_close()(method)load_saved_preferences()(method)populate_fields_from_config()(method)- ... and 15 more methods
RecentFiles(line 558)__init__()(method)add_file()(method)remove_file()(method)get_files()(method)clear()(method)- ... and 2 more methods
RecentFilesMenu(QMenu)(line 626)__init__()(method)update_menu()(method)add_recent_file()(method)open_recent_file()(method)clear_recent_files()(method)
Lines: 481 | Classes: 8 | Functions: 0
Description:
Base node system for VysualPy graph architecture.
This module provides the foundation for a unified node system that eliminates code duplication and provides clear interfaces for different node types.
Key Imports:
from abc import ABCMetafrom abc import abstractmethodfrom typing import Dictfrom typing import Listfrom typing import Anyfrom typing import Optionalfrom typing import Setfrom typing import Unionfrom typing import Callablefrom enum import Enum- ... and 8 more
Classes:
QGraphicsABCMeta(ABCMeta)(line 19)NodeType(Enum)(line 24)PortType(Enum)(line 32)ConnectionPort(line 39)__init__()(method)can_connect_to()(method)add_connection()(method)remove_connection()(method)
BaseConnection(line 81)__init__()(method)disconnect()(method)serialize()(method)
NodeState(Enum)(line 114)BaseNode(QGraphicsRectItem)(line 124)__init__()(method)add_input_port()(method)add_output_port()(method)remove_port()(method)_update_port_positions()(method)- ... and 18 more methods
NodeRegistry(line 451)__init__()(method)register_node_class()(method)register_factory_function()(method)create_node()(method)get_available_types()(method)
Lines: 826 | Classes: 3 | Functions: 0
Description:
Mixin classes for VysualPy node system.
These mixins provide shared functionality that can be composed into different node types, promoting code reuse and separation of concerns.
Key Imports:
from typing import Optionalfrom typing import Dictfrom typing import Anyfrom abc import ABCfrom abc import abstractmethodfrom PyQt5.QtWidgets import QGraphicsTextItemfrom PyQt5.QtWidgets import QGraphicsRectItemfrom PyQt5.QtWidgets import QMenufrom PyQt5.QtWidgets import QActionfrom PyQt5.QtWidgets import QInputDialog- ... and 17 more
Classes:
RenderMixin(line 24)__init__()(method)get_node_color()(method)paint()(method)get_border_color()(method)paint_title()(method)- ... and 9 more methods
InteractionMixin(line 381)__init__()(method)mousePressEvent()(method)mouseDoubleClickEvent()(method)mouseMoveEvent()(method)mouseReleaseEvent()(method)- ... and 9 more methods
EditableMixin(line 634)__init__()(method)startEditing()(method)stopEditing()(method)cancelEdit()(method)commitEdit()(method)- ... and 4 more methods
Lines: 724 | Classes: 5 | Functions: 3
Description:
Concrete implementations of different node types for VysualPy.
These classes combine the BaseNode with appropriate mixins to create specialized node types for different use cases.
Key Imports:
astrefrom typing import Dictfrom typing import Listfrom typing import Anyfrom typing import Optionalfrom PyQt5.QtCore import QPointFfrom PyQt5.QtCore import QRectFfrom PyQt5.QtGui import QColorfrom PyQt5.QtGui import QFontMetrics- ... and 10 more
Classes:
BlueprintNode(BaseNode, RenderMixin, InteractionMixin)(line 19)__init__()(method)analyze_content()(method)get_display_name()(method)get_tooltip_text()(method)auto_resize_to_content()(method)- ... and 3 more methods
ExecutionNode(BaseNode, RenderMixin, InteractionMixin)(line 177)__init__()(method)set_conditional()(method)set_has_return()(method)get_display_name()(method)get_tooltip_text()(method)- ... and 2 more methods
BuildableNode(BaseNode, RenderMixin, InteractionMixin, EditableMixin)(line 246)__init__()(method)_setup_initial_ports()(method)_update_buildable_port_positions()(method)auto_resize_to_content()(method)calculate_text_editor_dimensions()(method)- ... and 11 more methods
LegacyConnectionPoint(line 597)__init__()(method)setPos()(method)pos()(method)scenePos()(method)parentItem()(method)- ... and 2 more methods
CommentNode(BaseNode, RenderMixin, InteractionMixin, EditableMixin)(line 636)__init__()(method)get_display_name()(method)get_tooltip_text()(method)can_accept_content()(method)process_content_change()(method)
Functions:
register_node_types()(function, line 692)create_draggable_rect()(function, line 700)create_execution_draggable_rect()(function, line 709)
Lines: 203 | Classes: 1 | Functions: 0
Key Imports:
from PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QHBoxLayoutfrom PyQt5.QtWidgets import QFramefrom PyQt5.QtWidgets import QLabelfrom PyQt5.QtWidgets import QPushButtonfrom PyQt5.QtCore import Qtfrom PyQt5.QtGui import QIcon
Classes:
CustomWindowMixin(line 11)setupCustomTitleBar()(method)mousePressEvent()(method)mouseMoveEvent()(method)mouseReleaseEvent()(method)changeCursor()(method)- ... and 8 more methods