Merge branch 'starfederation:develop' into develop
This commit is contained in:
commit
b2e737d760
|
@ -52,7 +52,7 @@ async def updates_asgi(request):
|
||||||
async def time_updates():
|
async def time_updates():
|
||||||
while True:
|
while True:
|
||||||
yield DatastarStreamingHttpResponse.merge_fragments(
|
yield DatastarStreamingHttpResponse.merge_fragments(
|
||||||
[f"""<span id="currentTime">{datetime.now().isoformat()}"""]
|
f"""<span id="currentTime">{datetime.now().isoformat()}"""
|
||||||
)
|
)
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
yield DatastarStreamingHttpResponse.merge_signals(
|
yield DatastarStreamingHttpResponse.merge_signals(
|
||||||
|
@ -110,7 +110,7 @@ def updates_wsgi(request):
|
||||||
def time_updates():
|
def time_updates():
|
||||||
while True:
|
while True:
|
||||||
yield DatastarStreamingHttpResponse.merge_fragments(
|
yield DatastarStreamingHttpResponse.merge_fragments(
|
||||||
[f"""<span id="currentTime">{datetime.now().isoformat()}"""]
|
f"""<span id="currentTime">{datetime.now().isoformat()}"""
|
||||||
)
|
)
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
yield DatastarStreamingHttpResponse.merge_signals(
|
yield DatastarStreamingHttpResponse.merge_signals(
|
||||||
|
|
|
@ -54,7 +54,7 @@ async def read_root():
|
||||||
async def time_updates():
|
async def time_updates():
|
||||||
while True:
|
while True:
|
||||||
yield DatastarStreamingResponse.merge_fragments(
|
yield DatastarStreamingResponse.merge_fragments(
|
||||||
[f"""<span id="currentTime">{datetime.now().isoformat()}"""]
|
f"""<span id="currentTime">{datetime.now().isoformat()}"""
|
||||||
)
|
)
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
yield DatastarStreamingResponse.merge_signals({"currentTime": f"{datetime.now().isoformat()}"})
|
yield DatastarStreamingResponse.merge_signals({"currentTime": f"{datetime.now().isoformat()}"})
|
||||||
|
|
|
@ -93,7 +93,7 @@ def GreatTable(pattern=default_pattern):
|
||||||
@app.post
|
@app.post
|
||||||
async def table(filter: str):
|
async def table(filter: str):
|
||||||
async def _():
|
async def _():
|
||||||
yield DatastarStreamingResponse.merge_fragments([GreatTable(filter)])
|
yield DatastarStreamingResponse.merge_fragments(GreatTable(filter))
|
||||||
|
|
||||||
return DatastarStreamingResponse(_())
|
return DatastarStreamingResponse(_())
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ def index():
|
||||||
async def clock():
|
async def clock():
|
||||||
while True:
|
while True:
|
||||||
now = datetime.isoformat(datetime.now())
|
now = datetime.isoformat(datetime.now())
|
||||||
yield DatastarStreamingResponse.merge_fragments([Span(id="currentTime")(now)])
|
yield DatastarStreamingResponse.merge_fragments(Span(id="currentTime")(now))
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ async def hello():
|
||||||
async def _():
|
async def _():
|
||||||
# Simulate load time
|
# Simulate load time
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
yield DatastarStreamingResponse.merge_fragments([HELLO_BUTTON])
|
yield DatastarStreamingResponse.merge_fragments(HELLO_BUTTON)
|
||||||
|
|
||||||
return DatastarStreamingResponse(_())
|
return DatastarStreamingResponse(_())
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ async def reset():
|
||||||
|
|
||||||
async def _(sse):
|
async def _(sse):
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
yield sse.merge_fragments([reset_and_hello])
|
yield sse.merge_fragments(reset_and_hello)
|
||||||
|
|
||||||
return DatastarFastHTMLResponse(_)
|
return DatastarFastHTMLResponse(_)
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ async def index():
|
||||||
async def clock():
|
async def clock():
|
||||||
while True:
|
while True:
|
||||||
now = datetime.isoformat(datetime.now())
|
now = datetime.isoformat(datetime.now())
|
||||||
yield DatastarStreamingResponse.merge_fragments([Span(id="currentTime")(now)])
|
yield DatastarStreamingResponse.merge_fragments(Span(id="currentTime")(now))
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
yield DatastarStreamingResponse.merge_signals({"currentTime": f"{now}"})
|
yield DatastarStreamingResponse.merge_signals({"currentTime": f"{now}"})
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
|
|
@ -47,7 +47,7 @@ async def updates():
|
||||||
async def time_updates():
|
async def time_updates():
|
||||||
while True:
|
while True:
|
||||||
yield ServerSentEventGenerator.merge_fragments(
|
yield ServerSentEventGenerator.merge_fragments(
|
||||||
[f"""<span id="currentTime">{datetime.now().isoformat()}"""]
|
f"""<span id="currentTime">{datetime.now().isoformat()}"""
|
||||||
)
|
)
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
yield ServerSentEventGenerator.merge_signals({"currentTime": f"{datetime.now().isoformat()}"})
|
yield ServerSentEventGenerator.merge_signals({"currentTime": f"{datetime.now().isoformat()}"})
|
||||||
|
|
|
@ -58,13 +58,11 @@ async def add_signal(request):
|
||||||
|
|
||||||
await response.send(
|
await response.send(
|
||||||
SSE.merge_fragments(
|
SSE.merge_fragments(
|
||||||
[
|
"""
|
||||||
"""
|
|
||||||
<div class="time signal">
|
<div class="time signal">
|
||||||
Current time from signal: <span data-text="$currentTime">CURRENT_TIME</span>
|
Current time from signal: <span data-text="$currentTime">CURRENT_TIME</span>
|
||||||
</div>
|
</div>
|
||||||
"""
|
""",
|
||||||
],
|
|
||||||
selector="#timers",
|
selector="#timers",
|
||||||
merge_mode=FragmentMergeMode.FragmentMergeModeAppend,
|
merge_mode=FragmentMergeMode.FragmentMergeModeAppend,
|
||||||
)
|
)
|
||||||
|
@ -79,13 +77,11 @@ async def add_fragment(request):
|
||||||
|
|
||||||
await response.send(
|
await response.send(
|
||||||
SSE.merge_fragments(
|
SSE.merge_fragments(
|
||||||
[
|
f"""\
|
||||||
f"""\
|
|
||||||
<div class="time fragment">
|
<div class="time fragment">
|
||||||
Current time from fragment: {datetime.now().isoformat()}
|
Current time from fragment: {datetime.now().isoformat()}
|
||||||
</div>
|
</div>
|
||||||
"""
|
""",
|
||||||
],
|
|
||||||
selector="#timers",
|
selector="#timers",
|
||||||
merge_mode=FragmentMergeMode.FragmentMergeModeAppend,
|
merge_mode=FragmentMergeMode.FragmentMergeModeAppend,
|
||||||
)
|
)
|
||||||
|
@ -101,13 +97,11 @@ async def updates(request):
|
||||||
while True:
|
while True:
|
||||||
await response.send(
|
await response.send(
|
||||||
SSE.merge_fragments(
|
SSE.merge_fragments(
|
||||||
[
|
f"""
|
||||||
f"""
|
|
||||||
<div class="time fragment" >
|
<div class="time fragment" >
|
||||||
Current time from fragment: {datetime.now().isoformat()}
|
Current time from fragment: {datetime.now().isoformat()}
|
||||||
</div>
|
</div>
|
||||||
"""
|
""",
|
||||||
],
|
|
||||||
selector=".fragment",
|
selector=".fragment",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -10,6 +10,7 @@ class DatastarStreamingResponse(_DatastarStreamingResponse):
|
||||||
@classmethod
|
@classmethod
|
||||||
@override
|
@override
|
||||||
def merge_fragments(cls, fragments, *args, **kwargs):
|
def merge_fragments(cls, fragments, *args, **kwargs):
|
||||||
xml_fragments = [f if isinstance(f, str) else to_xml(f) for f in fragments]
|
if not isinstance(fragments, str):
|
||||||
|
fragments = to_xml(fragments)
|
||||||
# From here, business as usual
|
# From here, business as usual
|
||||||
return super().merge_fragments(xml_fragments, *args, **kwargs)
|
return super().merge_fragments(fragments, *args, **kwargs)
|
||||||
|
|
|
@ -38,7 +38,7 @@ class ServerSentEventGenerator:
|
||||||
@classmethod
|
@classmethod
|
||||||
def merge_fragments(
|
def merge_fragments(
|
||||||
cls,
|
cls,
|
||||||
fragments: list[str],
|
fragments: str,
|
||||||
selector: Optional[str] = None,
|
selector: Optional[str] = None,
|
||||||
merge_mode: Optional[consts.FragmentMergeMode] = None,
|
merge_mode: Optional[consts.FragmentMergeMode] = None,
|
||||||
use_view_transition: bool = consts.DEFAULT_FRAGMENTS_USE_VIEW_TRANSITIONS,
|
use_view_transition: bool = consts.DEFAULT_FRAGMENTS_USE_VIEW_TRANSITIONS,
|
||||||
|
@ -57,8 +57,7 @@ class ServerSentEventGenerator:
|
||||||
|
|
||||||
data_lines.extend(
|
data_lines.extend(
|
||||||
f"data: {consts.FRAGMENTS_DATALINE_LITERAL} {x}"
|
f"data: {consts.FRAGMENTS_DATALINE_LITERAL} {x}"
|
||||||
for fragment in fragments
|
for x in fragments.splitlines()
|
||||||
for x in fragment.splitlines()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return ServerSentEventGenerator._send(
|
return ServerSentEventGenerator._send(
|
||||||
|
|
Loading…
Reference in New Issue