Skip to content

Commit d07f883

Browse files
Fix: rebuilding a stable branch
1 parent 8925919 commit d07f883

File tree

2 files changed

+61
-12
lines changed

2 files changed

+61
-12
lines changed

sardine_core/handlers/osc.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,62 @@ def send(
133133
else:
134134
serialized = list(chain(*message.items()))
135135
self.call_timed_with_nudge(deadline, self._send, f"/{address}", serialized)
136+
137+
@alias_param(name="iterator", alias="i")
138+
@alias_param(name="divisor", alias="d")
139+
@alias_param(name="rate", alias="r")
140+
@alias_param(name="sorted", alias="s")
141+
def send_pure(
142+
self,
143+
address: Optional[StringElement] | Callable[[], StringElement],
144+
iterator: Number | Callable[[], Number] = 0,
145+
divisor: NumericElement | Callable[[], NumericElement] = 1,
146+
rate: NumericElement | Callable[[], NumericElement] = 1,
147+
sort: bool | Callable[[], bool] = True,
148+
**rest_of_pattern: dict,
149+
) -> None:
150+
151+
def _util_flatten(value):
152+
if isinstance(value, (list, tuple)):
153+
return list(value)
154+
else:
155+
return [value]
156+
157+
if address is None:
158+
return
159+
160+
if self.apply_conditional_mask_to_bars(
161+
pattern=rest_of_pattern,
162+
):
163+
return
164+
165+
pattern = {"address": _resolve_if_callable(address)}
166+
167+
# Evaluate all potential callables
168+
for key, value in rest_of_pattern.items():
169+
pattern[key] = _resolve_if_callable(value)
170+
171+
deadline = self.env.clock.shifted_time
172+
for message in self.pattern_reduce(
173+
pattern,
174+
_resolve_if_callable(iterator),
175+
_resolve_if_callable(divisor),
176+
_resolve_if_callable(rate),
177+
):
178+
if message["address"] is None:
179+
continue
180+
address = message.pop("address")
181+
if sort:
182+
serialized = list(
183+
chain(
184+
*[
185+
_util_flatten(value)
186+
for key, value in sorted(message.items())
187+
]
188+
)
189+
)
190+
else:
191+
serialized = list(
192+
chain(*[_util_flatten(value) for value in message.values()])
193+
)
194+
self.call_timed_with_nudge(deadline, self._send, f"/{address}", serialized)

sardine_core/run.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -406,9 +406,7 @@ def panic(*runners: AsyncRunner) -> None:
406406
D("superpanic")
407407

408408

409-
def Pat(
410-
pattern: str, i: int = 0, div: int = 1, rate: int = 1, as_text: bool = False
411-
) -> Any:
409+
def Pat(pattern: str, i: int = 0, div: int = 1, rate: int = 1) -> Any:
412410
"""
413411
General purpose pattern interface. This function can be used to summon the global
414412
parser stored in the fish_bowl. It is generally used to pattern outside of the
@@ -426,15 +424,7 @@ def Pat(
426424
Returns:
427425
int: The ith element from the resulting pattern
428426
"""
429-
result = bowl.parser.parse(pattern)
430-
if print:
431-
pattern = []
432-
for iterator in range(i):
433-
pattern.append(Sender.pattern_element(result, iterator, div, rate))
434-
print(pattern)
435-
return pattern
436-
else:
437-
return Sender.pattern_element(result, i, div, rate)
427+
return Sender.pattern_element(bowl.parser.parse(pattern), i, div, rate)
438428

439429

440430
class Delay:

0 commit comments

Comments
 (0)