pyloid 0.23.11__tar.gz → 0.23.13__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.
- {pyloid-0.23.11 → pyloid-0.23.13}/PKG-INFO +1 -1
- {pyloid-0.23.11 → pyloid-0.23.13}/pyproject.toml +1 -1
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/browser_window.py +1 -1
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/rpc.py +18 -13
- {pyloid-0.23.11 → pyloid-0.23.13}/LICENSE +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/README.md +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/__init__.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/api.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/autostart.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/custom/titlebar.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/filewatcher.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/js_api/base.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/js_api/event_api.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/js_api/window_api.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/monitor.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/pyloid.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/serve.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/store.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/thread_pool.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/timer.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/tray.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/url_interceptor.py +0 -0
- {pyloid-0.23.11 → pyloid-0.23.13}/src/pyloid/utils.py +0 -0
@@ -130,7 +130,7 @@ class PyloidRPC:
|
|
130
130
|
self._app = web.Application()
|
131
131
|
|
132
132
|
self.pyloid: Optional["Pyloid"] = None
|
133
|
-
self.window: Optional["BrowserWindow"] = None
|
133
|
+
# self.window: Optional["BrowserWindow"] = None
|
134
134
|
|
135
135
|
# CORS 설정 추가
|
136
136
|
cors = aiohttp_cors.setup(self._app, defaults={
|
@@ -177,12 +177,12 @@ class PyloidRPC:
|
|
177
177
|
Examples
|
178
178
|
--------
|
179
179
|
```python
|
180
|
-
from pyloid.rpc import PyloidRPC
|
180
|
+
from pyloid.rpc import PyloidRPC, RPCContext
|
181
181
|
|
182
182
|
rpc = PyloidRPC()
|
183
183
|
|
184
184
|
@rpc.method()
|
185
|
-
async def add(ctx, a: int, b: int) -> int:
|
185
|
+
async def add(ctx: RPCContext, a: int, b: int) -> int:
|
186
186
|
# Access the application and window through ctx.pyloid and ctx.window
|
187
187
|
if ctx.window:
|
188
188
|
print(f"Window title: {ctx.window.title}")
|
@@ -205,16 +205,13 @@ class PyloidRPC:
|
|
205
205
|
log.info(f"RPC function registered: {rpc_name}")
|
206
206
|
|
207
207
|
@wraps(func)
|
208
|
-
async def wrapper(*args, **kwargs):
|
209
|
-
# If the function has a 'ctx' parameter and it's not provided, inject the context object
|
208
|
+
async def wrapper(*args, _pyloid_window_id=None, **kwargs):
|
210
209
|
if has_ctx_param and 'ctx' not in kwargs:
|
211
210
|
ctx = RPCContext(
|
212
211
|
pyloid=self.pyloid,
|
213
|
-
window=self.
|
212
|
+
window=self.pyloid.get_window_by_id(_pyloid_window_id)
|
214
213
|
)
|
215
214
|
kwargs['ctx'] = ctx
|
216
|
-
|
217
|
-
# Call the original function
|
218
215
|
return await func(*args, **kwargs)
|
219
216
|
return wrapper
|
220
217
|
return decorator
|
@@ -325,7 +322,7 @@ class PyloidRPC:
|
|
325
322
|
if has_ctx_param and isinstance(params, dict) and 'ctx' not in params:
|
326
323
|
ctx = RPCContext(
|
327
324
|
pyloid=self.pyloid,
|
328
|
-
window=self.
|
325
|
+
window=self.pyloid.get_window_by_id(request_id)
|
329
326
|
)
|
330
327
|
# 딕셔너리 형태로 params 사용할 때
|
331
328
|
params = params.copy() # 원본 params 복사
|
@@ -335,12 +332,20 @@ class PyloidRPC:
|
|
335
332
|
if isinstance(params, list):
|
336
333
|
# 리스트 형태로 params 사용할 때 처리 필요
|
337
334
|
if has_ctx_param:
|
338
|
-
ctx = RPCContext(pyloid=self.pyloid, window=self.
|
339
|
-
result = await func(ctx, *params)
|
335
|
+
ctx = RPCContext(pyloid=self.pyloid, window=self.pyloid.get_window_by_id(request_id))
|
336
|
+
result = await func(ctx, *params, request_id=request_id)
|
340
337
|
else:
|
341
|
-
result = await func(*params)
|
338
|
+
result = await func(*params, request_id=request_id)
|
342
339
|
else: # isinstance(params, dict)
|
343
|
-
|
340
|
+
internal_window_id = request_id
|
341
|
+
params = params.copy()
|
342
|
+
params['_pyloid_window_id'] = internal_window_id
|
343
|
+
|
344
|
+
# 함수 시그니처에 맞는 인자만 추려서 전달
|
345
|
+
sig = inspect.signature(func)
|
346
|
+
allowed_params = set(sig.parameters.keys())
|
347
|
+
filtered_params = {k: v for k, v in params.items() if k in allowed_params}
|
348
|
+
result = await func(**filtered_params)
|
344
349
|
|
345
350
|
# 5. Format Success Response (only for non-notification requests)
|
346
351
|
if request_id is not None: # Notifications (id=null or absent) don't get responses
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|