pyqt-code-editor 0.0.58__tar.gz → 0.0.59__tar.gz

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.
Files changed (91) hide show
  1. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/PKG-INFO +1 -1
  2. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/__init__.py +1 -1
  3. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/sigmund/sigmund_analyst_widget.py +63 -3
  4. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/COPYING +0 -0
  5. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyproject.toml +0 -0
  6. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/_settings.py +0 -0
  7. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/app.py +0 -0
  8. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/__init__.py +0 -0
  9. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/code_editors.py +0 -0
  10. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/languages/__init__.py +0 -0
  11. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/languages/generic.py +0 -0
  12. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/languages/javascript.py +0 -0
  13. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/languages/markdown.py +0 -0
  14. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/languages/python.py +0 -0
  15. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/code_editors/languages/text.py +0 -0
  16. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/__init__.py +0 -0
  17. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/editor_panel.py +0 -0
  18. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/find_in_files.py +0 -0
  19. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/jupyter_console/__init__.py +0 -0
  20. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/jupyter_console/jupyter_console.py +0 -0
  21. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/jupyter_console/jupyter_console_tab.py +0 -0
  22. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/jupyter_console/kernel_spec_manager.py +0 -0
  23. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/project_explorer.py +0 -0
  24. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/settings_panel.py +0 -0
  25. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/sigmund/__init__.py +0 -0
  26. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/sigmund/confirm_run_code_dialog.py +0 -0
  27. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/sigmund/editor_workspace.py +0 -0
  28. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/sigmund/sigmund.py +0 -0
  29. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/sigmund/sigmund_analyst_chat_widget.py +0 -0
  30. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/components/workspace_explorer.py +0 -0
  31. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/environment_manager.py +0 -0
  32. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/__init__.py +0 -0
  33. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/auto_indent.py +0 -0
  34. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/auto_pair.py +0 -0
  35. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/base.py +0 -0
  36. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/check.py +0 -0
  37. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/comment.py +0 -0
  38. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/complete.py +0 -0
  39. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/execute.py +0 -0
  40. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/file_link.py +0 -0
  41. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/highlight_matching_brackets.py +0 -0
  42. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/line_number.py +0 -0
  43. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/merge_undo_actions.py +0 -0
  44. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/python_auto_indent.py +0 -0
  45. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/search_replace.py +0 -0
  46. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/shortcuts.py +0 -0
  47. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/smart_backspace_delete.py +0 -0
  48. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/symbols.py +0 -0
  49. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/theme.py +0 -0
  50. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/widgets/__init__.py +0 -0
  51. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/mixins/zoom.py +0 -0
  52. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/sigmund-analyst.png +0 -0
  53. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/signal_router.py +0 -0
  54. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/syntax_highlighters/__init__.py +0 -0
  55. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/syntax_highlighters/languages/__init__.py +0 -0
  56. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/syntax_highlighters/languages/generic.py +0 -0
  57. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/syntax_highlighters/languages/python.py +0 -0
  58. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/syntax_highlighters/syntax_highlighter.py +0 -0
  59. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/themes.py +0 -0
  60. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/utils/__init__.py +0 -0
  61. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/utils/languages/__init__.py +0 -0
  62. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/utils/languages/python/__init__.py +0 -0
  63. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/utils/languages/python/_auto_indent.py +0 -0
  64. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/utils/languages/python/_extract_cells.py +0 -0
  65. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/utils/languages/python/_mask_str_in_code.py +0 -0
  66. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/watchdog.py +0 -0
  67. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/__init__.py +0 -0
  68. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/calltip_widget.py +0 -0
  69. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/completion_popup.py +0 -0
  70. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/dock.py +0 -0
  71. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/quick_open_dialog.py +0 -0
  72. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/quick_open_file_dialog.py +0 -0
  73. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/quick_symbol_dialog.py +0 -0
  74. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/search_replace_frame.py +0 -0
  75. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/tab_splitter.py +0 -0
  76. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/widgets/tabbed_editor.py +0 -0
  77. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/__init__.py +0 -0
  78. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/languages/__init__.py +0 -0
  79. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/languages/generic.py +0 -0
  80. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/languages/python.py +0 -0
  81. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/manager.py +0 -0
  82. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/process.py +0 -0
  83. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/__init__.py +0 -0
  84. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/codestral.py +0 -0
  85. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/jedi.py +0 -0
  86. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/ruff.py +0 -0
  87. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/sigmund.py +0 -0
  88. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/symbol.py +0 -0
  89. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/providers/tree_sitter.py +0 -0
  90. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/pyqt_code_editor/worker/settings.py +0 -0
  91. {pyqt_code_editor-0.0.58 → pyqt_code_editor-0.0.59}/readme.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqt_code_editor
3
- Version: 0.0.58
3
+ Version: 0.0.59
4
4
  Summary: Fully featured code-editor widgets for PyQt
5
5
  Keywords: code editor,pyqt,ide
6
6
  Author-email: Sebastiaan Mathôt <s.mathot@cogsci.nl>
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._settings import settings
4
4
 
5
- __version__ = '0.0.58'
5
+ __version__ = '0.0.59'
@@ -33,7 +33,9 @@ class SigmundAnalystWidget(SigmundWidget):
33
33
  self._editor_panel = editor_panel
34
34
  self._transient_settings = {
35
35
  'tool_ide_open_file': 'true',
36
- 'tool_ide_execute_code': 'true'
36
+ 'tool_ide_execute_code': 'true',
37
+ 'tool_ide_inspect_files': 'true',
38
+ 'tool_ide_list_files': 'true'
37
39
  }
38
40
  # Store execution results
39
41
  self._execution_result = None
@@ -89,7 +91,65 @@ class SigmundAnalystWidget(SigmundWidget):
89
91
  return f'Failed to open file: {e}'
90
92
  return f'Opened file: {path}'
91
93
 
92
- def run_command_execute_code(self, code, language):
94
+ def run_command_inspect_files(self, paths, encoding='utf-8'):
95
+ results = []
96
+ for path in paths:
97
+ try:
98
+ with open(path, 'r', encoding=encoding) as f:
99
+ contents = f.read()
100
+ results.append(f'<file path="{path}">\n{contents}\n</file>')
101
+ except FileNotFoundError:
102
+ results.append(f'<file path="{path}" error="File not found" />')
103
+ except Exception as e:
104
+ results.append(f'<file path="{path}" error="{e}" />')
105
+ return '\n\n'.join(results)
106
+
107
+ def run_command_list_files(self, path, recursive=False, max_files=250):
108
+ lines = []
109
+ try:
110
+ if recursive:
111
+ entries = list(os.walk(path))
112
+ else:
113
+ entries = sorted(os.scandir(path), key=lambda e: e.name)
114
+ except FileNotFoundError:
115
+ return f'Directory not found: {path}'
116
+ except PermissionError:
117
+ return f'Permission denied: {path}'
118
+ except Exception as e:
119
+ return f'Failed to list files: {e}'
120
+ truncated = False
121
+ if recursive:
122
+ for root, dirs, files in entries:
123
+ rel_root = os.path.relpath(root, path)
124
+ prefix = '' if rel_root == '.' else rel_root + os.sep
125
+ for d in sorted(dirs):
126
+ lines.append(f'{prefix}{d}{os.sep}')
127
+ if len(lines) >= max_files:
128
+ truncated = True
129
+ break
130
+ if truncated:
131
+ break
132
+ for f in sorted(files):
133
+ lines.append(f'{prefix}{f}')
134
+ if len(lines) >= max_files:
135
+ truncated = True
136
+ break
137
+ if truncated:
138
+ break
139
+ else:
140
+ for entry in entries:
141
+ lines.append(entry.name + (os.sep if entry.is_dir() else ''))
142
+ if len(lines) >= max_files:
143
+ truncated = True
144
+ break
145
+ if not lines:
146
+ return f'Directory is empty: {path}'
147
+ result = '\n'.join(lines)
148
+ if truncated:
149
+ result += f'\n(truncated at {max_files} entries)'
150
+ return result
151
+
152
+ def run_command_execute_code(self, code, language='python'):
93
153
  if settings.sigmund_review_actions:
94
154
  if not ConfirmRunCodeDialog(self, code, language).exec() \
95
155
  == ConfirmRunCodeDialog.Accepted:
@@ -139,7 +199,7 @@ class SigmundAnalystWidget(SigmundWidget):
139
199
  @property
140
200
  def _editor(self):
141
201
  return self._editor_panel.active_editor()
142
-
202
+
143
203
  def send_user_message(self, text, *args, **kwargs):
144
204
  current_path = self._editor.code_editor_file_path
145
205
  # If the editor is not linked to a file, simply use the working