edsl 0.1.36__py3-none-any.whl → 0.1.36.dev2__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,97 +0,0 @@
1
- class RemoteCacheSync:
2
- def __init__(
3
- self, coop, cache, output_func, remote_cache=True, remote_cache_description=""
4
- ):
5
- self.coop = coop
6
- self.cache = cache
7
- self._output = output_func
8
- self.remote_cache = remote_cache
9
- self.old_entry_keys = []
10
- self.new_cache_entries = []
11
- self.remote_cache_description = remote_cache_description
12
-
13
- def __enter__(self):
14
- if self.remote_cache:
15
- self._sync_from_remote()
16
- self.old_entry_keys = list(self.cache.keys())
17
- return self
18
-
19
- def __exit__(self, exc_type, exc_value, traceback):
20
- if self.remote_cache:
21
- self._sync_to_remote()
22
- return False # Propagate exceptions
23
-
24
- def _sync_from_remote(self):
25
- cache_difference = self.coop.remote_cache_get_diff(self.cache.keys())
26
- client_missing_cacheentries = cache_difference.get(
27
- "client_missing_cacheentries", []
28
- )
29
- missing_entry_count = len(client_missing_cacheentries)
30
-
31
- if missing_entry_count > 0:
32
- self._output(
33
- f"Updating local cache with {missing_entry_count:,} new "
34
- f"{'entry' if missing_entry_count == 1 else 'entries'} from remote..."
35
- )
36
- self.cache.add_from_dict(
37
- {entry.key: entry for entry in client_missing_cacheentries}
38
- )
39
- self._output("Local cache updated!")
40
- else:
41
- self._output("No new entries to add to local cache.")
42
-
43
- def _sync_to_remote(self):
44
- cache_difference = self.coop.remote_cache_get_diff(self.cache.keys())
45
- server_missing_cacheentry_keys = cache_difference.get(
46
- "server_missing_cacheentry_keys", []
47
- )
48
- server_missing_cacheentries = [
49
- entry
50
- for key in server_missing_cacheentry_keys
51
- if (entry := self.cache.data.get(key)) is not None
52
- ]
53
-
54
- new_cache_entries = [
55
- entry
56
- for entry in self.cache.values()
57
- if entry.key not in self.old_entry_keys
58
- ]
59
- server_missing_cacheentries.extend(new_cache_entries)
60
- new_entry_count = len(server_missing_cacheentries)
61
-
62
- if new_entry_count > 0:
63
- self._output(
64
- f"Updating remote cache with {new_entry_count:,} new "
65
- f"{'entry' if new_entry_count == 1 else 'entries'}..."
66
- )
67
- self.coop.remote_cache_create_many(
68
- server_missing_cacheentries,
69
- visibility="private",
70
- description=self.remote_cache_description,
71
- )
72
- self._output("Remote cache updated!")
73
- else:
74
- self._output("No new entries to add to remote cache.")
75
-
76
- self._output(
77
- f"There are {len(self.cache.keys()):,} entries in the local cache."
78
- )
79
-
80
-
81
- # # Usage example
82
- # def run_job(self, n, progress_bar, cache, stop_on_exception, sidecar_model, print_exceptions, raise_validation_errors, use_remote_cache=True):
83
- # with RemoteCacheSync(self.coop, cache, self._output, remote_cache=use_remote_cache):
84
- # self._output("Running job...")
85
- # results = self._run_local(
86
- # n=n,
87
- # progress_bar=progress_bar,
88
- # cache=cache,
89
- # stop_on_exception=stop_on_exception,
90
- # sidecar_model=sidecar_model,
91
- # print_exceptions=print_exceptions,
92
- # raise_validation_errors=raise_validation_errors,
93
- # )
94
- # self._output("Job completed!")
95
-
96
- # results.cache = cache.new_entries_cache()
97
- # return results