pyview-web 0.2.2__tar.gz → 0.2.3__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.

Potentially problematic release.


This version of pyview-web might be problematic. Click here for more details.

Files changed (50) hide show
  1. {pyview_web-0.2.2 → pyview_web-0.2.3}/PKG-INFO +1 -1
  2. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyproject.toml +1 -1
  3. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/live_socket.py +9 -4
  4. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/ws_handler.py +8 -14
  5. {pyview_web-0.2.2 → pyview_web-0.2.3}/LICENSE +0 -0
  6. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/__init__.py +0 -0
  7. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/assets/js/app.js +0 -0
  8. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/assets/package-lock.json +0 -0
  9. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/assets/package.json +0 -0
  10. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/auth/__init__.py +0 -0
  11. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/auth/provider.py +0 -0
  12. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/auth/required.py +0 -0
  13. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/changesets/__init__.py +0 -0
  14. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/changesets/changesets.py +0 -0
  15. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/csrf.py +0 -0
  16. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/events/BaseEventHandler.py +0 -0
  17. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/events/__init__.py +0 -0
  18. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/events/info_event.py +0 -0
  19. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/js.py +0 -0
  20. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/live_routes.py +0 -0
  21. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/live_view.py +0 -0
  22. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/meta.py +0 -0
  23. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/phx_message.py +0 -0
  24. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/pyview.py +0 -0
  25. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/secret.py +0 -0
  26. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/session.py +0 -0
  27. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/static/assets/app.js +0 -0
  28. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/__init__.py +0 -0
  29. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/context_processor.py +0 -0
  30. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/live_template.py +0 -0
  31. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/render_diff.py +0 -0
  32. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/root_template.py +0 -0
  33. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/serializer.py +0 -0
  34. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/template/utils.py +0 -0
  35. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/test_csrf.py +0 -0
  36. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/uploads.py +0 -0
  37. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/__init__.py +0 -0
  38. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/flet/pubsub/__init__.py +0 -0
  39. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/flet/pubsub/pub_sub.py +0 -0
  40. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/__init__.py +0 -0
  41. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/compiler.py +0 -0
  42. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/context.py +0 -0
  43. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/errors.py +0 -0
  44. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/filters.py +0 -0
  45. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/loaders.py +0 -0
  46. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/nodes.py +0 -0
  47. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/template.py +0 -0
  48. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/tree.py +0 -0
  49. {pyview_web-0.2.2 → pyview_web-0.2.3}/pyview/vendor/ibis/utils.py +0 -0
  50. {pyview_web-0.2.2 → pyview_web-0.2.3}/readme.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyview-web
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: LiveView in Python
5
5
  License: MIT
6
6
  Keywords: web,api,LiveView
@@ -5,7 +5,7 @@ packages = [
5
5
  { include = "pyview" },
6
6
  ]
7
7
 
8
- version = "0.2.2"
8
+ version = "0.2.3"
9
9
  description = "LiveView in Python"
10
10
  authors = ["Larry Ogrodnek <ogrodnek@gmail.com>"]
11
11
  license = "MIT"
@@ -17,6 +17,7 @@ from pyview.vendor.flet.pubsub import PubSubHub, PubSub
17
17
  from pyview.events import InfoEvent
18
18
  from pyview.uploads import UploadConstraints, UploadConfig, UploadManager
19
19
  from pyview.meta import PyViewMeta
20
+ from pyview.template.render_diff import calc_diff
20
21
  import datetime
21
22
 
22
23
 
@@ -50,8 +51,8 @@ class ConnectedLiveViewSocket(Generic[T]):
50
51
  context: T
51
52
  live_title: Optional[str] = None
52
53
  pending_events: list[tuple[str, Any]]
53
-
54
54
  upload_manager: UploadManager
55
+ prev_rendered: Optional[dict[str, Any]] = None
55
56
 
56
57
  def __init__(self, websocket: WebSocket, topic: str, liveview: LiveView):
57
58
  self.websocket = websocket
@@ -93,9 +94,13 @@ class ConnectedLiveViewSocket(Generic[T]):
93
94
  )
94
95
 
95
96
  def diff(self, render: dict[str, Any]) -> dict[str, Any]:
96
- # TODO: not a real diff
97
- del render["s"]
98
- return render
97
+ if self.prev_rendered:
98
+ diff = calc_diff(self.prev_rendered, render)
99
+ else:
100
+ diff = render
101
+
102
+ self.prev_rendered = render
103
+ return diff
99
104
 
100
105
  async def send_info(self, event: InfoEvent):
101
106
  await self.liveview.handle_info(event, self)
@@ -1,4 +1,4 @@
1
- from typing import Optional, Any
1
+ from typing import Optional
2
2
  import json
3
3
  from starlette.websockets import WebSocket, WebSocketDisconnect
4
4
  from urllib.parse import urlparse, parse_qs
@@ -8,7 +8,6 @@ from pyview.csrf import validate_csrf_token
8
8
  from pyview.session import deserialize_session
9
9
  from pyview.auth import AuthProviderFactory
10
10
  from pyview.phx_message import parse_message
11
- from pyview.template.render_diff import calc_diff
12
11
 
13
12
 
14
13
  class AuthException(Exception):
@@ -60,6 +59,7 @@ class LiveSocketHandler:
60
59
  await lv.handle_params(url, merged_params, socket)
61
60
 
62
61
  rendered = await _render(socket)
62
+ socket.prev_rendered = rendered
63
63
 
64
64
  resp = [
65
65
  joinRef,
@@ -70,7 +70,7 @@ class LiveSocketHandler:
70
70
  ]
71
71
 
72
72
  await self.manager.send_personal_message(json.dumps(resp), websocket)
73
- await self.handle_connected(topic, socket, rendered)
73
+ await self.handle_connected(topic, socket)
74
74
 
75
75
  except WebSocketDisconnect:
76
76
  if socket:
@@ -80,9 +80,7 @@ class LiveSocketHandler:
80
80
  await websocket.close()
81
81
  self.sessions -= 1
82
82
 
83
- async def handle_connected(
84
- self, myJoinId, socket: ConnectedLiveViewSocket, prev_rendered: dict[str, Any]
85
- ):
83
+ async def handle_connected(self, myJoinId, socket: ConnectedLiveViewSocket):
86
84
  while True:
87
85
  message = await socket.websocket.receive()
88
86
  [joinRef, mesageRef, topic, event, payload] = parse_message(message)
@@ -114,8 +112,7 @@ class LiveSocketHandler:
114
112
  {} if not socket.pending_events else {"e": socket.pending_events}
115
113
  )
116
114
 
117
- diff = calc_diff(prev_rendered, rendered)
118
- prev_rendered = rendered
115
+ diff = socket.diff(rendered)
119
116
 
120
117
  socket.pending_events = []
121
118
 
@@ -150,8 +147,7 @@ class LiveSocketHandler:
150
147
 
151
148
  await lv.handle_params(url, merged_params, socket)
152
149
  rendered = await _render(socket)
153
- diff = calc_diff(prev_rendered, rendered)
154
- prev_rendered = rendered
150
+ diff = socket.diff(rendered)
155
151
 
156
152
  resp = [
157
153
  joinRef,
@@ -171,8 +167,7 @@ class LiveSocketHandler:
171
167
  )
172
168
 
173
169
  rendered = await _render(socket)
174
- diff = calc_diff(prev_rendered, rendered)
175
- prev_rendered = rendered
170
+ diff = socket.diff(rendered)
176
171
 
177
172
  resp = [
178
173
  joinRef,
@@ -238,8 +233,7 @@ class LiveSocketHandler:
238
233
  if event == "progress":
239
234
  socket.upload_manager.update_progress(joinRef, payload)
240
235
  rendered = await _render(socket)
241
- diff = calc_diff(prev_rendered, rendered)
242
- prev_rendered = rendered
236
+ diff = socket.diff(rendered)
243
237
 
244
238
  resp = [
245
239
  joinRef,
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