lumiview 0.1.0.dev0__tar.gz → 0.1.0.dev2__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 (39) hide show
  1. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/.github/workflows/publish-to-pypi.yml +55 -17
  2. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/Cargo.lock +1 -1
  3. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/Cargo.toml +1 -1
  4. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/PKG-INFO +1 -1
  5. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/pyproject.toml +1 -1
  6. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/__init__.py +7 -6
  7. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_app.py +126 -176
  8. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_binding.py +0 -9
  9. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_bridge.py +18 -25
  10. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_core.pyi +5 -5
  11. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_events.py +15 -3
  12. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_scope.py +49 -26
  13. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_task.py +1 -27
  14. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/_window.py +219 -163
  15. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/plugins/window_controls.py +53 -16
  16. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/serve/__init__.py +1 -1
  17. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/serve/asgi.py +16 -16
  18. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/serve/base.py +25 -18
  19. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/serve/static.py +8 -8
  20. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/serve/wsgi.py +14 -13
  21. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/src/event_loop.rs +28 -23
  22. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/src/events.rs +11 -11
  23. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/src/types.rs +6 -6
  24. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/src/window.rs +13 -13
  25. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/.gitignore +0 -0
  26. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/CONTRIBUTING.md +0 -0
  27. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/LICENSE +0 -0
  28. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/README.md +0 -0
  29. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/README_zh.md +0 -0
  30. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/bridge_demo.py +0 -0
  31. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/custom_titlebar.py +0 -0
  32. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/events.py +0 -0
  33. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/fastapi_demo.py +0 -0
  34. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/hello_world.py +0 -0
  35. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/hello_world_sync.py +0 -0
  36. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/examples/multi_window.py +0 -0
  37. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/plugins/__init__.py +0 -0
  38. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/python/lumiview/utils.py +0 -0
  39. {lumiview-0.1.0.dev0 → lumiview-0.1.0.dev2}/src/lib.rs +0 -0
@@ -11,7 +11,12 @@ permissions:
11
11
 
12
12
  jobs:
13
13
  linux:
14
- runs-on: ubuntu-latest
14
+ runs-on: ${{ matrix.platform.runner }}
15
+ strategy:
16
+ matrix:
17
+ platform:
18
+ - runner: ubuntu-latest
19
+ target: x86_64
15
20
  steps:
16
21
  - uses: actions/checkout@v4
17
22
  - name: Install webkit2gtk
@@ -26,19 +31,42 @@ jobs:
26
31
  uses: PyO3/maturin-action@v1
27
32
  with:
28
33
  args: --release --out dist
29
- - name: Repair manylinux (exclude GTK3/GLib — system provides them)
34
+ - name: Repair manylinux (exclude system GTK/GLib/dbus — must not bundle)
30
35
  run: |
31
36
  pip install auditwheel
37
+ # GTK/GLib libraries can never be bundled into the wheel: the
38
+ # GObject type registry is process-global, so a second copy breaks
39
+ # any process that also links the system GTK (LumiView's own tao
40
+ # window and wryview both do). libdbus-1/libsystemd likewise exist
41
+ # on every desktop that can run GTK3 (the gtk .deb depends on
42
+ # them) — bundling them only adds weight and risks version skew.
32
43
  auditwheel repair \
33
- --exclude 'libgtk-3.so.*' \
34
- --exclude 'libgdk-3.so.*' \
35
- --exclude 'libglib-2.0.so.*' \
36
- --exclude 'libgobject-2.0.so.*' \
37
- --exclude 'libgio-2.0.so.*' \
38
- --exclude 'libgmodule-2.0.so.*' \
39
- --exclude 'libgdk_pixbuf-2.0.so.*' \
40
- --exclude 'libpango-1.0.so.*' \
41
- --exclude 'libcairo.so.*' \
44
+ --exclude 'libgtk-3.*' \
45
+ --exclude 'libgdk-3.*' \
46
+ --exclude 'libglib-2.0.*' \
47
+ --exclude 'libgobject-2.0.*' \
48
+ --exclude 'libgio-2.0.*' \
49
+ --exclude 'libgmodule-2.0.*' \
50
+ --exclude 'libgdk_pixbuf-2.0.*' \
51
+ --exclude 'libpango-1.0.*' \
52
+ --exclude 'libpangocairo-1.0.*' \
53
+ --exclude 'libpangoft2-1.0.*' \
54
+ --exclude 'libatk-1.0.*' \
55
+ --exclude 'libharfbuzz.*' \
56
+ --exclude 'libfribidi.*' \
57
+ --exclude 'libepoxy.*' \
58
+ --exclude 'libcairo.*' \
59
+ --exclude 'libcairo-gobject.*' \
60
+ --exclude 'libxkbcommon.*' \
61
+ --exclude 'libwayland-client.*' \
62
+ --exclude 'libdbus-1.*' \
63
+ --exclude 'libsystemd.*' \
64
+ --exclude 'libgcrypt.*' \
65
+ --exclude 'libgpg-error.*' \
66
+ --exclude 'libcap.*' \
67
+ --exclude 'libzstd.*' \
68
+ --exclude 'liblz4.*' \
69
+ --exclude 'liblzma.*' \
42
70
  -w dist dist/lumiview-*.whl
43
71
  rm -f dist/*-linux_x86_64.whl
44
72
  - name: Upload wheels
@@ -48,20 +76,30 @@ jobs:
48
76
  path: dist
49
77
 
50
78
  windows:
51
- runs-on: windows-latest
79
+ runs-on: ${{ matrix.platform.runner }}
80
+ strategy:
81
+ matrix:
82
+ platform:
83
+ - runner: windows-latest
84
+ target: x64
85
+ - runner: windows-latest
86
+ target: x86
87
+ python-arch: x86
52
88
  steps:
53
- - uses: actions/checkout@v4
54
- - uses: actions/setup-python@v5
89
+ - uses: actions/checkout@v7
90
+ - uses: actions/setup-python@v7
55
91
  with:
56
92
  python-version: "3.12"
57
- - name: Build wheel
93
+ architecture: ${{ matrix.platform.python-arch || 'x64' }}
94
+ - name: Build wheels
58
95
  uses: PyO3/maturin-action@v1
59
96
  with:
60
- args: --release --out dist
97
+ target: ${{ matrix.platform.target }}
98
+ args: --release --out dist --find-interpreter
61
99
  - name: Upload wheels
62
100
  uses: actions/upload-artifact@v4
63
101
  with:
64
- name: wheels-windows
102
+ name: wheels-windows-${{ matrix.platform.target }}
65
103
  path: dist
66
104
 
67
105
  macos:
@@ -804,7 +804,7 @@ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
804
804
 
805
805
  [[package]]
806
806
  name = "lumiview"
807
- version = "0.1.0-dev0"
807
+ version = "0.1.0-dev2"
808
808
  dependencies = [
809
809
  "gtk",
810
810
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lumiview"
3
- version = "0.1.0-dev0"
3
+ version = "0.1.0-dev2"
4
4
  edition = "2021"
5
5
  description = "Python binding for tao — cross-platform window management."
6
6
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lumiview
3
- Version: 0.1.0.dev0
3
+ Version: 0.1.0.dev2
4
4
  Classifier: Development Status :: 2 - Pre-Alpha
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -7,7 +7,7 @@ name = "lumiview"
7
7
  authors = [{ name = "校溯", email = "xiaosu@xiaosu.icu" }]
8
8
  description = "Pythonic desktop window + webview — lightweight, async-first, no toolchain required."
9
9
  readme = "README.md"
10
- version = "0.1.0.dev0"
10
+ version = "0.1.0.dev2"
11
11
  requires-python = ">=3.10"
12
12
  dependencies = ["wryview>=0.5.1", "cattrs>=26.1", "typing_extensions~=4.11"]
13
13
  license = "MPL-2.0"
@@ -62,20 +62,20 @@ from lumiview._core import (
62
62
  from lumiview._app import App, AppState, AppClosedError, WindowClosedError
63
63
  from lumiview._events import WindowHookEvent, AppHookEvent
64
64
  from lumiview._bridge import Bridge, BridgeError
65
- from lumiview._scope import Scope, ScopePermission, BridgeContext, InitContext
65
+ from lumiview._scope import Plugin, Scope, ScopePermission, BridgeContext, InitContext
66
66
  from lumiview._window import CloseBehavior, Window
67
67
  from lumiview._task import task, Task, TaskDeadlockError
68
68
  from lumiview import utils
69
69
  from lumiview import plugins
70
70
 
71
- # ── Serve subpackage (§10) ─────────────────────────────────────────────────
71
+ # Serve subpackage (§10)
72
72
 
73
73
  from lumiview.serve import Request, Response, Serve, Static, WSGI, ASGI, Handler
74
74
 
75
- __version__ = "0.1.0.dev0"
75
+ __version__ = "0.1.0.dev2"
76
76
 
77
77
  __all__ = [
78
- # ── Application layer ──
78
+ # Application layer
79
79
  "App",
80
80
  "AppState",
81
81
  "CloseBehavior",
@@ -87,6 +87,7 @@ __all__ = [
87
87
  "Bridge",
88
88
  "BridgeError",
89
89
  "Scope",
90
+ "Plugin",
90
91
  "ScopePermission",
91
92
  "BridgeContext",
92
93
  "InitContext",
@@ -97,7 +98,7 @@ __all__ = [
97
98
  "TaskDeadlockError",
98
99
  "AppClosedError",
99
100
  "WindowClosedError",
100
- # ── Serve ──
101
+ # Serve
101
102
  "Request",
102
103
  "Response",
103
104
  "Serve",
@@ -105,7 +106,7 @@ __all__ = [
105
106
  "WSGI",
106
107
  "ASGI",
107
108
  "Handler",
108
- # ── Low-level bindings ──
109
+ # Low-level bindings
109
110
  "TaoEventLoop",
110
111
  "TaoEventLoopProxy",
111
112
  "TaoWindowBuilder",