Skip to content

Commit 60cdbcc

Browse files
authored
Merge pull request #681 from TimMcCool/semver2_fix_656
Semver2 fix 656
2 parents 36f0286 + e4f9ca4 commit 60cdbcc

3 files changed

Lines changed: 223 additions & 107 deletions

File tree

scratchattach/cloud/_base.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ def requests(self, *, no_packet_loss: bool = False, used_cloud_vars: list[str] =
109109
def storage(self, *, no_packet_loss: bool = False, used_cloud_vars: list[str] = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]) -> CloudStorage:
110110
return CloudStorage(self, used_cloud_vars=used_cloud_vars, no_packet_loss=no_packet_loss)
111111

112+
def shortterm_ratelimit_hint(self) -> float:
113+
return 0.06667
114+
115+
def longterm_ratelimit_hint(self) -> float:
116+
return 0.1
117+
112118
@abstractmethod
113119
def create_event_stream(self) -> EventStream:
114120
pass
@@ -121,7 +127,7 @@ def __init__(self, cloud: BaseCloud):
121127
super().__init__()
122128
# NOTE: maybe consider using copy.copy here (copy.deepcopy doesn't work as you cannot deepcopy a Thread)
123129
cloud_type = type(cloud)
124-
if cloud_type is cloud_module.CustomCloud:
130+
if issubclass(cloud_type, cloud_module.CustomCloud):
125131
self.source_cloud = cloud_type(project_id=cloud.project_id, cloud_host=cloud.cloud_host)
126132
else:
127133
self.source_cloud = cloud_type(project_id=cloud.project_id)
@@ -247,6 +253,7 @@ class BaseCloud(AnyCloud[Union[str, int]]):
247253
ws_timeout: Optional[int]
248254
websocket: websocket.WebSocket
249255
event_stream: Optional[EventStream] = None
256+
recorder: Optional[cloud_recorder.CloudRecorder]
250257

251258
def __init__(self, *, project_id: Optional[Union[int, str]] = None, _session=None):
252259

@@ -276,6 +283,16 @@ def __init__(self, *, project_id: Optional[Union[int, str]] = None, _session=Non
276283
self.print_connect_message = False
277284

278285
self.project_id = project_id
286+
287+
def shortterm_ratelimit_hint(self) -> float:
288+
return self.ws_shortterm_ratelimit
289+
290+
def longterm_ratelimit_hint(self) -> float:
291+
return self.ws_longterm_ratelimit
292+
293+
@property
294+
def var_sets_since_first(self) -> int:
295+
return self.var_stets_since_first
279296

280297
def _assert_auth(self):
281298
if self._session is None:
@@ -462,7 +479,7 @@ def set_vars(self, var_value_dict, *, intelligent_waits=True):
462479
self._send_packet_list(packet_list)
463480
self.last_var_set = time.time()
464481

465-
def get_var(self, var, *, recorder_initial_values={}):
482+
def get_var(self, var, *, recorder_initial_values: Optional[dict] = None):
466483
var = "☁ "+var.removeprefix("☁ ")
467484
if self.recorder is None:
468485
self.recorder = cloud_recorder.CloudRecorder(self, initial_values=recorder_initial_values)
@@ -472,7 +489,7 @@ def get_var(self, var, *, recorder_initial_values={}):
472489
time.sleep(0.01)
473490
return self.recorder.get_var(var)
474491

475-
def get_all_vars(self, *, recorder_initial_values={}):
492+
def get_all_vars(self, *, recorder_initial_values: Optional[dict] = None):
476493
if self.recorder is None:
477494
self.recorder = cloud_recorder.CloudRecorder(self, initial_values=recorder_initial_values)
478495
self.recorder.start()

scratchattach/cloud/cloud.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55

66
from websocket import WebSocketBadStatusException
77

8-
from ._base import BaseCloud
9-
from typing import Type
8+
from ._base import BaseCloud, LogCloud
9+
from typing import Type, Optional
1010
from scratchattach.utils.requests import requests
1111
from scratchattach.utils import exceptions, commons
1212
from scratchattach.site import cloud_activity
1313

1414

15-
class ScratchCloud(BaseCloud):
15+
class ScratchCloud(LogCloud):
1616
def __init__(self, *, project_id, _session=None):
1717
super().__init__()
1818

@@ -63,7 +63,7 @@ def logs(self, *, filter_by_var_named=None, limit=100, offset=0) -> list[cloud_a
6363
except Exception as e:
6464
raise exceptions.FetchError(str(e))
6565

66-
def get_var(self, var, *, use_logs=False):
66+
def get_var(self, var, *, recorder_initial_values: Optional[dict] = None, use_logs=False):
6767
var = var.removeprefix("☁ ")
6868
if self._session is None or use_logs:
6969
filtered = self.logs(limit=100, filter_by_var_named="☁ "+var)
@@ -77,7 +77,7 @@ def get_var(self, var, *, use_logs=False):
7777
else:
7878
return super().get_var("☁ "+var)
7979

80-
def get_all_vars(self, *, use_logs=False):
80+
def get_all_vars(self, *, recorder_initial_values: Optional[dict] = None, use_logs=False):
8181
if self._session is None or use_logs:
8282
logs = self.logs(limit=100)
8383
logs.reverse()

0 commit comments

Comments
 (0)