pulse-framework 0.1.43__tar.gz → 0.1.44__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. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/PKG-INFO +1 -1
  2. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/pyproject.toml +1 -1
  3. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/user_session.py +7 -3
  4. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/README.md +0 -0
  5. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/__init__.py +0 -0
  6. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/app.py +0 -0
  7. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/channel.py +0 -0
  8. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/__init__.py +0 -0
  9. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/cmd.py +0 -0
  10. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/dependencies.py +0 -0
  11. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/folder_lock.py +0 -0
  12. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/helpers.py +0 -0
  13. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/models.py +0 -0
  14. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/packages.py +0 -0
  15. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/processes.py +0 -0
  16. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/secrets.py +0 -0
  17. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cli/uvicorn_log_config.py +0 -0
  18. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/__init__.py +0 -0
  19. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/codegen.py +0 -0
  20. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/imports.py +0 -0
  21. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/js.py +0 -0
  22. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/templates/__init__.py +0 -0
  23. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/templates/layout.py +0 -0
  24. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/templates/route.py +0 -0
  25. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/templates/routes_ts.py +0 -0
  26. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/codegen/utils.py +0 -0
  27. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/components/__init__.py +0 -0
  28. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/components/for_.py +0 -0
  29. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/components/if_.py +0 -0
  30. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/components/react_router.py +0 -0
  31. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/context.py +0 -0
  32. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/cookies.py +0 -0
  33. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/css.py +0 -0
  34. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/decorators.py +0 -0
  35. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/env.py +0 -0
  36. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/form.py +0 -0
  37. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/helpers.py +0 -0
  38. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/__init__.py +0 -0
  39. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/core.py +0 -0
  40. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/effects.py +0 -0
  41. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/init.py +0 -0
  42. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/runtime.py +0 -0
  43. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/setup.py +0 -0
  44. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/stable.py +0 -0
  45. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/hooks/states.py +0 -0
  46. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/__init__.py +0 -0
  47. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/elements.py +0 -0
  48. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/events.py +0 -0
  49. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/props.py +0 -0
  50. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/svg.py +0 -0
  51. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/tags.py +0 -0
  52. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/html/tags.pyi +0 -0
  53. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/messages.py +0 -0
  54. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/middleware.py +0 -0
  55. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/plugin.py +0 -0
  56. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/proxy.py +0 -0
  57. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/py.typed +0 -0
  58. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/__init__.py +0 -0
  59. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/client.py +0 -0
  60. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/common.py +0 -0
  61. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/effect.py +0 -0
  62. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/infinite_query.py +0 -0
  63. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/mutation.py +0 -0
  64. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/query.py +0 -0
  65. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/queries/store.py +0 -0
  66. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/react_component.py +0 -0
  67. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/reactive.py +0 -0
  68. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/reactive_extensions.py +0 -0
  69. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/render_session.py +0 -0
  70. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/renderer.py +0 -0
  71. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/request.py +0 -0
  72. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/routing.py +0 -0
  73. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/serializer.py +0 -0
  74. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/state.py +0 -0
  75. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/types/__init__.py +0 -0
  76. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/types/event_handler.py +0 -0
  77. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/vdom.py +0 -0
  78. {pulse_framework-0.1.43 → pulse_framework-0.1.44}/src/pulse/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pulse-framework
3
- Version: 0.1.43
3
+ Version: 0.1.44
4
4
  Summary: Pulse - Full-stack framework for building real-time React applications in Python
5
5
  Requires-Dist: websockets>=12.0
6
6
  Requires-Dist: fastapi>=0.104.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pulse-framework"
3
- version = "0.1.43"
3
+ version = "0.1.44"
4
4
  description = "Pulse - Full-stack framework for building real-time React applications in Python"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -14,7 +14,7 @@ from pulse.cookies import SetCookie
14
14
  from pulse.env import env
15
15
  from pulse.helpers import Disposable
16
16
  from pulse.reactive import AsyncEffect, Effect
17
- from pulse.reactive_extensions import ReactiveDict, reactive
17
+ from pulse.reactive_extensions import ReactiveDict, reactive, unwrap
18
18
 
19
19
  if TYPE_CHECKING:
20
20
  from pulse.app import App
@@ -52,11 +52,15 @@ class UserSession(Disposable):
52
52
 
53
53
  async def _save_server_session(self):
54
54
  assert isinstance(self.app.session_store, SessionStore)
55
- await self.app.session_store.save(self.sid, self.data)
55
+ # unwrap subscribes the effect to all signals in the session ReactiveDict
56
+ data = unwrap(self.data)
57
+ await self.app.session_store.save(self.sid, data)
56
58
 
57
59
  def refresh_session_cookie(self, app: "App"):
58
60
  assert isinstance(app.session_store, CookieSessionStore)
59
- signed_cookie = app.session_store.encode(self.sid, self.data)
61
+ # unwrap subscribes the effect to all signals in the session ReactiveDict
62
+ data = unwrap(self.data)
63
+ signed_cookie = app.session_store.encode(self.sid, data)
60
64
  self.set_cookie(
61
65
  name=app.cookie.name,
62
66
  value=signed_cookie,