pyqt-code-editor 0.0.23__tar.gz → 0.0.25__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.
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/PKG-INFO +3 -2
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyproject.toml +5 -4
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/__init__.py +1 -1
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/watchdog.py +3 -12
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/languages/generic.py +3 -3
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/languages/python.py +1 -1
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/codestral.py +1 -1
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/symbol.py +1 -1
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/COPYING +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/_settings.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/app.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/code_editors.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/languages/markdown.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/languages/python.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/languages/text.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/editor_panel.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/find_in_files.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/jupyter_console.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/project_explorer.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/settings_panel.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/sigmund.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/workspace_explorer.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/environment_manager.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/auto_indent.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/auto_pair.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/base.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/check.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/comment.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/complete.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/execute.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/file_link.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/line_number.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/python_auto_indent.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/search_replace.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/shortcuts.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/smart_backspace_delete.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/symbols.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/theme.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/widgets/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/zoom.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/signal_router.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/syntax_highlighters/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/syntax_highlighters/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/syntax_highlighters/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/syntax_highlighters/languages/python.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/syntax_highlighters/syntax_highlighter.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/themes.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/languages/python/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/languages/python/_auto_indent.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/languages/python/_extract_cells.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/languages/python/_mask_str_in_code.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/calltip_widget.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/completion_popup.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/dock.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/quick_open_dialog.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/quick_open_file_dialog.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/quick_symbol_dialog.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/search_replace_frame.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/tab_splitter.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/tabbed_editor.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/manager.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/process.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/__init__.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/jedi.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/ruff.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/sigmund.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/settings.py +0 -0
- {pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/readme.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyqt_code_editor
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.25
|
|
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>
|
|
@@ -12,6 +12,7 @@ Requires-Dist: detect-indent
|
|
|
12
12
|
Requires-Dist: jedi
|
|
13
13
|
Requires-Dist: mistralai
|
|
14
14
|
Requires-Dist: pathspec
|
|
15
|
+
Requires-Dist: psutil
|
|
15
16
|
Requires-Dist: pygments
|
|
16
17
|
Requires-Dist: qtawesome
|
|
17
18
|
Requires-Dist: qtpy
|
|
@@ -19,7 +20,7 @@ Requires-Dist: ruff
|
|
|
19
20
|
Requires-Dist: opensesame-extension-sigmund
|
|
20
21
|
Requires-Dist: pyqt6
|
|
21
22
|
Requires-Dist: qtconsole
|
|
22
|
-
Project-URL: Source, https://github.com/open-cogsci/
|
|
23
|
+
Project-URL: Source, https://github.com/open-cogsci/sigmund-analyst
|
|
23
24
|
|
|
24
25
|
# PyQt Code Editor / Sigmund Analyst
|
|
25
26
|
|
|
@@ -17,13 +17,14 @@ dependencies = [
|
|
|
17
17
|
"jedi",
|
|
18
18
|
"mistralai",
|
|
19
19
|
"pathspec",
|
|
20
|
+
"psutil",
|
|
20
21
|
"pygments",
|
|
21
22
|
"qtawesome",
|
|
22
23
|
"qtpy",
|
|
23
24
|
"ruff",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
"opensesame-extension-sigmund",
|
|
26
|
+
"pyqt6",
|
|
27
|
+
"qtconsole"
|
|
27
28
|
]
|
|
28
29
|
keywords = ["code editor", "pyqt", "ide"]
|
|
29
30
|
|
|
@@ -31,7 +32,7 @@ keywords = ["code editor", "pyqt", "ide"]
|
|
|
31
32
|
exclude = ["doc-pelican", "testcases", ".github"]
|
|
32
33
|
|
|
33
34
|
[project.urls]
|
|
34
|
-
Source = "https://github.com/open-cogsci/
|
|
35
|
+
Source = "https://github.com/open-cogsci/sigmund-analyst"
|
|
35
36
|
|
|
36
37
|
[project.scripts]
|
|
37
38
|
sigmund-analyst = "pyqt_code_editor.app:launch_app"
|
|
@@ -19,6 +19,7 @@ import signal
|
|
|
19
19
|
import sys
|
|
20
20
|
import time
|
|
21
21
|
import logging
|
|
22
|
+
import psutil
|
|
22
23
|
logging.basicConfig(level=logging.INFO, force=True)
|
|
23
24
|
logger = logging.getLogger(__name__)
|
|
24
25
|
|
|
@@ -39,7 +40,7 @@ def _watchdog_main(main_pid, child_conn):
|
|
|
39
40
|
|
|
40
41
|
while True:
|
|
41
42
|
# Check if main process is still alive
|
|
42
|
-
if not
|
|
43
|
+
if not psutil.pid_exists(main_pid):
|
|
43
44
|
logger.info("watchdog: Main process died, killing all subprocesses")
|
|
44
45
|
_kill_all_processes(registered_pids)
|
|
45
46
|
sys.exit(0)
|
|
@@ -60,16 +61,6 @@ def _watchdog_main(main_pid, child_conn):
|
|
|
60
61
|
time.sleep(_CHECK_INTERVAL)
|
|
61
62
|
|
|
62
63
|
|
|
63
|
-
def _is_process_alive(pid):
|
|
64
|
-
"""Check if a process with the given pid is alive."""
|
|
65
|
-
try:
|
|
66
|
-
# Sending signal 0 checks if process exists without affecting it
|
|
67
|
-
os.kill(pid, 0)
|
|
68
|
-
return True
|
|
69
|
-
except OSError:
|
|
70
|
-
return False
|
|
71
|
-
|
|
72
|
-
|
|
73
64
|
def _kill_all_processes(pids):
|
|
74
65
|
"""Kill all processes with the given pids."""
|
|
75
66
|
for pid in pids:
|
|
@@ -86,7 +77,7 @@ def _kill_all_processes(pids):
|
|
|
86
77
|
# Force kill any remaining processes
|
|
87
78
|
for pid in pids:
|
|
88
79
|
try:
|
|
89
|
-
if
|
|
80
|
+
if psutil.pid_exists(pid):
|
|
90
81
|
os.kill(pid, signal.SIGKILL)
|
|
91
82
|
logger.info(f"watchdog: Sent SIGKILL to {pid}")
|
|
92
83
|
except OSError:
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/languages/generic.py
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from ..providers import symbol, codestral
|
|
2
2
|
|
|
3
|
-
def complete(code, cursor_pos, path, multiline, full):
|
|
3
|
+
def complete(code, cursor_pos, path, multiline, full, env_path):
|
|
4
4
|
if full or multiline:
|
|
5
5
|
completions = codestral.codestral_complete(
|
|
6
|
-
code, cursor_pos,
|
|
6
|
+
code, cursor_pos, multiline=multiline)
|
|
7
7
|
else:
|
|
8
8
|
completions = []
|
|
9
9
|
if not multiline:
|
|
10
|
-
completions += symbol.symbol_complete(code, cursor_pos
|
|
10
|
+
completions += symbol.symbol_complete(code, cursor_pos)
|
|
11
11
|
return completions
|
|
12
12
|
|
|
13
13
|
calltip = None
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/languages/python.py
RENAMED
|
@@ -4,7 +4,7 @@ from ..providers import jedi, codestral, ruff
|
|
|
4
4
|
def complete(code, cursor_pos, path, multiline, full, env_path):
|
|
5
5
|
if full or multiline:
|
|
6
6
|
codestral_completions = codestral.codestral_complete(
|
|
7
|
-
code, cursor_pos,
|
|
7
|
+
code, cursor_pos, multiline=multiline)
|
|
8
8
|
else:
|
|
9
9
|
codestral_completions = []
|
|
10
10
|
if not multiline:
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/symbol.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import re
|
|
2
2
|
|
|
3
|
-
def symbol_complete(code: str, cursor_pos: int
|
|
3
|
+
def symbol_complete(code: str, cursor_pos: int) -> list[str]:
|
|
4
4
|
"""
|
|
5
5
|
A helper function for code completion that is based on all the symbols
|
|
6
6
|
that are detected in the code in a language-agnostic way. The code is split
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/code_editors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/code_editors/languages/text.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/editor_panel.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/find_in_files.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/jupyter_console.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/project_explorer.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/components/settings_panel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/python_auto_indent.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/search_replace.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/mixins/widgets/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/syntax_highlighters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/utils/languages/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/calltip_widget.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/completion_popup.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/quick_open_dialog.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/quick_symbol_dialog.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/search_replace_frame.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/tab_splitter.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/widgets/tabbed_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/languages/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/jedi.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/ruff.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.23 → pyqt_code_editor-0.0.25}/pyqt_code_editor/worker/providers/sigmund.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|