pyqt-code-editor 0.0.38__tar.gz → 0.0.40__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.38 → pyqt_code_editor-0.0.40}/PKG-INFO +1 -1
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/__init__.py +1 -1
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/_settings.py +2 -2
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/base.py +3 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/manager.py +25 -1
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/COPYING +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyproject.toml +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/app.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/code_editors.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/languages/markdown.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/languages/python.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/languages/text.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/editor_panel.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/find_in_files.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/jupyter_console.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/project_explorer.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/settings_panel.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/sigmund.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/workspace_explorer.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/environment_manager.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/auto_indent.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/auto_pair.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/check.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/comment.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/complete.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/execute.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/file_link.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/line_number.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/python_auto_indent.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/search_replace.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/shortcuts.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/smart_backspace_delete.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/symbols.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/theme.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/widgets/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/zoom.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/sigmund-analyst.png +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/signal_router.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/syntax_highlighters/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/syntax_highlighters/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/syntax_highlighters/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/syntax_highlighters/languages/python.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/syntax_highlighters/syntax_highlighter.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/themes.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/utils/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/utils/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/utils/languages/python/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/utils/languages/python/_auto_indent.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/utils/languages/python/_extract_cells.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/utils/languages/python/_mask_str_in_code.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/watchdog.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/calltip_widget.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/completion_popup.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/dock.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/quick_open_dialog.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/quick_open_file_dialog.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/quick_symbol_dialog.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/search_replace_frame.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/tab_splitter.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/tabbed_editor.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/languages/python.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/process.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/__init__.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/codestral.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/jedi.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/ruff.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/sigmund.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/symbol.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/settings.py +0 -0
- {pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/readme.md +0 -0
|
@@ -230,8 +230,8 @@ class Settings(QObject):
|
|
|
230
230
|
from .utils import get_first_available_font
|
|
231
231
|
|
|
232
232
|
self.font_family = get_first_available_font(
|
|
233
|
-
['Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', '
|
|
234
|
-
'monospace'])
|
|
233
|
+
['Ubuntu Mono', 'Liberation Mono', 'DejaVu Sans Mono', 'Consolas',
|
|
234
|
+
'Menlo', 'Courier New', 'monospace'])
|
|
235
235
|
|
|
236
236
|
# Fallback if no font was found
|
|
237
237
|
if self.font_family is None:
|
|
@@ -74,6 +74,9 @@ class Base:
|
|
|
74
74
|
so we can handle multiple concurrent requests.
|
|
75
75
|
"""
|
|
76
76
|
result_queue, pid = manager.send_worker_request(**data)
|
|
77
|
+
if result_queue is None:
|
|
78
|
+
logger.info('Request ignored')
|
|
79
|
+
return
|
|
77
80
|
self._active_requests[pid] = result_queue
|
|
78
81
|
logger.info(f"Sent request to worker {pid}, now tracking {len(self._active_requests)} active requests.")
|
|
79
82
|
|
|
@@ -7,6 +7,7 @@ logger = logging.getLogger(__name__)
|
|
|
7
7
|
STOP_UNUSED_INTERVAL = 10
|
|
8
8
|
_last_stop_unused_time = 0
|
|
9
9
|
_workers = {} # pid -> {"process", "request_queue", "result_queue", "is_free"}
|
|
10
|
+
suspended = False
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def send_worker_request(**data) -> (Queue, int):
|
|
@@ -16,7 +17,11 @@ def send_worker_request(**data) -> (Queue, int):
|
|
|
16
17
|
|
|
17
18
|
The caller can poll the result_queue for responses, and once done,
|
|
18
19
|
call mark_worker_as_free(pid) to release this worker for future use.
|
|
20
|
+
|
|
21
|
+
If workers are suspended, return (None, None).
|
|
19
22
|
"""
|
|
23
|
+
if suspended:
|
|
24
|
+
return None, None
|
|
20
25
|
# 1. Look for an existing free worker
|
|
21
26
|
for pid, w in list(_workers.items()):
|
|
22
27
|
if w["is_free"] and w["process"].is_alive():
|
|
@@ -100,7 +105,7 @@ def stop_all_workers():
|
|
|
100
105
|
"""
|
|
101
106
|
Cleanly shut down all worker processes.
|
|
102
107
|
"""
|
|
103
|
-
logger.info("Stopping
|
|
108
|
+
logger.info(f"Stopping {len(_workers)} worker processes...")
|
|
104
109
|
for pid, w in list(_workers.items()):
|
|
105
110
|
if w["process"].is_alive():
|
|
106
111
|
logger.info(f"Stopping worker {pid}.")
|
|
@@ -116,4 +121,23 @@ def update_setting(name, value):
|
|
|
116
121
|
for pid, w in _workers.items():
|
|
117
122
|
if w["process"].is_alive():
|
|
118
123
|
w["request_queue"].put(settings_action)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def suspend():
|
|
127
|
+
"""Stops all worker processes and ignores all requests until resume() is
|
|
128
|
+
called.
|
|
129
|
+
"""
|
|
130
|
+
global suspended
|
|
131
|
+
suspended = True
|
|
132
|
+
logger.info("Suspending worker processes...")
|
|
133
|
+
stop_all_workers()
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def resume():
|
|
137
|
+
"""Resumes accepting requests."""
|
|
138
|
+
global suspended
|
|
139
|
+
suspended = False
|
|
140
|
+
logger.info("Resuming worker processes...")
|
|
141
|
+
|
|
142
|
+
|
|
119
143
|
settings.setting_changed.connect(update_setting)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/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.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/code_editors/languages/text.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/editor_panel.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/find_in_files.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/jupyter_console.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/components/project_explorer.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/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
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/python_auto_indent.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/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.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/mixins/widgets/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/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.38 → pyqt_code_editor-0.0.40}/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
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/calltip_widget.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/completion_popup.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/quick_open_dialog.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/quick_symbol_dialog.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/search_replace_frame.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/tab_splitter.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/widgets/tabbed_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/languages/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/languages/generic.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/languages/python.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/codestral.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/jedi.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/ruff.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/sigmund.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.38 → pyqt_code_editor-0.0.40}/pyqt_code_editor/worker/providers/symbol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|