runtimepy 5.6.3__py3-none-any.whl → 5.7.0__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.
Files changed (57) hide show
  1. runtimepy/__init__.py +2 -2
  2. runtimepy/channel/environment/command/__init__.py +1 -1
  3. runtimepy/channel/environment/telemetry.py +3 -1
  4. runtimepy/data/css/bootstrap_extra.css +13 -3
  5. runtimepy/data/css/main.css +4 -1
  6. runtimepy/data/dummy_load.yaml +34 -1
  7. runtimepy/data/js/classes/WindowHashManager.js +29 -7
  8. runtimepy/data/md/Connection.md +3 -0
  9. runtimepy/data/md/PeriodicTask.md +3 -0
  10. runtimepy/data/md/RuntimeStruct.md +3 -0
  11. runtimepy/data/md/RuntimepyPeer.md +3 -0
  12. runtimepy/data/md/SinusoidTask.md +20 -0
  13. runtimepy/data/schemas/ClientConnectionConfig.yaml +1 -0
  14. runtimepy/data/schemas/PeerProcessConfig.yaml +1 -0
  15. runtimepy/data/schemas/TaskConfig.yaml +1 -0
  16. runtimepy/data/schemas/has_markdown.yaml +4 -0
  17. runtimepy/mapping.py +1 -1
  18. runtimepy/message/interface.py +2 -2
  19. runtimepy/mixins/environment.py +10 -4
  20. runtimepy/mixins/logging.py +54 -1
  21. runtimepy/net/arbiter/base.py +13 -3
  22. runtimepy/net/arbiter/config/__init__.py +6 -2
  23. runtimepy/net/arbiter/imports/__init__.py +5 -5
  24. runtimepy/net/arbiter/imports/util.py +3 -1
  25. runtimepy/net/connection.py +7 -1
  26. runtimepy/net/http/common.py +5 -0
  27. runtimepy/net/http/header.py +5 -1
  28. runtimepy/net/http/response.py +1 -1
  29. runtimepy/net/server/app/__init__.py +3 -1
  30. runtimepy/net/server/app/bootstrap/elements.py +38 -1
  31. runtimepy/net/server/app/bootstrap/tabs.py +12 -3
  32. runtimepy/net/server/app/env/__init__.py +74 -20
  33. runtimepy/net/server/app/env/modal.py +1 -1
  34. runtimepy/net/server/app/env/settings.py +2 -2
  35. runtimepy/net/server/app/env/tab/base.py +5 -1
  36. runtimepy/net/server/app/env/tab/html.py +8 -8
  37. runtimepy/net/server/app/placeholder.py +1 -1
  38. runtimepy/net/server/app/sound.py +1 -1
  39. runtimepy/net/server/struct/__init__.py +1 -2
  40. runtimepy/net/server/websocket/state.py +3 -1
  41. runtimepy/net/tcp/connection.py +14 -4
  42. runtimepy/net/tcp/http/__init__.py +9 -7
  43. runtimepy/net/udp/connection.py +11 -4
  44. runtimepy/net/udp/tftp/__init__.py +1 -2
  45. runtimepy/net/websocket/connection.py +10 -5
  46. runtimepy/requirements.txt +2 -1
  47. runtimepy/struct/__init__.py +12 -2
  48. runtimepy/subprocess/interface.py +17 -4
  49. runtimepy/subprocess/peer.py +20 -6
  50. runtimepy/task/basic/periodic.py +7 -1
  51. runtimepy/util.py +0 -81
  52. {runtimepy-5.6.3.dist-info → runtimepy-5.7.0.dist-info}/METADATA +8 -7
  53. {runtimepy-5.6.3.dist-info → runtimepy-5.7.0.dist-info}/RECORD +57 -51
  54. {runtimepy-5.6.3.dist-info → runtimepy-5.7.0.dist-info}/WHEEL +1 -1
  55. {runtimepy-5.6.3.dist-info → runtimepy-5.7.0.dist-info}/LICENSE +0 -0
  56. {runtimepy-5.6.3.dist-info → runtimepy-5.7.0.dist-info}/entry_points.txt +0 -0
  57. {runtimepy-5.6.3.dist-info → runtimepy-5.7.0.dist-info}/top_level.txt +0 -0
@@ -12,11 +12,12 @@ from logging import INFO, getLogger
12
12
  from typing import Optional
13
13
 
14
14
  # third-party
15
+ from vcorelib.io import MarkdownMixin
15
16
  from vcorelib.io.types import JsonObject
16
17
  from vcorelib.math import RateLimiter
17
18
 
18
19
  # internal
19
- from runtimepy import METRICS_NAME
20
+ from runtimepy import METRICS_NAME, PKG_NAME
20
21
  from runtimepy.channel.environment import ChannelEnvironment
21
22
  from runtimepy.channel.environment.base import FieldOrChannel
22
23
  from runtimepy.channel.environment.command import register_env
@@ -34,7 +35,7 @@ PEER_SUFFIX = ".peer"
34
35
 
35
36
 
36
37
  class RuntimepyPeerInterface(
37
- JsonMessageInterface, AsyncCommandProcessingMixin
38
+ JsonMessageInterface, AsyncCommandProcessingMixin, MarkdownMixin
38
39
  ):
39
40
  """A class implementing an interface for messaging peer subprocesses."""
40
41
 
@@ -42,13 +43,25 @@ class RuntimepyPeerInterface(
42
43
 
43
44
  struct_type: type[RuntimeStruct] = SampleStruct
44
45
 
45
- def __init__(self, name: str, config: JsonObject) -> None:
46
+ # Unclear why this is/was necessary (mypy bug?)
47
+ markdown: str
48
+
49
+ def __init__(
50
+ self, name: str, config: JsonObject, markdown: str = None
51
+ ) -> None:
46
52
  """Initialize this instance."""
47
53
 
54
+ self.set_markdown(markdown=markdown, package=PKG_NAME)
55
+
48
56
  self.processor = MessageProcessor()
49
57
 
50
58
  self.basename = name
51
- self.struct = self.struct_type(self.basename + HOST_SUFFIX, config)
59
+
60
+ self.struct = self.struct_type(
61
+ self.basename + HOST_SUFFIX,
62
+ config,
63
+ markdown=config.get("config", {}).get("markdown"), # type: ignore
64
+ )
52
65
 
53
66
  self.peer: Optional[RemoteCommandProcessor] = None
54
67
  self.peer_config: Optional[JsonMessage] = None
@@ -19,13 +19,13 @@ from typing import AsyncIterator, Iterator, Type, TypeVar
19
19
  from vcorelib.io import ARBITER, DEFAULT_INCLUDES_KEY
20
20
  from vcorelib.io.file_writer import IndentedFileWriter
21
21
  from vcorelib.io.types import JsonObject
22
+ from vcorelib.names import import_str_and_item
22
23
  from vcorelib.paths.context import tempfile
23
24
 
24
25
  # internal
25
26
  from runtimepy.subprocess import spawn_exec, spawn_shell
26
27
  from runtimepy.subprocess.interface import RuntimepyPeerInterface
27
28
  from runtimepy.subprocess.protocol import RuntimepySubprocessProtocol
28
- from runtimepy.util import import_str_and_item
29
29
 
30
30
  T = TypeVar("T", bound="RuntimepyPeer")
31
31
 
@@ -38,10 +38,11 @@ class RuntimepyPeer(RuntimepyPeerInterface):
38
38
  protocol: RuntimepySubprocessProtocol,
39
39
  name: str,
40
40
  config: JsonObject,
41
+ markdown: str = None,
41
42
  ) -> None:
42
43
  """Initialize this instance."""
43
44
 
44
- super().__init__(name, config)
45
+ super().__init__(name, config, markdown=markdown)
45
46
  self.protocol = protocol
46
47
 
47
48
  # Offset message identifiers.
@@ -89,14 +90,20 @@ class RuntimepyPeer(RuntimepyPeerInterface):
89
90
  @classmethod
90
91
  @asynccontextmanager
91
92
  async def shell(
92
- cls: Type[T], name: str, config: JsonObject, cmd: str
93
+ cls: Type[T],
94
+ name: str,
95
+ config: JsonObject,
96
+ cmd: str,
97
+ markdown: str = None,
93
98
  ) -> AsyncIterator[T]:
94
99
  """Create an instance from a shell command."""
95
100
 
96
101
  async with spawn_shell(
97
102
  cmd, stdout=asyncio.Queue(), stderr=asyncio.Queue()
98
103
  ) as proto:
99
- async with cls(proto, name, config)._context() as inst:
104
+ async with cls(
105
+ proto, name, config, markdown=markdown
106
+ )._context() as inst:
100
107
  yield inst
101
108
 
102
109
  async def main(self) -> None:
@@ -105,14 +112,21 @@ class RuntimepyPeer(RuntimepyPeerInterface):
105
112
  @classmethod
106
113
  @asynccontextmanager
107
114
  async def exec(
108
- cls: Type[T], name: str, config: JsonObject, *args, **kwargs
115
+ cls: Type[T],
116
+ name: str,
117
+ config: JsonObject,
118
+ *args,
119
+ markdown: str = None,
120
+ **kwargs,
109
121
  ) -> AsyncIterator[T]:
110
122
  """Create an instance from comand-line arguments."""
111
123
 
112
124
  async with spawn_exec(
113
125
  *args, stdout=asyncio.Queue(), stderr=asyncio.Queue(), **kwargs
114
126
  ) as proto:
115
- async with cls(proto, name, config)._context() as inst:
127
+ async with cls(
128
+ proto, name, config, markdown=markdown
129
+ )._context() as inst:
116
130
  yield inst
117
131
 
118
132
  @classmethod
@@ -13,12 +13,14 @@ from logging import getLogger as _getLogger
13
13
  from typing import Optional as _Optional
14
14
 
15
15
  # third-party
16
+ from vcorelib.io import MarkdownMixin
16
17
  from vcorelib.math import DEFAULT_DEPTH as _DEFAULT_DEPTH
17
18
  from vcorelib.math import MovingAverage as _MovingAverage
18
19
  from vcorelib.math import RateTracker as _RateTracker
19
20
  from vcorelib.math import rate_str as _rate_str
20
21
 
21
22
  # internal
23
+ from runtimepy import PKG_NAME
22
24
  from runtimepy.channel.environment import ChannelEnvironment
23
25
  from runtimepy.channel.environment.command.processor import (
24
26
  ChannelCommandProcessor,
@@ -32,7 +34,9 @@ from runtimepy.primitives import Float as _Float
32
34
  from runtimepy.ui.controls import Controlslike
33
35
 
34
36
 
35
- class PeriodicTask(LoggerMixinLevelControl, ChannelEnvironmentMixin, _ABC):
37
+ class PeriodicTask(
38
+ LoggerMixinLevelControl, ChannelEnvironmentMixin, MarkdownMixin, _ABC
39
+ ):
36
40
  """A class implementing a simple periodic-task interface."""
37
41
 
38
42
  auto_finalize = True
@@ -45,10 +49,12 @@ class PeriodicTask(LoggerMixinLevelControl, ChannelEnvironmentMixin, _ABC):
45
49
  period_s: float = 1.0,
46
50
  env: ChannelEnvironment = None,
47
51
  period_controls: Controlslike = "period",
52
+ markdown: str = None,
48
53
  ) -> None:
49
54
  """Initialize this task."""
50
55
 
51
56
  self.name = name
57
+ self.set_markdown(markdown=markdown, package=PKG_NAME)
52
58
  LoggerMixinLevelControl.__init__(self, logger=_getLogger(self.name))
53
59
  self._task: _Optional[_asyncio.Task[None]] = None
54
60
 
runtimepy/util.py CHANGED
@@ -2,87 +2,6 @@
2
2
  A module implementing package utilities.
3
3
  """
4
4
 
5
- # built-in
6
- import logging
7
- import re
8
- from typing import Iterable, Iterator
9
-
10
- # third-party
11
- from vcorelib.logging import DEFAULT_TIME_FORMAT
12
- from vcorelib.paths.context import PossiblePath, as_path
13
-
14
- # Continue exporting some migrated things.
15
- __all__ = [
16
- "ListLogger",
17
- "as_path",
18
- "import_str_and_item",
19
- "name_search",
20
- "Identifier",
21
- "PossiblePath",
22
- ]
23
-
24
-
25
- class ListLogger(logging.Handler):
26
- """An interface facilitating sending log messages to browser tabs."""
27
-
28
- log_messages: list[logging.LogRecord]
29
-
30
- def drain(self) -> list[logging.LogRecord]:
31
- """Drain messages."""
32
-
33
- result = self.log_messages
34
- self.log_messages = []
35
- return result
36
-
37
- def drain_str(self) -> list[str]:
38
- """Drain formatted messages."""
39
-
40
- return [self.format(x) for x in self.drain()]
41
-
42
- def __bool__(self) -> bool:
43
- """Evaluate this instance as boolean."""
44
- return bool(self.log_messages)
45
-
46
- def emit(self, record: logging.LogRecord) -> None:
47
- """Send the log message."""
48
-
49
- self.log_messages.append(record)
50
-
51
- @staticmethod
52
- def create() -> "ListLogger":
53
- """Create an instance of this handler."""
54
-
55
- logger = ListLogger()
56
- logger.log_messages = []
57
- logger.setFormatter(logging.Formatter(DEFAULT_TIME_FORMAT))
58
-
59
- return logger
60
-
61
-
62
- def import_str_and_item(module_path: str) -> tuple[str, str]:
63
- """
64
- Treat the last entry in a '.' delimited string as the item to import from
65
- the module in the string preceding it.
66
- """
67
-
68
- parts = module_path.split(".")
69
- assert len(parts) > 1, module_path
70
-
71
- item = parts.pop()
72
- return ".".join(parts), item
73
-
74
-
75
- def name_search(
76
- names: Iterable[str], pattern: str, exact: bool = False
77
- ) -> Iterator[str]:
78
- """A simple name searching method."""
79
-
80
- compiled = re.compile(pattern)
81
- for name in names:
82
- if compiled.search(name) is not None:
83
- if not exact or name == pattern:
84
- yield name
85
-
86
5
 
87
6
  class Identifier:
88
7
  """A simple message indentifier interface."""
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: runtimepy
3
- Version: 5.6.3
3
+ Version: 5.7.0
4
4
  Summary: A framework for implementing Python services.
5
5
  Home-page: https://github.com/vkottler/runtimepy
6
6
  Author: Vaughn Kottler
7
- Author-email: Vaughn Kottler <vaughnkottler@gmail.com>
8
- Maintainer-email: Vaughn Kottler <vaughnkottler@gmail.com>
7
+ Author-email: Vaughn Kottler <vaughn@libre-embedded.com>
8
+ Maintainer-email: Vaughn Kottler <vaughn@libre-embedded.com>
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Operating System :: Microsoft :: Windows
@@ -17,10 +17,11 @@ Classifier: License :: OSI Approved :: MIT License
17
17
  Requires-Python: >=3.11
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
- Requires-Dist: websockets
21
20
  Requires-Dist: svgen >=0.6.8
22
- Requires-Dist: vcorelib >=3.3.1
21
+ Requires-Dist: aiofiles
22
+ Requires-Dist: websockets
23
23
  Requires-Dist: psutil
24
+ Requires-Dist: vcorelib >=3.4.2
24
25
  Provides-Extra: test
25
26
  Requires-Dist: pylint ; extra == 'test'
26
27
  Requires-Dist: flake8 ; extra == 'test'
@@ -44,11 +45,11 @@ Requires-Dist: uvloop ; (sys_platform != "win32" and sys_platform != "cygwin") a
44
45
  =====================================
45
46
  generator=datazen
46
47
  version=3.1.4
47
- hash=ac4d0a4097094aeb4e3f43c5f1128115
48
+ hash=aa59dcef7f11c767458b14ad97f9de59
48
49
  =====================================
49
50
  -->
50
51
 
51
- # runtimepy ([5.6.3](https://pypi.org/project/runtimepy/))
52
+ # runtimepy ([5.7.0](https://pypi.org/project/runtimepy/))
52
53
 
53
54
  [![python](https://img.shields.io/pypi/pyversions/runtimepy.svg)](https://pypi.org/project/runtimepy/)
54
55
  ![Build Status](https://github.com/vkottler/runtimepy/workflows/Python%20Package/badge.svg)
@@ -1,13 +1,13 @@
1
- runtimepy/__init__.py,sha256=RGXxRyXocs1peX3avGjMPkXONM37ZsaetO8eQ5ql4kE,390
1
+ runtimepy/__init__.py,sha256=7qUy8p7EC5Gtz7wvmBh-jnZVUn-dIOF6t1tjTI1I9v8,390
2
2
  runtimepy/__main__.py,sha256=OPAed6hggoQdw-6QAR62mqLC-rCkdDhOq0wyeS2vDRI,332
3
3
  runtimepy/app.py,sha256=sTvatbsGZ2Hdel36Si_WUbNMtg9CzsJyExr5xjIcxDE,970
4
4
  runtimepy/dev_requirements.txt,sha256=j0dh11ztJAzfaUL0iFheGjaZj9ppDzmTkclTT8YKO8c,230
5
5
  runtimepy/entry.py,sha256=3672ccoslf2h8Wg5M_SuW6SoEx0oslRoi0ngZsgjNz8,1954
6
- runtimepy/mapping.py,sha256=nb3btKUGHhuhkhPg9NnpBdh4QGQVjE0Zsu4Sl3OBIgY,5091
6
+ runtimepy/mapping.py,sha256=VQK1vzmQVvYYKI85_II37-hIEbvgL3PzNy-WI6TTo80,5091
7
7
  runtimepy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- runtimepy/requirements.txt,sha256=Wf3CEWVylp7Em7-FMWWhjyAwxNvNmh7vPRqW2KkbbXY,115
8
+ runtimepy/requirements.txt,sha256=77PnkPte9OZyyJg88wF_6su2H4XSvuN8rQH1tibLdv4,124
9
9
  runtimepy/schemas.py,sha256=NROlzVCZGLTJ9xe7d1eNIYmjzf0AOv3qHK-f6g1jGHk,678
10
- runtimepy/util.py,sha256=e9h8oJRAyzBsYt_-XIk-B8MOyaLhyZefQZozz6nsHXE,2390
10
+ runtimepy/util.py,sha256=q1Spqt8AiG8_64COh1fU5cUKl-cZhp8BK1CHw_IOya0,399
11
11
  runtimepy/channel/__init__.py,sha256=pf0RJ5g37_FVV8xoUNgzFGuIfbZEYSBA_cQlJSDTPDo,4774
12
12
  runtimepy/channel/registry.py,sha256=nk36qM_Bf6qK6AFR0plaZHR1PU7b4LZqbQ0feJqk4lc,4784
13
13
  runtimepy/channel/environment/__init__.py,sha256=0Jj8g7Y4bdDvmWtzpegB9D4milGPhsZokoYxmps5zgU,1612
@@ -16,8 +16,8 @@ runtimepy/channel/environment/base.py,sha256=tpD_6OHJv1bpfXmfFCNckoNo8ATOOi-XX66
16
16
  runtimepy/channel/environment/create.py,sha256=DHjoNmzZsARjfB_CfutXQ1PDdxPETi6yQoRMhM0FbwA,5319
17
17
  runtimepy/channel/environment/file.py,sha256=PV05KZ3-CvftbKUM8acQmawOMeGGCcMrEESEBuymykg,6949
18
18
  runtimepy/channel/environment/sample.py,sha256=Geinp2Q_qYkzYKpUJroepv6A4JWypUnAPl57jn_r_R4,4976
19
- runtimepy/channel/environment/telemetry.py,sha256=f7uD71LjDj8hNl0wcOqrmkUxchhtZz_GFrMu-c3Jvzs,5341
20
- runtimepy/channel/environment/command/__init__.py,sha256=AQvsqGhA7JPX-JYld6HPSCwiSTbWjujWVCC1TrjgB5c,8162
19
+ runtimepy/channel/environment/telemetry.py,sha256=tw7SLfWHTwCT8hXBzsIVvj546MDsVAtiqDgLZXhCKJ4,5356
20
+ runtimepy/channel/environment/command/__init__.py,sha256=mymqk5roA-7evUovXlD2dmWaprSzrPb_3ae6bA9oEZ0,8162
21
21
  runtimepy/channel/environment/command/parser.py,sha256=cMOsEsXnfFlATiWTNSxlgvc_XoICsJlcZigFJlQ47tk,1804
22
22
  runtimepy/channel/environment/command/processor.py,sha256=NiiWRdwBHOFEisjqNOW5oawprxcpR25ONNABoZpELdg,7122
23
23
  runtimepy/channel/environment/command/result.py,sha256=Ko5lK4d04Z266WuCi2sHQItbUHJFYv7qUdrDi-OVKOU,624
@@ -42,7 +42,7 @@ runtimepy/control/source.py,sha256=nW3Q2D-LcekII7K5XKbxXCcR-9jYQyvv0UypeNy1Dnw,1
42
42
  runtimepy/control/step.py,sha256=2LdZTpMHLwHLdpPVinpC2qByTs5I5LTDt-xONn_6Fc8,5491
43
43
  runtimepy/control/env/__init__.py,sha256=RHJqysY7Pv4VDs2SGk0X-qc5xp_SrQ_oxb5Deug8HEM,1339
44
44
  runtimepy/data/browser.yaml,sha256=oc5KEV1C1uAJ4MkhNo4hyVVfJtZvHelRNqzNvD313Ow,79
45
- runtimepy/data/dummy_load.yaml,sha256=hCH80guKffBtdP-BMblTjKY_XM-CMBg6kMcUT-liauk,1326
45
+ runtimepy/data/dummy_load.yaml,sha256=89BPHLaHJOgiiZSVACBA0_xmlN_N6v2fpcCauB03ZkE,1830
46
46
  runtimepy/data/factories.yaml,sha256=Jm0QPwW2BQgnj1fIFQwygsWXzT78QJuf7auVRtRzWKQ,1847
47
47
  runtimepy/data/favicon.ico,sha256=jgGIqM4gTrqPs3I6wajqKUH6Je885zy-jI7eU-Nl3AA,362870
48
48
  runtimepy/data/sample_telemetry.yaml,sha256=OpdFurkvtWJGaNl9LMlU2rKo15AaVVr-U_hoZfsbp-Y,695
@@ -50,8 +50,8 @@ runtimepy/data/server.yaml,sha256=wS_Ceiu2TpkfPurpqoYoPlgzc9DAWtUd24MW7t-S5rU,97
50
50
  runtimepy/data/server_base.yaml,sha256=QkF1xcHyMEViUhOc5rKFbFXjbRDDDHbX5LXvSQJRS58,615
51
51
  runtimepy/data/server_dev.yaml,sha256=nQsPh7LuQig3pzHfdg_aD3yOUiCj1sKKfI-WwW3hXmQ,523
52
52
  runtimepy/data/tftp_server.yaml,sha256=-bFOWJSagI-fEQQcT8k7eDMJVfSPm2XAxLVG3dqUTa4,204
53
- runtimepy/data/css/bootstrap_extra.css,sha256=w1Y527gWUnfC40zfodA8AM49BwGQVsOOYOFUX657IF4,1378
54
- runtimepy/data/css/main.css,sha256=h1iKkxg6-t7wTwNQvxDiD9mjpWrqq_FmgT6yXP7UANQ,688
53
+ runtimepy/data/css/bootstrap_extra.css,sha256=la8scLWyYDzAmQV5qh_44PAEX0RMnPP35Kcs9US63sU,1758
54
+ runtimepy/data/css/main.css,sha256=OSg5g7FYbjsHY7QNbFCTPAD1MlypeoYfaOyAfvnT2kI,680
55
55
  runtimepy/data/js/DataConnection.js,sha256=DnX8FMehjJXqmI62UMYXSvl_XdfQMzq3XUDFbLu2GgI,98
56
56
  runtimepy/data/js/JsonConnection.js,sha256=rclZrbmWc_zSs6I_JhOgxnVPFIyPMo5WdjAe8alyZ3o,2729
57
57
  runtimepy/data/js/audio.js,sha256=bLkBqbeHMiGGidfL3iXjmVoF9seK-ZeZ3kwgOrcpgk4,1092
@@ -74,28 +74,34 @@ runtimepy/data/js/classes/PointManager.js,sha256=0lr2AReLdDNrY47UuOjjCRDPMiSRsOV
74
74
  runtimepy/data/js/classes/TabFilter.js,sha256=FygFFmWa1IRQ0DZlrOscdrkz6W3VkG87nHSud56kCzI,1185
75
75
  runtimepy/data/js/classes/TabInterface.js,sha256=i-dM_FpRsp_hJEh6CdtSY8hiTS6-KZx5dkOYXD_crh0,12084
76
76
  runtimepy/data/js/classes/UnitSystem.js,sha256=ys4OMabq47k_VvJpRItm82U0IequDvx3ysRJOQzDf94,906
77
- runtimepy/data/js/classes/WindowHashManager.js,sha256=aQcdUwWw-Ksp-ffywOlv64TdG6R-UrP4DVGLrGIi8QQ,6253
77
+ runtimepy/data/js/classes/WindowHashManager.js,sha256=tHGhjfPJCF253L98Dh8gKlxUDY2ct0G7RudoQXXxB-E,6860
78
78
  runtimepy/data/js/classes/WorkerInterface.js,sha256=qARPW1CUDnHnVFVE8UjqKq74QfommCLwd6nisy-ayOw,346
79
79
  runtimepy/data/js/tab/env.js,sha256=MB79l3XyXKELWRqHcTnwWHiwdiceLHl1N_s-mS33pyU,22
80
80
  runtimepy/data/js/tab/sound.js,sha256=RSKp0AXM_zGOCsUvIT-BUjIzOE7Dp5NHiQG4fy7gBgY,1388
81
81
  runtimepy/data/js/third-party/webgl-debug.js,sha256=AtuSr5qje8a37S2ZE-ztA01QuGlGj9bGl-ntjlaqJIo,36878
82
82
  runtimepy/data/js/unused/pyodide.js,sha256=tcfj4XcYdhJSwFdHOQYpIHu0_2fGwkpWp4ZFyIRmmrc,864
83
+ runtimepy/data/md/Connection.md,sha256=gh0KIQObDOYEf_DNxLcb8U3ngjTYtmsgOhvz_O7QYpY,32
84
+ runtimepy/data/md/PeriodicTask.md,sha256=86JR4cgUjhFU3pnUXvKIETVEtmskYtQ_Ip-v2_10G0Y,35
85
+ runtimepy/data/md/RuntimeStruct.md,sha256=-hci789w_x098IxoSv0-euP8GQ2B1CF-hxPuRpljEng,39
86
+ runtimepy/data/md/RuntimepyPeer.md,sha256=ayjL1V5KXRBEixG0vfxIajY2Dt_H5SYaZGSscXHSL4E,34
87
+ runtimepy/data/md/SinusoidTask.md,sha256=nTGmZXFv-r9d-ZgmmIHr6SKSp-K-nzJW-B6NKhg7FQ8,739
83
88
  runtimepy/data/schemas/BitFields.yaml,sha256=7tSjEQNo_j458EN16AgIaC5eh0iEXCj9EbVTVc-EkB8,926
84
89
  runtimepy/data/schemas/Channel.yaml,sha256=9OQ3mOtPOlcWugvObpWKoAdFW0WvR9mSEzfdDYNf3fc,471
85
90
  runtimepy/data/schemas/ChannelCommand.yaml,sha256=h7-n5WjNwWgteZ8U5YpaBRncR_Uiqaa_wVfuTWQFrTY,257
86
91
  runtimepy/data/schemas/ChannelRegistry.yaml,sha256=f51YngVC8zDM3HwRMicKBOyoqjJ9EWsx3GWD0EkHCZk,136
87
- runtimepy/data/schemas/ClientConnectionConfig.yaml,sha256=3wuOKxAmOgrEG4oGXGPy5-hDcU__SlQGBscYI7qXZsw,165
92
+ runtimepy/data/schemas/ClientConnectionConfig.yaml,sha256=XUWkOiCOw175harOsDRV3TXJja-EAKnipYDQFf_XC4Q,187
88
93
  runtimepy/data/schemas/ConnectionArbiterConfig.yaml,sha256=WorY7ttxvQA78TYuFoNHw41hc9johxvgO72dusfLSqE,2133
89
94
  runtimepy/data/schemas/EnumRegistry.yaml,sha256=BfLzEEUsHj6Fg_0JyGmgbNJ7F-auuLs5tAhJjSc86uU,145
90
95
  runtimepy/data/schemas/FindFile.yaml,sha256=dSPCDQy4FQZLMgOjtbR0-o2sZECvN_tvGa3LXNd1-wc,934
91
- runtimepy/data/schemas/PeerProcessConfig.yaml,sha256=-TtVvN_GxEDpglSuZRm6rzqJzvwsg9ySmgwBC0fO3ZE,135
96
+ runtimepy/data/schemas/PeerProcessConfig.yaml,sha256=_YhfZ2pHCSKqcZqz8-sQAVrwPzFwfb5toWN893yNqPA,157
92
97
  runtimepy/data/schemas/RuntimeEnum.yaml,sha256=dN5bl-lOB3JON02aP1fdwAEP7BhadG1wo_oX6rn5d80,430
93
98
  runtimepy/data/schemas/ServerConnectionConfig.yaml,sha256=IqQUQB09xte4zGmM6Qi0-LTm5McDkoi2tehYspoNUXM,100
94
99
  runtimepy/data/schemas/StructConfig.yaml,sha256=3ifuvRIVzS4AzYu0c9k6TdmLs0PG5y8u25aRphTrxg0,73
95
- runtimepy/data/schemas/TaskConfig.yaml,sha256=yZW1MD7Q_CWfmMjZ8azXsZwNPKfjx69b5ejxecpWNLs,205
100
+ runtimepy/data/schemas/TaskConfig.yaml,sha256=iE2RBKsn6TrK6UXFGBlWpsrUl0TeRzwlymJ06SUfNKw,227
96
101
  runtimepy/data/schemas/channel_controls.yaml,sha256=pctqV_fVjRpiKdaPqET7yyoGVYQuUtOYc1FLQUdfVJc,546
97
102
  runtimepy/data/schemas/has_config.yaml,sha256=SMuJ9tNWw06tsgDasz4myO9SSmMZGep9xBfJ89GJnqA,80
98
103
  runtimepy/data/schemas/has_factory.yaml,sha256=Rsqrxv3HEBUGxPcW6CN7QczA96iBSgtm0gQNsu2P8LM,106
104
+ runtimepy/data/schemas/has_markdown.yaml,sha256=LbnEQRYdk5KR_GgORmIOiKjRg-HF8wjhA6Dm6pSm66I,45
99
105
  runtimepy/data/schemas/has_name.yaml,sha256=I5YkXxQRYz-1-49CLyr_NA2zVqyRVQCAsb-icTaxF4s,59
100
106
  runtimepy/data/schemas/has_request_flag.yaml,sha256=S8ly8g-FkrCVNEizbXPqicg_hpGvtH7WRsHZAA4uhjc,66
101
107
  runtimepy/enum/__init__.py,sha256=WIBMOaogauR1u7mK-I4Z5BZUoWANU7alIlrz82QdCmY,5820
@@ -103,7 +109,7 @@ runtimepy/enum/registry.py,sha256=EU7oUejI60kzrhdtzgWpnFYP8h4CFLy_fxvGTwq1Uvc,26
103
109
  runtimepy/enum/types.py,sha256=uQYGvaAJVm5tUdwxn_SLHkTZHJpEf7364rTSL27necA,1027
104
110
  runtimepy/message/__init__.py,sha256=nF9yU9SV0PxZyHt12oh6o_ENR374x1Yn72UambecGlY,2668
105
111
  runtimepy/message/handlers.py,sha256=He9NC7MCkaV2clKc8dTSZ_T8N2l3ATjaTFzBr9n1T34,3775
106
- runtimepy/message/interface.py,sha256=2M8YDoF3urPD6FyAede7TDSr644M0kPdDFp1fZQznG4,11285
112
+ runtimepy/message/interface.py,sha256=vg25Uhp7wrDFH6v2iRKUBwnCBpjc3JAFjwdu3KArrLo,11285
107
113
  runtimepy/message/types.py,sha256=vajDWKW32LjzsfH-eVCCxZTWVctj4_-tjanhnmCqUis,821
108
114
  runtimepy/metrics/__init__.py,sha256=NyCcB3uJi4_tGMO-ws3CPRA2fph2t15BcW_tfeV9fmc,357
109
115
  runtimepy/metrics/channel.py,sha256=YhALSMCPHESkYChzzE6dNAxKX-2bPqVe02E_qeyyt5E,2526
@@ -112,15 +118,15 @@ runtimepy/metrics/task.py,sha256=g6CttQ3SS217DJRBFnj-rDUq6uauZdMOcTOjHgSEfWo,191
112
118
  runtimepy/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
119
  runtimepy/mixins/async_command.py,sha256=xZNTiRo_Kd_aJboLuFOkQyMo2Exn8ENyY483zdwrxx0,1991
114
120
  runtimepy/mixins/enum.py,sha256=IRQR7HD8J0uoxahNqb-2LIVokFn1L2-v9I5HNFw9W3s,719
115
- runtimepy/mixins/environment.py,sha256=BSosX0P0GRNakOT9aqBfpJj7i83wJ9p73qk1Pyn3jhk,3863
121
+ runtimepy/mixins/environment.py,sha256=9dCy7nL1bwZY1p-ez8zy9Jf_6zhljSESnK9F9wtRdl8,3955
116
122
  runtimepy/mixins/finalize.py,sha256=pTziopAWXpyRy0I8UZZv8Q4abXvnH3RrQ_dt3Rh6xlA,1600
117
- runtimepy/mixins/logging.py,sha256=aKNqjgCioA5HMn_jxrgZwrFE-QeXV_GaWjGuFflfln8,1487
123
+ runtimepy/mixins/logging.py,sha256=BS1TQTNED-e1rsexhuT2kubP_44MwpiiTSqCgzw56mQ,2991
118
124
  runtimepy/mixins/psutil.py,sha256=RlaEuyQ0-TynQxYW85vFuPiQ-29T2mIrsdaDlpSJq1s,1293
119
125
  runtimepy/mixins/regex.py,sha256=kpCj4iL1akzt_KPPiMP-bTbuLBHOpkUrwbCTRe8HSUk,1061
120
126
  runtimepy/mixins/trig.py,sha256=vkDd9Rh8080gvH5OHkSYmjImVgM_ZZ7RzMxsczKx5N4,2480
121
127
  runtimepy/net/__init__.py,sha256=leveti9T8P1WAg3M5N7yT_JrUZRCXwZQ8mRsxel-KP4,830
122
128
  runtimepy/net/backoff.py,sha256=IVloxQd-gEK62gFAlU2aOwgTEXhsNUTBfS16eiOqKG8,1080
123
- runtimepy/net/connection.py,sha256=lg_cAGCAdOqlh3SURJRKDQ5TraiG7sV0kA_U2FGGNVU,12678
129
+ runtimepy/net/connection.py,sha256=rTzF4dUcZHryx0PUOMcp0IOeQyxWYNfGvsN18kKlIEg,12861
124
130
  runtimepy/net/manager.py,sha256=-M-ZSB9izay6HK1ytTayAYnSHYAz34dcwxaiNhC4lWg,4264
125
131
  runtimepy/net/mixin.py,sha256=5UlFK4lRrJ2O0nEUuScGbkYd4-El-RruFt_UcQR0aic,3039
126
132
  runtimepy/net/mtu.py,sha256=XnLXAFMsDxK1Lj5v_zgWaBrC3lNqf81DkbDc6hpMdmI,3495
@@ -128,85 +134,85 @@ runtimepy/net/ssl.py,sha256=dj9uECPKDT5k-5vlR5I3Z7Go3WWZhbaJ9nb0rC3kJvg,854
128
134
  runtimepy/net/util.py,sha256=P6WnH4n8JJkEfKwepk1eP4lGPxWjqcFv0yL3N0mvtrw,5897
129
135
  runtimepy/net/apps/__init__.py,sha256=vjo7e19QXtJwe6V6B-QGvYiJveYobnYIfpkKZrnS17w,710
130
136
  runtimepy/net/arbiter/__init__.py,sha256=ptKF995rYKvkm4Mya92vA5QEDqcFq5NRD0IYGqZ6_do,740
131
- runtimepy/net/arbiter/base.py,sha256=WRbgavarmOx6caQJmfI03udZvNC7o298uOhOsN-lp2E,14658
137
+ runtimepy/net/arbiter/base.py,sha256=w5IFDRU1Zfw7sfg0eS8hj7_Ip6bHHYQ4S212Ic-Kj-c,14817
132
138
  runtimepy/net/arbiter/info.py,sha256=zipdr928xN32Dt5Wl_FbCCAf7XOlT0GGNHiv4DoI-94,9216
133
139
  runtimepy/net/arbiter/result.py,sha256=PHZo5qj4SI08ZeWPFk_8OZ1umI6L0dp5nJpjjS8QUpM,2871
134
140
  runtimepy/net/arbiter/task.py,sha256=APcc5QioAG8uueIzxJU-vktIn8Ys3yJd_CFlRWb6Ieo,795
135
141
  runtimepy/net/arbiter/udp.py,sha256=-ecHJs-utcsiTfr5wSb73hUUuYFBeRVT_D1znYp5q6A,893
136
142
  runtimepy/net/arbiter/websocket.py,sha256=vYTDA7sXMUTTqW3i1zTWUdaxGKxfrQcQoVSYZtmCvfQ,1524
137
- runtimepy/net/arbiter/config/__init__.py,sha256=gvNuaDoK0RwEFcLvsHv2rRfICPXf0O5rEXf9ZAhmWu0,8324
143
+ runtimepy/net/arbiter/config/__init__.py,sha256=uQ7EkeMBknKyZg95n_W31qypBkOxrUeYKSF8hugRXPQ,8432
138
144
  runtimepy/net/arbiter/config/codec.py,sha256=TQj8UXEb1EvhiCqRdyq5BkeubMytEZAs9B4E5ZYsEuY,2511
139
145
  runtimepy/net/arbiter/config/util.py,sha256=MezLSil5mEwioI5kxDOZa9y118st1_t0El8DYH6hFU8,1254
140
146
  runtimepy/net/arbiter/factory/__init__.py,sha256=jC1szUYucH4Us3jbb0mhFgnklHlorya5DYGGw2pqfe4,334
141
147
  runtimepy/net/arbiter/factory/connection.py,sha256=uSwnvIWGJcDd2ReK-s9lBx-NcRQ1JH_7VbwkWjE_8zA,3690
142
148
  runtimepy/net/arbiter/factory/task.py,sha256=YLRv55dnDBqHRJIMYgO9_uHi0AW-8hwa0n3wHAKyncE,1959
143
149
  runtimepy/net/arbiter/housekeeping/__init__.py,sha256=80vzksjCq1r9Kx25YeOKTJu2Ek98YWvEEgrsC8qzwJM,3469
144
- runtimepy/net/arbiter/imports/__init__.py,sha256=bjBks4kdwtkzG8VjsNJewaxT4_QFhVGoZf3g6R3lrEs,4980
145
- runtimepy/net/arbiter/imports/util.py,sha256=Ltp5hHUkahiUfIWeeK9fTtGQb9UMJZPqfKquuibCV9M,1071
150
+ runtimepy/net/arbiter/imports/__init__.py,sha256=W7-kkM4B_zDU42Fyh0PmZL56JslS_0_qzvpzUhN6aDU,5041
151
+ runtimepy/net/arbiter/imports/util.py,sha256=d4_HnWphrkiHQkyYr8YJKvSSTXoMf3Bct_7jg_CS9eA,1086
146
152
  runtimepy/net/arbiter/struct/__init__.py,sha256=Vr38dp2X0PZOrAbjKsZ9xZdQ1j3z92s4QuvRtYYVuNI,5990
147
153
  runtimepy/net/arbiter/tcp/__init__.py,sha256=djNm8il_9aLNpGsYResJlFmyIqx9XNLqVay-mYnn8vc,1530
148
154
  runtimepy/net/arbiter/tcp/json.py,sha256=W9a_OwBPmIoB2XZf4iuAIWQhMg2qA9xejBhGBdNCPnI,742
149
155
  runtimepy/net/factories/__init__.py,sha256=rPdBVpgzzQYF61w6efQrEre71yMPHd6kanBpMdOX-3c,4672
150
156
  runtimepy/net/http/__init__.py,sha256=4TjFp_ajAVcOEvwtjlF6mG-9EbEePqFZht-QpWIKVBo,1802
151
- runtimepy/net/http/common.py,sha256=F-F7-L1F_-Lm5MTZWjvZ1H4e1LAUybC_JZGcQyy2FgY,2050
152
- runtimepy/net/http/header.py,sha256=vF74KUCh6y8T9eHMs1CQxKbA_1Q6Su8UpcYki090CQw,2258
157
+ runtimepy/net/http/common.py,sha256=vpoO6XwRmrZmTkCu9bkI0HnyaD8MWTpV7ADesCNrfRE,2237
158
+ runtimepy/net/http/header.py,sha256=AECSdvhBA9_5Pg3UdwMzsmBpcqgsiPj41xnIGPm5g5E,2296
153
159
  runtimepy/net/http/request_target.py,sha256=EE1aI5VSARw1h93jyZvP56ir5O5fjd6orYK-1FM4JNk,1550
154
- runtimepy/net/http/response.py,sha256=n1GboebWeZ7Va49Uhw13MPmc_RQ2vJCvLGpm8nZdZ7c,2311
160
+ runtimepy/net/http/response.py,sha256=Sup8W_A0ADNzR5olKrQsVNhsQXUwPOD-eJLlLOgYlAY,2316
155
161
  runtimepy/net/http/state.py,sha256=qCMN8aWfCRfU9XP-cIhSOo2RqfljTjbQRCflfcy2bfY,1626
156
162
  runtimepy/net/http/version.py,sha256=mp6rgIM7-VUVKLCA0Uw96CmBkL0ET860lDVVEewpZ7w,1098
157
163
  runtimepy/net/server/__init__.py,sha256=J8gl91YltD8Wo2y_AXxaL6liLu3vomfzUz_nULa3e2Y,6707
158
164
  runtimepy/net/server/html.py,sha256=xaTGelH4zrwndQjU24kbCj9Yqu-D17nK5682P6xa-cU,1153
159
165
  runtimepy/net/server/json.py,sha256=RfNt7Gr4-X5DMinV1UeiWneTIJr0LO6BXo2GzE0C1PQ,2475
160
- runtimepy/net/server/app/__init__.py,sha256=1qAC9E0mqD73sGXb3CBI7ync2WFfZkMNcYlfLSs5wt8,2775
166
+ runtimepy/net/server/app/__init__.py,sha256=9gJr7qcrJNQacAOFpZLfpnzDHzx5KXBMNxPlqQsdwB8,2790
161
167
  runtimepy/net/server/app/base.py,sha256=1KMEWCwDf3cducIbt9geTmMwugAMKl1Io2sBr6qajo4,2082
162
168
  runtimepy/net/server/app/create.py,sha256=N-g3kClBsG4pKOd9tx947rOq4sfgrH_FAMVfZacjhFA,2666
163
169
  runtimepy/net/server/app/elements.py,sha256=KJt9vWqkfvniJMiLOJN467JjPPrEqJYZXmDuY1JoY1g,455
164
170
  runtimepy/net/server/app/files.py,sha256=cIHtIKqaVvOpKL62LSVV1IRPdUyCRCg0TOX9XXmYtqk,2903
165
171
  runtimepy/net/server/app/landing_page.py,sha256=axHGBeFpjn5PF87Yb-n73me4T9b8pQxBq4zlvX5CjmE,663
166
- runtimepy/net/server/app/placeholder.py,sha256=aHHc0--agRq0o5CH-Yzvp_IBihaKmiioGpwm7qu-ysk,1677
172
+ runtimepy/net/server/app/placeholder.py,sha256=BDoLtS6dSeLUKnUZe3z17pb5QuXH4C69RqoIpEc3BIY,1676
167
173
  runtimepy/net/server/app/pyodide.py,sha256=dGJ4u78eYQLU9RQbZEWgzv-7jVIwblS6VopibG82tA4,478
168
- runtimepy/net/server/app/sound.py,sha256=iJTnisXgQb9bEzd0gpCuUdkvoWrC5plEhw04c3R6PrM,844
174
+ runtimepy/net/server/app/sound.py,sha256=AeJoa6XKNH3TYvH6OuAwyfJ5CyFJJwCF0zeCMIpLZAE,843
169
175
  runtimepy/net/server/app/tab.py,sha256=4jhw71LfA23wT9m9e5ofw-tBXYW6xky4tGwBOlGkOz8,2296
170
176
  runtimepy/net/server/app/bootstrap/__init__.py,sha256=ONhwx68piWjsrf88FMpda84TWSPqgi-RZCBuWCci_ak,1444
171
- runtimepy/net/server/app/bootstrap/elements.py,sha256=uWcaVBdrZvL3_lNZ13jQ8AfPN5f4ye2feZN7ve9RDnM,3868
172
- runtimepy/net/server/app/bootstrap/tabs.py,sha256=0azUtpZTO80kjhX65vU3K5QfW4cwK7ULixqM8O0FgKQ,4179
173
- runtimepy/net/server/app/env/__init__.py,sha256=SbIgHg2KQtYSLnHPQzHpK1--f_xl4ASFVTvx-TIDJUw,3202
174
- runtimepy/net/server/app/env/modal.py,sha256=d7OdKVJfKXnOkDhvsF2nQmTfZHAdx70wbK2pGlNIcEQ,1753
175
- runtimepy/net/server/app/env/settings.py,sha256=M0DFibrzF5-nxZ8udKMi503HiTZWIQNbzj_t9TWi34Q,1720
177
+ runtimepy/net/server/app/bootstrap/elements.py,sha256=otKJGuDVNL7yKpjdIWZw2fyiHVlRRBPdgRrtRjOW2Vk,4781
178
+ runtimepy/net/server/app/bootstrap/tabs.py,sha256=tZHgG2NuJ0kJjNjgzCaQEwpuZywRy0bAEEtgg6aB-ns,4454
179
+ runtimepy/net/server/app/env/__init__.py,sha256=WGgIaB4cg4zqEc7BOCvtNEDvCYWyg48tVHtJiDdHtMA,4172
180
+ runtimepy/net/server/app/env/modal.py,sha256=BDnZvdzwu68ZCKISab39n8_NRWh518IyrtObovhC8SU,1752
181
+ runtimepy/net/server/app/env/settings.py,sha256=2dJydD7_lH8ae43d0D28BNRCbUjmmq4gc-eEAqDOCHs,1732
176
182
  runtimepy/net/server/app/env/widgets.py,sha256=_kNvPl7MXnZOiwTjoZiU2hfuSjkLnRUrORTVDi3w7Ls,5312
177
183
  runtimepy/net/server/app/env/tab/__init__.py,sha256=stTVKyHljLQWnnhxkWPwa7bLdZtjhiMFbiVFgbiYaFI,647
178
- runtimepy/net/server/app/env/tab/base.py,sha256=uBPpOeqI23341IezIQcGvJciPfIL2P5qQgbZ74aQRKA,991
184
+ runtimepy/net/server/app/env/tab/base.py,sha256=hcHKG17JGkAZjl2X7jT1B72RHTeMdocTakFyNKkmWJc,1168
179
185
  runtimepy/net/server/app/env/tab/controls.py,sha256=hsj0ErywfmOBtJLNZbMISrE2ELJEfyXvtCtpsDbXlYg,4734
180
- runtimepy/net/server/app/env/tab/html.py,sha256=ElAPyLczQVdja8OTWibKwgB0Sn2dklrc7DkqBFZxm_Y,7262
186
+ runtimepy/net/server/app/env/tab/html.py,sha256=lF7W9zwxgQa-EPWi49lcM0gNVrlXcGjjUjdFyt_BtMQ,7099
181
187
  runtimepy/net/server/app/env/tab/message.py,sha256=OWqBIPRt6UdBHAXk5qvFMbnWuvIRUyp34lzb3GYdthk,4070
182
- runtimepy/net/server/struct/__init__.py,sha256=z62I3DUoOnCcTv7C9X3sA6jOBKAJQ_uSOQA7uNwyrj4,1839
188
+ runtimepy/net/server/struct/__init__.py,sha256=Zy37r6RLFu-XFr9vsanSq80BJdS6Dxr7zmPzQbb7xdw,1799
183
189
  runtimepy/net/server/websocket/__init__.py,sha256=KISuFUUQwNn6BXo8BOMuMOXyoVqE7Jw94ZQiSCQuRQE,5279
184
- runtimepy/net/server/websocket/state.py,sha256=VvMs58So6nix7b5FJ2Lh-IHrm4_sztKWErJgiTil6Yw,1775
190
+ runtimepy/net/server/websocket/state.py,sha256=4Onb3adxY9w2LoZRRBoyxSWHNcDGYAJtK7TyIFbt_ho,1792
185
191
  runtimepy/net/stream/__init__.py,sha256=1PNossiE4S9wtPYoiHVsTeAMJFGtiak5vbsoIkVGfZs,2374
186
192
  runtimepy/net/stream/base.py,sha256=Dg4vcR0n9y2122AyJ-9W-jkEhNla_EHO-DqJJPfGD4k,1977
187
193
  runtimepy/net/stream/string.py,sha256=61mgserU3p6j5gAcK0oe0aKqL6vDh7NtgJvbPoiAUPM,784
188
194
  runtimepy/net/stream/json/__init__.py,sha256=h--C_9moW92TC_e097FRRXcg8GJ6VVbMLXl1cICknys,2508
189
195
  runtimepy/net/tcp/__init__.py,sha256=OOWohegpoioSTf8M7uDf-4EV1IDungz7-U19L_2yW4I,250
190
- runtimepy/net/tcp/connection.py,sha256=izRVSZdrhkk21javEdJB2BJTPmiz87_DoUE1oKuQq58,8596
196
+ runtimepy/net/tcp/connection.py,sha256=0FN606SQ_wTb8hQuk17-TQ5iYTkWWcNfkDsUS3SA1fc,8743
191
197
  runtimepy/net/tcp/create.py,sha256=zZsRs5KYpO3bNGh-DwEOEzjUDE4ixj-UBHYgZ0GvC7c,2013
192
198
  runtimepy/net/tcp/protocol.py,sha256=vEnIX3gUX2nrw9ofT_e4KYU4VY2k4WP0WuOi4eE_OOQ,1444
193
- runtimepy/net/tcp/http/__init__.py,sha256=4ZSM-Fma_IpmDNCu5E3VBPRrVxOjPgKpKAS3uag1V1I,5657
199
+ runtimepy/net/tcp/http/__init__.py,sha256=BY9ra0s7kHkoUQKIRHsnk3_WDWP7Xt-FxQ90K14nwkc,5737
194
200
  runtimepy/net/tcp/scpi/__init__.py,sha256=aWCWQfdeyfoU9bpOnOtyIQbT1swl4ergXLFn5kXAH28,2105
195
201
  runtimepy/net/tcp/telnet/__init__.py,sha256=96eJFb301I3H2ivDtGMQtDDw09Xm5NRvM9VEC-wjt8c,4768
196
202
  runtimepy/net/tcp/telnet/codes.py,sha256=1-yyRe-Kz_W7d6B0P3iT1AaSNR3_Twmn-MUjKCJJknY,3518
197
203
  runtimepy/net/tcp/telnet/np_05b.py,sha256=ikp9txHBvbRps6x7C1FsEf9i6vmUtGvei4Nukc_gypI,7887
198
204
  runtimepy/net/udp/__init__.py,sha256=VSgle6cO2RXfwaei66wMIJ4zSB4gzpoadSSbmLfCzBw,357
199
- runtimepy/net/udp/connection.py,sha256=l5WemgLN5ZrMbk-eEqoxqIk-3SYf1l55onDRqcJ5rvY,7896
205
+ runtimepy/net/udp/connection.py,sha256=Hv963vT9tnglpZOx4KUFuoYTBPr2rltYQWDNV3mhYpE,8018
200
206
  runtimepy/net/udp/create.py,sha256=84YDfJbNBlN0ZwbNpvh6Dl7ZPecbZfmpjMNRRWcvJDk,2005
201
207
  runtimepy/net/udp/protocol.py,sha256=A4SRHf0CgcL2zDs1nAsGDqz0RxKBy1soS8wtNdS5S0I,1492
202
208
  runtimepy/net/udp/queue.py,sha256=DF-YscxQcGbGCYQLz_l_BMaSRfraZOhRwieTEdXLMds,637
203
- runtimepy/net/udp/tftp/__init__.py,sha256=PSOvBQlAzD98l8Qf7g5pm83UlSc3kAsqSSs_79t1B4o,9038
209
+ runtimepy/net/udp/tftp/__init__.py,sha256=zDVUga9ZApSnvx8UwlmVUY4SDFrAHafcD9oe5Q7fGOw,9012
204
210
  runtimepy/net/udp/tftp/base.py,sha256=vpvjitZSD8R4Ggb21eIMNIsm54VkLBbBrTgMo65gn2o,11331
205
211
  runtimepy/net/udp/tftp/endpoint.py,sha256=so60LdPTG66N5tdhHhiX7j_TBHvNOTi4JIgLcg2MAm0,10890
206
212
  runtimepy/net/udp/tftp/enums.py,sha256=06juMd__pJZsyL8zO8p3hRucnOratt1qtz9zcxzMg4s,1579
207
213
  runtimepy/net/udp/tftp/io.py,sha256=w6cnUt-T-Ma6Vg8BWoRbsNnIWUv0HTY4am6bcLWxNJs,803
208
214
  runtimepy/net/websocket/__init__.py,sha256=YjSmoxiigmsI_hcQw6nueX7bxhrRGerEERnPvgLVEVA,313
209
- runtimepy/net/websocket/connection.py,sha256=r0HUB5PFhWGmmarwEKp10CJ449Iwj6WOcMyhjzgCMpU,8996
215
+ runtimepy/net/websocket/connection.py,sha256=c1p6UvWraxd4hrsO5NG5_n1jcG57BoiqWiJbhGguQeU,9134
210
216
  runtimepy/noise/__init__.py,sha256=EJM7h3t_z74wwrn6FAFQwYE2yUcOZQ1K1IQqOb8Z0AI,384
211
217
  runtimepy/primitives/__init__.py,sha256=nwWJH1e0KN2NsVwQ3wvRtUpl9s9Ap8Q32NNZLGol0wU,2323
212
218
  runtimepy/primitives/base.py,sha256=BaGPUTeVMnLnTPcpjqnS2lzPN74Pe5C0XaQdgrTfW7A,9185
@@ -240,10 +246,10 @@ runtimepy/registry/name.py,sha256=uhxmijwUT7x59NUYV4hJSe7VcnAbLDUSAPaKhR6K-N0,17
240
246
  runtimepy/sample/__init__.py,sha256=N7P6hnCLF9NwnkZA1h3LzS2C334SAO48Fu8adHxWGLU,56
241
247
  runtimepy/sample/peer.py,sha256=eZJ3gmvGsXoRTIyJ_OS71T5C1kjysbvd-yF5xZxedLU,1621
242
248
  runtimepy/sample/program.py,sha256=wL61OzdUYrHw3Lwbd_eeBDARhS7kEzdifGOFgXvvnAw,2332
243
- runtimepy/struct/__init__.py,sha256=4ON704uXqB6xOMKlJlwAmbwWFQ0BPmpCRNOy6N6F6ok,1216
249
+ runtimepy/struct/__init__.py,sha256=B8sb-fEXX_rpJ8ssVuZiZPmnmxKdY1DY6I_mrGm578c,1491
244
250
  runtimepy/subprocess/__init__.py,sha256=VAiFrYFCU5ETDVoWLOVlrrSsx2d1_atYXUfXYc_OQ9g,4059
245
- runtimepy/subprocess/interface.py,sha256=RAGL7oL5LS8LrKt2-Yb_QZF6VAYci2JROb_mmvm50tk,7683
246
- runtimepy/subprocess/peer.py,sha256=zR8RnplkDFElZ1JiKFLcLYbemf91IaYgGedQJmbGLYg,7328
251
+ runtimepy/subprocess/interface.py,sha256=rYvM8bgoT4DoXGhdidhfmivzrjmEoW6788DjGyAdJ7A,8032
252
+ runtimepy/subprocess/peer.py,sha256=oYw9a0yKAPR18Z6Qt24wYWrcX6EizeQE64htL11WVjM,7593
247
253
  runtimepy/subprocess/program.py,sha256=UCKBvmIc4JBitWju396TA8Kxdtmko50jQ3ZPKNkBjFk,6792
248
254
  runtimepy/subprocess/protocol.py,sha256=LYApfKZ0bXSj6gGqLdNfwsIjxWyrdVUK0Jz_qc33ik4,3074
249
255
  runtimepy/task/__init__.py,sha256=euLIxCl1wve-4Nr2DUms8XrWT3liUV-ihQiQlZ21nqI,348
@@ -251,7 +257,7 @@ runtimepy/task/asynchronous.py,sha256=w4oEUCyj-X-zDVFmlsAtRL1gv66ahQ78QKE0GmLGT1
251
257
  runtimepy/task/sample.py,sha256=_nbLj5Julwa1NJC_-WQsotI0890G-TlOWftVHEKiclY,2735
252
258
  runtimepy/task/basic/__init__.py,sha256=NryfG-JmSyqYh-TNG4NLO6-9RJFVq5vn1Z-oV3qTVvg,243
253
259
  runtimepy/task/basic/manager.py,sha256=2P_swKZlFfPHCmX6sMVGSYePWEZOqXp9B4YPyRYSGCo,1858
254
- runtimepy/task/basic/periodic.py,sha256=fIo7Tbe61iQe9Sa7DLrbGPNK52cix1A-eTZSjRuWRco,6640
260
+ runtimepy/task/basic/periodic.py,sha256=6tOaWSvF5lqdNpz8Csb4a51XyvSc5yzurqkk0eW1ERQ,6823
255
261
  runtimepy/task/trig/__init__.py,sha256=GuGNb9eLuFEnl3nAI7Mi_eS5mqJ4MOhEy2Wfv48RFic,785
256
262
  runtimepy/telemetry/__init__.py,sha256=G_JLZsp0EZMGaxSQ12fYgbG2kN4QkvVG4lExV_TzEhM,268
257
263
  runtimepy/telemetry/sample.py,sha256=1weoGSH-yGg-fOaLysZAsO3dSTM6yAXX3XdulAiqi3s,3216
@@ -263,9 +269,9 @@ runtimepy/tui/task.py,sha256=nUZo9fuOC-k1Wpqdzkv9v1tQirCI28fZVgcC13Ijvus,1093
263
269
  runtimepy/tui/channels/__init__.py,sha256=evDaiIn-YS9uGhdo8ZGtP9VK1ek6sr_P1nJ9JuSET0o,4536
264
270
  runtimepy/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
265
271
  runtimepy/ui/controls.py,sha256=yvT7h3thbYaitsakcIAJ90EwKzJ4b-jnc6p3UuVf_XE,1241
266
- runtimepy-5.6.3.dist-info/LICENSE,sha256=okYCYhGsx_BlzvFdoNVBVpw_Cfb4SOqHA_VAARml4Hc,1071
267
- runtimepy-5.6.3.dist-info/METADATA,sha256=cZ87OKKquOsHU1bBIX28HfPeA-s3QkxyNI2ThQf3WnU,9280
268
- runtimepy-5.6.3.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
269
- runtimepy-5.6.3.dist-info/entry_points.txt,sha256=-btVBkYv7ybcopqZ_pRky-bEzu3vhbaG3W3Z7ERBiFE,51
270
- runtimepy-5.6.3.dist-info/top_level.txt,sha256=0jPmh6yqHyyJJDwEID-LpQly-9kQ3WRMjH7Lix8peLg,10
271
- runtimepy-5.6.3.dist-info/RECORD,,
272
+ runtimepy-5.7.0.dist-info/LICENSE,sha256=okYCYhGsx_BlzvFdoNVBVpw_Cfb4SOqHA_VAARml4Hc,1071
273
+ runtimepy-5.7.0.dist-info/METADATA,sha256=0gGgcxU2Cl_nKgBLgU8Y2RLsE39Iy3Bo_gycEbfvjgc,9308
274
+ runtimepy-5.7.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
275
+ runtimepy-5.7.0.dist-info/entry_points.txt,sha256=-btVBkYv7ybcopqZ_pRky-bEzu3vhbaG3W3Z7ERBiFE,51
276
+ runtimepy-5.7.0.dist-info/top_level.txt,sha256=0jPmh6yqHyyJJDwEID-LpQly-9kQ3WRMjH7Lix8peLg,10
277
+ runtimepy-5.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5