pythagoras 0.23.7__py3-none-any.whl → 0.23.8__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.
@@ -219,7 +219,7 @@ class StorableFn(OrdinaryFn):
219
219
 
220
220
  @property
221
221
  def portal(self) -> DataPortal:
222
- return OrdinaryFn.portal.__get__(self)
222
+ return super().portal
223
223
 
224
224
 
225
225
  def _get_config_setting(self, key: SafeStrTuple, portal:DataPortal) -> Any:
@@ -72,7 +72,7 @@ class LoggingFn(StorableFn):
72
72
 
73
73
  @property
74
74
  def portal(self) -> LoggingCodePortal:
75
- return StorableFn.portal.__get__(self)
75
+ return super().portal
76
76
 
77
77
 
78
78
  class LoggingFnCallSignature:
@@ -59,7 +59,7 @@ class SafeFn(LoggingFn):
59
59
 
60
60
  @property
61
61
  def portal(self) -> SafeCodePortal:
62
- return LoggingFn.portal.__get__(self)
62
+ return super().portal
63
63
 
64
64
 
65
65
  register_parameterizable_class(SafeCodePortal)
@@ -4,6 +4,8 @@ import builtins
4
4
  from typing import Callable, Any
5
5
 
6
6
  from persidict import PersiDict, Joker, KEEP_CURRENT
7
+
8
+ from .._010_basic_portals import PortalAwareClass
7
9
  from .._020_ordinary_code_portals.code_normalizer import _pythagoras_decorator_names
8
10
  from .._030_data_portals import DataPortal
9
11
  from .._040_logging_code_portals import KwArgs
@@ -29,7 +31,7 @@ class AutonomousCodePortal(SafeCodePortal):
29
31
 
30
32
  class AutonomousFn(SafeFn):
31
33
 
32
- _fixed_kwargs_cached: KwArgs | None
34
+ _fixed_kwargs_cache: KwArgs | None
33
35
  _fixed_kwargs_packed: KwArgs | None
34
36
 
35
37
  def __init__(self, fn: Callable|str|SafeFn
@@ -46,9 +48,9 @@ class AutonomousFn(SafeFn):
46
48
 
47
49
  if isinstance(fn, AutonomousFn):
48
50
  self._fixed_kwargs_packed.update(fixed_kwargs_packed)
49
- self._fixed_kwargs_cached = KwArgs(**{**fn.fixed_kwargs, **fixed_kwargs})
51
+ self._fixed_kwargs_cache = KwArgs(**{**fn.fixed_kwargs, **fixed_kwargs})
50
52
  else:
51
- self._fixed_kwargs_cached = fixed_kwargs
53
+ self._fixed_kwargs_cache = fixed_kwargs
52
54
  self._fixed_kwargs_packed = fixed_kwargs_packed
53
55
 
54
56
  fn_name = self.name
@@ -88,10 +90,10 @@ class AutonomousFn(SafeFn):
88
90
 
89
91
  @property
90
92
  def fixed_kwargs(self) -> KwArgs:
91
- if not hasattr(self, "_fixed_kwargs_cached"):
93
+ if not hasattr(self, "_fixed_kwargs_cache"):
92
94
  with self.portal:
93
- self._fixed_kwargs_cached = self._fixed_kwargs_packed.unpack()
94
- return self._fixed_kwargs_cached
95
+ self._fixed_kwargs_cache = self._fixed_kwargs_packed.unpack()
96
+ return self._fixed_kwargs_cache
95
97
 
96
98
 
97
99
  def execute(self, **kwargs) -> Any:
@@ -120,9 +122,12 @@ class AutonomousFn(SafeFn):
120
122
 
121
123
  def _first_visit_to_portal(self, portal: DataPortal) -> None:
122
124
  super()._first_visit_to_portal(portal)
123
- if hasattr(self,"_fixed_kwargs_cached"):
125
+ if hasattr(self,"_fixed_kwargs_cache"):
124
126
  with portal:
125
- _ = self._fixed_kwargs_cached.pack()
127
+ for v in self._fixed_kwargs_cache.values():
128
+ if isinstance(v, PortalAwareClass):
129
+ v._first_visit_to_portal(portal)
130
+ _ = self._fixed_kwargs_cache.pack()
126
131
 
127
132
 
128
133
  def __getstate__(self):
@@ -140,7 +145,7 @@ class AutonomousFn(SafeFn):
140
145
 
141
146
  @property
142
147
  def portal(self) -> AutonomousCodePortal:
143
- return SafeFn.portal.__get__(self)
148
+ return super().portal
144
149
 
145
150
 
146
151
  def _invalidate_cache(self):
@@ -151,8 +156,8 @@ class AutonomousFn(SafeFn):
151
156
  This method should delete all such attributes.
152
157
  """
153
158
  super()._invalidate_cache()
154
- if hasattr(self, "_fixed_kwargs_cached"):
159
+ if hasattr(self, "_fixed_kwargs_cache"):
155
160
  if not hasattr(self, "_fixed_kwargs_packed"):
156
161
  raise AttributeError("Premature cache invalidation: "
157
162
  "fixed_kwargs_packed is missing.")
158
- del self._fixed_kwargs_cached
163
+ del self._fixed_kwargs_cache
@@ -48,8 +48,8 @@ class ProtectedCodePortal(AutonomousCodePortal):
48
48
 
49
49
  class ProtectedFn(AutonomousFn):
50
50
 
51
- _pre_validators_cached: list[ValidatorFn] | None
52
- _post_validators_cached: list[ValidatorFn] | None
51
+ _pre_validators_cache: list[ValidatorFn] | None
52
+ _post_validators_cache: list[ValidatorFn] | None
53
53
  _pre_validators_addrs: list[ValueAddr]
54
54
  _post_validators_addrs: list[ValueAddr]
55
55
 
@@ -84,12 +84,12 @@ class ProtectedFn(AutonomousFn):
84
84
  pre_validators = self._normalize_validators(pre_validators, PreValidatorFn)
85
85
  post_validators = self._normalize_validators(post_validators, PostValidatorFn)
86
86
 
87
- self._pre_validators_cached = pre_validators
88
- self._post_validators_cached = post_validators
87
+ self._pre_validators_cache = pre_validators
88
+ self._post_validators_cache = post_validators
89
89
  self._pre_validators_addrs = [ValueAddr(g, store=False)
90
- for g in self._pre_validators_cached]
90
+ for g in self._pre_validators_cache]
91
91
  self._post_validators_addrs = [ValueAddr(v, store=False)
92
- for v in self._post_validators_cached]
92
+ for v in self._post_validators_cache]
93
93
 
94
94
 
95
95
  def __getstate__(self):
@@ -112,27 +112,37 @@ class ProtectedFn(AutonomousFn):
112
112
  """Register an object in a portal that the object has not seen before."""
113
113
  super()._first_visit_to_portal(portal)
114
114
 
115
- if hasattr(self,"_pre_validators_cached"):
116
- with portal:
117
- _ = [ValueAddr(g) for g in self._pre_validators_cached]
115
+ for f in self.pre_validators:
116
+ f._first_visit_to_portal(portal)
117
+ for f in self.post_validators:
118
+ f._first_visit_to_portal(portal)
118
119
 
119
- if hasattr(self,"_post_validators_cached"):
120
- with portal:
121
- _ = [ValueAddr(g) for g in self._post_validators_cached]
120
+
121
+ # if hasattr(self,"_pre_validators_cache"):
122
+ # with portal:
123
+ # _ = [ValueAddr(g) for g in self._pre_validators_cache]
124
+ # else:
125
+ # raise AttributeError("Missing pre-validators: ")
126
+ #
127
+ # if hasattr(self,"_post_validators_cache"):
128
+ # with portal:
129
+ # _ = [ValueAddr(g) for g in self._post_validators_cache]
130
+ # else:
131
+ # raise AttributeError("Missing post-validators: ")
122
132
 
123
133
 
124
134
  @property
125
135
  def pre_validators(self) -> list[AutonomousFn]:
126
- if not hasattr(self, "_pre_validators_cached"):
127
- self._pre_validators_cached = [addr.get() for addr in self._pre_validators_addrs]
128
- return self._pre_validators_cached
136
+ if not hasattr(self, "_pre_validators_cache"):
137
+ self._pre_validators_cache = [addr.get() for addr in self._pre_validators_addrs]
138
+ return self._pre_validators_cache
129
139
 
130
140
 
131
141
  @property
132
142
  def post_validators(self) -> list[AutonomousFn]:
133
- if not hasattr(self, "_post_validators_cached"):
134
- self._post_validators_cached = [addr.get() for addr in self._post_validators_addrs]
135
- return self._post_validators_cached
143
+ if not hasattr(self, "_post_validators_cache"):
144
+ self._post_validators_cache = [addr.get() for addr in self._post_validators_addrs]
145
+ return self._post_validators_cache
136
146
 
137
147
 
138
148
  def can_be_executed(self, kw_args: KwArgs) -> bool:
@@ -210,7 +220,7 @@ class ProtectedFn(AutonomousFn):
210
220
 
211
221
  @property
212
222
  def portal(self) -> ProtectedCodePortal:
213
- return AutonomousFn.portal.__get__(self)
223
+ return super().portal
214
224
 
215
225
 
216
226
  def _invalidate_cache(self):
@@ -225,9 +235,9 @@ class ProtectedFn(AutonomousFn):
225
235
  if not hasattr(self, "_post_validators_addrs"):
226
236
  raise AttributeError("Premature cache invalidation: "
227
237
  "_post_validators_addrs is missing.")
228
- del self._post_validators_cached
238
+ del self._post_validators_cache
229
239
  if hasattr(self, "_pre_validators_cached"):
230
240
  if not hasattr(self, "_pre_validators_addrs"):
231
241
  raise AttributeError("Premature cache invalidation: "
232
242
  "_pre_validators_addrs is missing.")
233
- del self._pre_validators_cached
243
+ del self._pre_validators_cache
@@ -248,7 +248,7 @@ class PureFn(ProtectedFn):
248
248
 
249
249
  @property
250
250
  def portal(self) -> PureCodePortal: #*#*#
251
- return ProtectedFn.portal.__get__(self)
251
+ return super().portal
252
252
 
253
253
 
254
254
  class PureFnExecutionResultAddr(HashAddr):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pythagoras
3
- Version: 0.23.7
3
+ Version: 0.23.8
4
4
  Summary: Planet-scale distributed computing in Python.
5
5
  Keywords: cloud,ML,AI,serverless,distributed,parallel,machine-learning,deep-learning,pythagoras
6
6
  Author: Volodymyr (Vlad) Pavlov
@@ -12,7 +12,7 @@ pythagoras/_020_ordinary_code_portals/function_processing.py,sha256=ae5841d1da5a
12
12
  pythagoras/_020_ordinary_code_portals/ordinary_decorator.py,sha256=278ab1d37344120a585af8380fc52400bd0f76d02ddac43230dd68a7a2cc16c0,1028
13
13
  pythagoras/_020_ordinary_code_portals/ordinary_portal_core_classes.py,sha256=6d8d87cf2d7d9537b3bfde9d49cd65e52b1a1b13643133aaf08b1f9e4755d706,9743
14
14
  pythagoras/_030_data_portals/__init__.py,sha256=7ff17d0c29ae5603cc833c118ee363e8523add2de85eeee58f7cd4eba370ec77,1427
15
- pythagoras/_030_data_portals/data_portal_core_classes.py,sha256=e790ff0ec8c303ef3809da998378956265978b34f80b0da36bc42b975ff56e4f,20423
15
+ pythagoras/_030_data_portals/data_portal_core_classes.py,sha256=e8c3ecf61233bd2ae8fba50159afcf875c0e42c8238fca704da7ab545fabe1b1,20406
16
16
  pythagoras/_030_data_portals/ready_and_get.py,sha256=838004869475dd877a1158a7cb6c20f2f922b97e1ac174286ce30ce287fb6520,2002
17
17
  pythagoras/_030_data_portals/storable_decorator.py,sha256=97c5b71a156622c7208e80931aaded99d7a12860cb2159c56d333e196fb51b88,578
18
18
  pythagoras/_040_logging_code_portals/__init__.py,sha256=ab6855c8e56013ef51bb7c9c8a52bdf184bd45ab7cb5273a7ab77b02d1b1a5a0,996
@@ -20,16 +20,16 @@ pythagoras/_040_logging_code_portals/exception_processing_tracking.py,sha256=b14
20
20
  pythagoras/_040_logging_code_portals/execution_environment_summary.py,sha256=853bd36da75802d8ac6781fcaeafa7fe1b0a3c24b7f23b12cfc970fc0d4322a6,2268
21
21
  pythagoras/_040_logging_code_portals/kw_args.py,sha256=cf513ce2e8621e13f552e449930c57d4867279f3aa3e7ca0d796197751eae9d7,2604
22
22
  pythagoras/_040_logging_code_portals/logging_decorator.py,sha256=d3bf70dbf6791e15c52eb8325d07a48ee39bcbd09d5201541916d14f9969ba35,891
23
- pythagoras/_040_logging_code_portals/logging_portal_core_classes.py,sha256=ebc0a18b3f4e85caad69e47c3a244c62e9c42d5aa262c1e34d380620910127e2,21869
23
+ pythagoras/_040_logging_code_portals/logging_portal_core_classes.py,sha256=aa44a1349736850e0a42fd1d96d28b09bca0252c410771bea7f9882c9135ebf0,21852
24
24
  pythagoras/_040_logging_code_portals/notebook_checker.py,sha256=e654090c80f38512114a65f54fcf2701110c10ca030c57f438829cbd3a678739,541
25
25
  pythagoras/_040_logging_code_portals/output_capturer.py,sha256=a210a9eaaab12fb22e2467e716e088823e4e7381e60bc73bb99184feecd69199,4216
26
26
  pythagoras/_040_logging_code_portals/uncaught_exceptions.py,sha256=0776cfbd7e679c9271e098cb486765d715ce054da9aa8dc23fe32898901f5da1,3121
27
27
  pythagoras/_050_safe_code_portals/__init__.py,sha256=611f95e96d96675ed28ea993c98db1758d7ac5354412e2ecd8c75d263fd60995,557
28
28
  pythagoras/_050_safe_code_portals/safe_decorator.py,sha256=653b08326b5bdde180592a7074c6174662326898aa57a99d15b07f32a9e0efce,804
29
- pythagoras/_050_safe_code_portals/safe_portal_core_classes.py,sha256=0f414a7a6f280cddb9a9b55dbb86f7039fcc4e558147d1c1a2704df640de9ecf,2026
29
+ pythagoras/_050_safe_code_portals/safe_portal_core_classes.py,sha256=e8566522619b39f3e966032ceed935aa0644641a977c185ef8ecb9011071fc45,2010
30
30
  pythagoras/_060_autonomous_code_portals/__init__.py,sha256=7308e1db007167f22096e0c59701784a4ecc5d5fb776ae016a50dc3b6d100285,1747
31
31
  pythagoras/_060_autonomous_code_portals/autonomous_decorators.py,sha256=762597d378d96889dce798c0837f75651061f92b797b12512c36624bb76a62f8,2895
32
- pythagoras/_060_autonomous_code_portals/autonomous_portal_core_classes.py,sha256=d07623edf1383bc8b82eae49f6c7b19e3512edc79a05f391133c05a2e02f6739,6027
32
+ pythagoras/_060_autonomous_code_portals/autonomous_portal_core_classes.py,sha256=5f4387176ba2e4bd4ed5ea7b17b5b8fa6332c75933a7fb5f070f53105c47cb8e,6228
33
33
  pythagoras/_060_autonomous_code_portals/names_usage_analyzer.py,sha256=9aaaf3010c37b46c4f617b0c03c1347e1848a49a29bd116bce47353154ac3d74,7474
34
34
  pythagoras/_070_protected_code_portals/__init__.py,sha256=4ef19c25acf6d10aac9aff26da903876e06d167fc274229f9126ce485a094bc9,989
35
35
  pythagoras/_070_protected_code_portals/basic_pre_validators.py,sha256=8a3a1727bb4acdf95ea897810092e0d09c8df2b81d8014e3f1f9f585761b5301,2071
@@ -37,12 +37,12 @@ pythagoras/_070_protected_code_portals/fn_arg_names_checker.py,sha256=e858ce5099
37
37
  pythagoras/_070_protected_code_portals/list_flattener.py,sha256=9a54b512ad9dc201db348e7908f5ca5f36d171ae3da433511d38023a6ba8d4b5,331
38
38
  pythagoras/_070_protected_code_portals/package_manager.py,sha256=4111d71886adcf1e8d28f3c2d3a08c8a352601297f9ab3f08a4541586ed9d376,1965
39
39
  pythagoras/_070_protected_code_portals/protected_decorators.py,sha256=956ed45870004246d77d6e364015b3a0d936bd8b919dfa9a56c97d69713a9b80,1627
40
- pythagoras/_070_protected_code_portals/protected_portal_core_classes.py,sha256=df220de819e2d0aa5fd0a9332c6d13c1cd5aaf0b45bade7602d4bfecf7473114,9490
40
+ pythagoras/_070_protected_code_portals/protected_portal_core_classes.py,sha256=81c202261209e6e0feeaa2edeaf5e965aa2b78e8e8e0761ac86e5c39f584f48b,9802
41
41
  pythagoras/_070_protected_code_portals/system_utils.py,sha256=878a22110140c852b3aaf774cb0c0023458360a4ae221fef89ff3a5d02176301,2360
42
42
  pythagoras/_070_protected_code_portals/validation_succesful_const.py,sha256=602cd3598dd43a71421eb547f1e80f411e30df616deb26912a741a2898d06754,300
43
43
  pythagoras/_070_protected_code_portals/validator_fn_classes.py,sha256=4afa4bf0629f68e4b1623003272ffd7111ac9cbb739e81fde601049d19b84269,3232
44
44
  pythagoras/_080_pure_code_portals/__init__.py,sha256=aa8564346e1701934310dd5eca92424f5784e0be49c6bad97459f4bab1bdad73,1082
45
- pythagoras/_080_pure_code_portals/pure_core_classes.py,sha256=5227a65ca50143b0234ce8845d45fad38a7b0b80d7b15ad7f441e594944b59f7,19457
45
+ pythagoras/_080_pure_code_portals/pure_core_classes.py,sha256=d8399addccd7cec09586660bc958f1cbfac08fe7ce6cab4c8f5ae16d5ec996ce,19439
46
46
  pythagoras/_080_pure_code_portals/pure_decorator.py,sha256=587650ce6cb1802a402c7aea7de88e32b33a4c391972fd18d9bef9e9ecf84369,2279
47
47
  pythagoras/_090_swarming_portals/__init__.py,sha256=4ee035ecf7ed4c1b9da6d01b94db41943e3a06a5228ad92c3ad7f7cb4d502a6d,514
48
48
  pythagoras/_090_swarming_portals/output_suppressor.py,sha256=83e6cc9bcc62a226babb1165912ef5095ea948499ce5136a7516ac8b54522607,626
@@ -60,6 +60,6 @@ pythagoras/_900_project_stats_collector/__init__.py,sha256=11a82df8184f3ed046829
60
60
  pythagoras/_900_project_stats_collector/project_analyzer.py,sha256=ba1c9c14a8d421712961c6589da937ca7e0916172197ea19ef0b7ab291718686,3574
61
61
  pythagoras/__init__.py,sha256=4cc3ed25d4a2fd64a10a9267b1555d3b8f1672fb3bf0631b522e601dcd5e30bc,1233
62
62
  pythagoras/core/__init__.py,sha256=11c3616471c79550d69a0d3b3b49a45b90087919b82477db5de99c8ebc6ba5c0,298
63
- pythagoras-0.23.7.dist-info/WHEEL,sha256=607c46fee47e440c91332c738096ff0f5e54ca3b0818ee85462dd5172a38e793,79
64
- pythagoras-0.23.7.dist-info/METADATA,sha256=f11d45ee87a517a5773f7e5f57627c5f2af986ccd5b2a845a73a557e5798250d,4902
65
- pythagoras-0.23.7.dist-info/RECORD,,
63
+ pythagoras-0.23.8.dist-info/WHEEL,sha256=607c46fee47e440c91332c738096ff0f5e54ca3b0818ee85462dd5172a38e793,79
64
+ pythagoras-0.23.8.dist-info/METADATA,sha256=20330bc6ac1e9c95a092ebf66c5af3c45f3405de19e850063b3516c9068b92c9,4902
65
+ pythagoras-0.23.8.dist-info/RECORD,,