hmr 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hmr
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Hot Module Reload for Python
5
5
  Project-URL: repository, https://github.com/promplate/pyth-on-line/tree/reactivity
6
6
  Requires-Python: >=3.12
@@ -0,0 +1,14 @@
1
+ hmr-0.5.2.dist-info/METADATA,sha256=kc7P4_6r3h7ZzS3fLQ99YLceVJcVJrGG0iWLCKi6XbU,258
2
+ hmr-0.5.2.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ hmr-0.5.2.dist-info/entry_points.txt,sha256=g_T0uJ43WgsdG14kkkdaBQuIL0HO-m1qvtjXMP6d060,59
4
+ reactivity/__init__.py,sha256=pX-RUzkezCC1x4eOWGxNhXbwrbvBLP_3pQuZr9eZz1Y,300
5
+ reactivity/functional.py,sha256=jJLEq88w5ag2cXuD1T118uEjnEg37_mqvWmFkb47KVY,1300
6
+ reactivity/helpers.py,sha256=rcrCXy1mmlei-if_BN4nSgS2IG9kBj-jq1YRwEfcITo,5329
7
+ reactivity/hmr/__init__.py,sha256=S5ZIHqCRpevdzWuhS0aCua_S8F0LkK0YNg6IgeTScFQ,177
8
+ reactivity/hmr/__main__.py,sha256=uIcyjR5gMFIXH_3hS0B3SD00RirVf7GIct-uItx675o,64
9
+ reactivity/hmr/api.py,sha256=sKDQV7uKRVoDifTZKrLQGZP-fzgYbdVjfEOC6ki4NKY,2280
10
+ reactivity/hmr/core.py,sha256=kXrPyXi6yxE88-5wcRB_r-ikOH_3u0ISUEx1nXtt-SI,11686
11
+ reactivity/hmr/hooks.py,sha256=jIFpe4CNxfaS9RcR4OIodx_sOZlnJ_IA1T1RtHPXhwU,945
12
+ reactivity/hmr/utils.py,sha256=h9m7iRXlvsLTrHoXV9gEVbhz3XsPK4KgnStYoCAWE5I,1616
13
+ reactivity/primitives.py,sha256=QkiUF8bqLZtyXguWwNJi34HJIc-SzUKqi1M9UgTNuvI,5952
14
+ hmr-0.5.2.dist-info/RECORD,,
reactivity/functional.py CHANGED
@@ -11,7 +11,7 @@ class Getter[T](Protocol):
11
11
 
12
12
 
13
13
  class Setter[T](Protocol):
14
- def __call__(self, value: T): ...
14
+ def __call__(self, value: T) -> bool: ...
15
15
 
16
16
 
17
17
  def create_signal[T](initial_value: T = None, check_equality=True) -> tuple[Getter[T], Setter[T]]:
reactivity/helpers.py CHANGED
@@ -99,8 +99,8 @@ class Reactive[K, V](Subscribable, MutableMapping[K, V]):
99
99
 
100
100
  def __setitem__(self, key: K, value: V):
101
101
  with Batch(force_flush=False):
102
- self._signals[key].set(value)
103
- self.notify()
102
+ if self._signals[key].set(value):
103
+ self.notify()
104
104
 
105
105
  def __delitem__(self, key: K):
106
106
  state = self._signals[key]
reactivity/hmr/api.py CHANGED
@@ -1,9 +1,13 @@
1
+ import sys
2
+
1
3
  from .core import AsyncReloader, BaseReloader, SyncReloader, create_effect
2
4
  from .hooks import call_post_reload_hooks, call_pre_reload_hooks
3
5
 
4
6
 
5
7
  class LifecycleMixin(BaseReloader):
6
8
  def run_with_hooks(self):
9
+ self._original_main_module = sys.modules["__main__"]
10
+ sys.modules["__main__"] = self.entry_module
7
11
  call_pre_reload_hooks()
8
12
  self.effect = create_effect(self.run_entry_file)
9
13
  call_post_reload_hooks()
@@ -12,6 +16,7 @@ class LifecycleMixin(BaseReloader):
12
16
  self.effect.dispose()
13
17
  self.entry_module.load.dispose()
14
18
  self.entry_module.load.invalidate()
19
+ sys.modules["__main__"] = self._original_main_module
15
20
 
16
21
 
17
22
  class SyncReloaderAPI(SyncReloader, LifecycleMixin):
reactivity/hmr/core.py CHANGED
@@ -331,11 +331,14 @@ def cli():
331
331
  if len(sys.argv) < 2:
332
332
  print("\n Usage: hmr <entry file>, just like python <entry file>\n")
333
333
  exit(1)
334
- entry = sys.argv[-1]
334
+ sys.argv.pop(0) # this file itself
335
+ entry = sys.argv[0]
335
336
  if not (path := Path(entry)).is_file():
336
337
  raise FileNotFoundError(path.resolve())
337
338
  sys.path.insert(0, ".")
338
- SyncReloader(entry).keep_watching_until_interrupt()
339
+ reloader = SyncReloader(entry)
340
+ sys.modules["__main__"] = reloader.entry_module
341
+ reloader.keep_watching_until_interrupt()
339
342
 
340
343
 
341
- __version__ = "0.5.0"
344
+ __version__ = "0.5.2"
reactivity/primitives.py CHANGED
@@ -72,6 +72,8 @@ class Signal[T](Subscribable):
72
72
  if not self._check_equality or self._value != value:
73
73
  self._value = value
74
74
  self.notify()
75
+ return True
76
+ return False
75
77
 
76
78
 
77
79
  class State[T](Signal[T]):
@@ -1,14 +0,0 @@
1
- hmr-0.5.0.dist-info/METADATA,sha256=BjQm4EMgr3JdiaLg1pibfu40LvQmRETerF3GyRYoa3o,258
2
- hmr-0.5.0.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- hmr-0.5.0.dist-info/entry_points.txt,sha256=g_T0uJ43WgsdG14kkkdaBQuIL0HO-m1qvtjXMP6d060,59
4
- reactivity/__init__.py,sha256=pX-RUzkezCC1x4eOWGxNhXbwrbvBLP_3pQuZr9eZz1Y,300
5
- reactivity/functional.py,sha256=U06vshcVhZ0sb218gcmHtEhfgTNAGtQ7zyvPz2w5qKM,1292
6
- reactivity/helpers.py,sha256=DVwhsEEs9aRcsyMqTdF5eRG-Z0zVhS7AbmR-Y-PXCkg,5321
7
- reactivity/hmr/__init__.py,sha256=S5ZIHqCRpevdzWuhS0aCua_S8F0LkK0YNg6IgeTScFQ,177
8
- reactivity/hmr/__main__.py,sha256=uIcyjR5gMFIXH_3hS0B3SD00RirVf7GIct-uItx675o,64
9
- reactivity/hmr/api.py,sha256=Esb1fYiBW0SLxQ0MPXby25ZgIIZhIp-M3b2KiqpffmU,2094
10
- reactivity/hmr/core.py,sha256=ky7xaylCio8QWzg1nDK-krTmCu-h4fYTRChSyTFLrnY,11571
11
- reactivity/hmr/hooks.py,sha256=jIFpe4CNxfaS9RcR4OIodx_sOZlnJ_IA1T1RtHPXhwU,945
12
- reactivity/hmr/utils.py,sha256=h9m7iRXlvsLTrHoXV9gEVbhz3XsPK4KgnStYoCAWE5I,1616
13
- reactivity/primitives.py,sha256=sPuIRi3pnAV7wV42rqD0j07HNkz4Bk4VxJWhdYToeZE,5907
14
- hmr-0.5.0.dist-info/RECORD,,
File without changes