pythonhere 0.3.0__tar.gz → 0.3.1__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 (78) hide show
  1. {pythonhere-0.3.0/pythonhere.egg-info → pythonhere-0.3.1}/PKG-INFO +2 -2
  2. {pythonhere-0.3.0 → pythonhere-0.3.1}/pyproject.toml +1 -1
  3. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/SKILL.md +15 -4
  4. pythonhere-0.3.1/pythonhere/version_here.py +1 -0
  5. {pythonhere-0.3.0 → pythonhere-0.3.1/pythonhere.egg-info}/PKG-INFO +2 -2
  6. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere.egg-info/requires.txt +1 -1
  7. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_main.py +3 -13
  8. pythonhere-0.3.0/pythonhere/version_here.py +0 -1
  9. {pythonhere-0.3.0 → pythonhere-0.3.1}/LICENSE +0 -0
  10. {pythonhere-0.3.0 → pythonhere-0.3.1}/README.rst +0 -0
  11. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/agents/openai.yaml +0 -0
  12. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/able.md +0 -0
  13. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/android-media.md +0 -0
  14. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/android-packages.md +0 -0
  15. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/android-permissions.md +0 -0
  16. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/android-runtime.md +0 -0
  17. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/jnius.md +0 -0
  18. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/kivy-kv.md +0 -0
  19. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/kivy-runtime.md +0 -0
  20. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/midi.md +0 -0
  21. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/.agents/skills/pythonhere/references/plyer.md +0 -0
  22. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/__init__.py +0 -0
  23. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/android_here.py +0 -0
  24. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/data/logo/logo-128.png +0 -0
  25. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/data/logo/logo-32.png +0 -0
  26. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/data/logo/logo-splash.png +0 -0
  27. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/enum_here.py +0 -0
  28. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/exception_manager_here.kv +0 -0
  29. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/exception_manager_here.py +0 -0
  30. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/launcher_here.py +0 -0
  31. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/__init__.py +0 -0
  32. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/README.md +0 -0
  33. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/able.md +0 -0
  34. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/android-media.md +0 -0
  35. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/android-packages.md +0 -0
  36. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/android-permissions.md +0 -0
  37. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/android-runtime.md +0 -0
  38. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/jnius.md +0 -0
  39. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/kivy-kv.md +0 -0
  40. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/kivy-runtime.md +0 -0
  41. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/midi.md +0 -0
  42. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts/plyer.md +0 -0
  43. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/prompts.py +0 -0
  44. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/magic_here/shortcuts.py +0 -0
  45. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/main.py +0 -0
  46. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/network_here.py +0 -0
  47. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/patches_here.py +0 -0
  48. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/pythonhere.kv +0 -0
  49. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/server_here.py +0 -0
  50. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/tools_here.py +0 -0
  51. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/__init__.py +0 -0
  52. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/actionbar_here.kv +0 -0
  53. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/common_here.kv +0 -0
  54. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/connection_address_here.kv +0 -0
  55. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/connection_address_here.py +0 -0
  56. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/layout_here.py +0 -0
  57. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/server_screen_here.kv +0 -0
  58. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/server_screen_here.py +0 -0
  59. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/settings_here.kv +0 -0
  60. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/ui_here/settings_here.py +0 -0
  61. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere/window_here.py +0 -0
  62. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere.egg-info/SOURCES.txt +0 -0
  63. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere.egg-info/dependency_links.txt +0 -0
  64. {pythonhere-0.3.0 → pythonhere-0.3.1}/pythonhere.egg-info/top_level.txt +0 -0
  65. {pythonhere-0.3.0 → pythonhere-0.3.1}/setup.cfg +0 -0
  66. {pythonhere-0.3.0 → pythonhere-0.3.1}/setup.py +0 -0
  67. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_ai_prompts.py +0 -0
  68. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_android_here.py +0 -0
  69. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_exception_manager_here.py +0 -0
  70. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_launcher_here.py +0 -0
  71. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_magic.py +0 -0
  72. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_network.py +0 -0
  73. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_patches.py +0 -0
  74. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_pythonhere_skill.py +0 -0
  75. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_server_here.py +0 -0
  76. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_settings.py +0 -0
  77. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_tools_here.py +0 -0
  78. {pythonhere-0.3.0 → pythonhere-0.3.1}/tests/test_window_here.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonhere
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Here is the Kivy based app to run code from the Jupyter magic %there
5
5
  Author-email: b3b <ash.b3b@gmail.com>
6
6
  License-Expression: MIT
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Requires-Python: >=3.10
17
17
  Description-Content-Type: text/x-rst
18
18
  License-File: LICENSE
19
- Requires-Dist: herethere[magic]>=0.3.1
19
+ Requires-Dist: herethere[magic]>=0.3.2
20
20
  Requires-Dist: ipython
21
21
  Requires-Dist: ipywidgets
22
22
  Requires-Dist: Pillow
@@ -22,7 +22,7 @@ classifiers = [
22
22
  "Programming Language :: Python :: 3.14",
23
23
  ]
24
24
  dependencies = [
25
- "herethere[magic]>=0.3.1",
25
+ "herethere[magic]>=0.3.2",
26
26
  "ipython",
27
27
  "ipywidgets",
28
28
  "Pillow",
@@ -66,9 +66,11 @@ They complement rather than restrict normal Python:
66
66
  These helpers may be called on Kivy's main thread or from a worker. Worker calls
67
67
  are transparently marshaled to Kivy's thread and block that worker until Kivy
68
68
  finishes the operation, normally on its next frame. Continue to prefer normal
69
- foreground `there get` and `there run` for quick UI operations. Background
70
- execution is useful when surrounding work would otherwise block the UI; it does
71
- not make other Kivy access thread-safe.
69
+ foreground `there get` and `there run` for quick UI operations. Add `--worker`
70
+ to `get` or `run` when surrounding slow or blocking work would otherwise block
71
+ the UI. The CLI remains attached, waits for completion, and then returns the
72
+ value or captured output. Worker execution does not make other Kivy access
73
+ thread-safe.
72
74
 
73
75
  Do not call a worker-marshaled helper while Kivy's main thread is synchronously
74
76
  waiting for that same worker. Neither side can progress in that cross-thread
@@ -179,7 +181,9 @@ there --json run --code "from tools_here import pin_shortcut; pin_shortcut('demo
179
181
  - Keep callbacks non-blocking and marshal UI changes to the Kivy thread.
180
182
  4. For more than a short expression, create a local UTF-8 Python file and run it
181
183
  with `there --json run FILE`. Prefer a file over fragile shell quoting or a
182
- long `--code` value. Keep within the installed CLI's input limit.
184
+ long `--code` value. Keep within the installed CLI's input limit. Add
185
+ `--worker` for slow or blocking code that should not occupy Kivy's main
186
+ thread.
183
187
  5. Make only the requested live-app mutation. Reuse existing state when
184
188
  practical and provide cleanup helpers for scheduled events, sensors,
185
189
  Bluetooth, MIDI, files, or other held resources.
@@ -223,6 +227,13 @@ Run a prepared UI change:
223
227
  there --json run /tmp/pythonhere-ui.py
224
228
  ```
225
229
 
230
+ Run slow or blocking non-UI work without freezing Kivy, while waiting for its
231
+ buffered output:
232
+
233
+ ```console
234
+ there --json run --worker /tmp/pythonhere-long-task.py
235
+ ```
236
+
226
237
  Verify a named status left by that code:
227
238
 
228
239
  ```console
@@ -0,0 +1 @@
1
+ __version__ = "0.3.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonhere
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Here is the Kivy based app to run code from the Jupyter magic %there
5
5
  Author-email: b3b <ash.b3b@gmail.com>
6
6
  License-Expression: MIT
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Requires-Python: >=3.10
17
17
  Description-Content-Type: text/x-rst
18
18
  License-File: LICENSE
19
- Requires-Dist: herethere[magic]>=0.3.1
19
+ Requires-Dist: herethere[magic]>=0.3.2
20
20
  Requires-Dist: ipython
21
21
  Requires-Dist: ipywidgets
22
22
  Requires-Dist: Pillow
@@ -1,4 +1,4 @@
1
- herethere[magic]>=0.3.1
1
+ herethere[magic]>=0.3.2
2
2
  ipython
3
3
  ipywidgets
4
4
  Pillow
@@ -111,7 +111,7 @@ async def test_root_object_is_in_context(capfd, app_instance, there):
111
111
 
112
112
 
113
113
  @pytest.mark.asyncio
114
- async def test_background_snapshot_traverses_widgets_on_main_thread(
114
+ async def test_worker_snapshot_traverses_widgets_on_main_thread(
115
115
  app_instance,
116
116
  there,
117
117
  ):
@@ -129,18 +129,8 @@ async def test_background_snapshot_traverses_widgets_on_main_thread(
129
129
  )
130
130
  )
131
131
  try:
132
- if hasattr(there, "get_background"):
133
- snapshot = await there.get_background("tools_here.snapshot_ui(root)")
134
- runtime = await there.get_background("tools_here.runtime_info(app, root)")
135
- else:
136
- # Herethere 0.3.0 has background execution but predates its
137
- # background value command. Exercise the same worker bridge while
138
- # keeping this integration test compatible with that release.
139
- await there.runcode_background(
140
- "tools_here._test_background_results = "
141
- "(tools_here.snapshot_ui(root), tools_here.runtime_info(app, root))"
142
- )
143
- snapshot, runtime = await there.get("tools_here._test_background_results")
132
+ snapshot = await there.get_worker("tools_here.snapshot_ui(root)")
133
+ runtime = await there.get_worker("tools_here.runtime_info(app, root)")
144
134
  ran_on_main_thread = await there.get(
145
135
  "tools_here._test_snapshot_thread == "
146
136
  "__import__('threading').main_thread().ident"
@@ -1 +0,0 @@
1
- __version__ = "0.3.0"
File without changes
File without changes
File without changes
File without changes