runtimepy 5.6.4__tar.gz → 5.7.1__tar.gz
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.
- {runtimepy-5.6.4/runtimepy.egg-info → runtimepy-5.7.1}/PKG-INFO +6 -6
- {runtimepy-5.6.4 → runtimepy-5.7.1}/README.md +2 -2
- {runtimepy-5.6.4 → runtimepy-5.7.1}/pyproject.toml +1 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/__init__.py +2 -2
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/css/bootstrap_extra.css +7 -3
- runtimepy-5.7.1/runtimepy/data/css/font.css +47 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/css/main.css +0 -1
- runtimepy-5.7.1/runtimepy/data/favicon.ico +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/WindowHashManager.js +29 -7
- runtimepy-5.7.1/runtimepy/data/static/svg/chip-circle-bootstrap.svg +22 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaCode-Bold.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaCode-BoldItalic.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaCode-Italic.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaCode-Regular.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaMono-Bold.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaMono-BoldItalic.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaMono-Italic.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/CascadiaMono-Regular.woff2 +0 -0
- runtimepy-5.7.1/runtimepy/data/static/woff2/README.md +9 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/base.py +2 -3
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/bootstrap/elements.py +1 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/bootstrap/tabs.py +12 -3
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/__init__.py +5 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/modal.py +1 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/settings.py +2 -2
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/tab/html.py +7 -4
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/placeholder.py +1 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/sound.py +1 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/requirements.txt +1 -1
- {runtimepy-5.6.4 → runtimepy-5.7.1/runtimepy.egg-info}/PKG-INFO +6 -6
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy.egg-info/SOURCES.txt +11 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy.egg-info/requires.txt +3 -3
- runtimepy-5.6.4/runtimepy/data/favicon.ico +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/LICENSE +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/__main__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/app.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/array.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/command/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/command/parser.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/command/processor.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/command/result.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/create.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/file.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/sample.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/environment/telemetry.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/event/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/event/header.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/channel/registry.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/codec/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/codec/protocol/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/codec/protocol/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/codec/protocol/json.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/codec/system/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/all.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/arbiter.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/common.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/mtu.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/server.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/task.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/tftp.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/commands/tui.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/control/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/control/env/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/control/source.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/control/step.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/browser.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/dummy_load.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/factories.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/DataConnection.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/JsonConnection.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/audio.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/App.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/ChannelTable.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/DataConnection.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/JsonConnection.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/OverlayManager.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/Plot.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/PlotDrawer.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/PlotManager.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/PlotModalManager.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/PointBuffer.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/PointManager.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/TabFilter.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/TabInterface.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/UnitSystem.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/classes/WorkerInterface.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/events.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/init.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/main.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/tab/env.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/tab/sound.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/third-party/webgl-debug.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/unused/pyodide.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/util.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/js/worker.js +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/md/Connection.md +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/md/PeriodicTask.md +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/md/RuntimeStruct.md +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/md/RuntimepyPeer.md +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/md/SinusoidTask.md +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/sample_telemetry.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/BitFields.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/Channel.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/ChannelCommand.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/ChannelRegistry.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/ClientConnectionConfig.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/ConnectionArbiterConfig.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/EnumRegistry.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/FindFile.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/PeerProcessConfig.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/RuntimeEnum.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/ServerConnectionConfig.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/StructConfig.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/TaskConfig.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/channel_controls.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/has_config.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/has_factory.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/has_markdown.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/has_name.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/schemas/has_request_flag.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/server.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/server_base.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/server_dev.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/data/tftp_server.yaml +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/dev_requirements.txt +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/entry.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/enum/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/enum/registry.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/enum/types.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mapping.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/message/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/message/handlers.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/message/interface.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/message/types.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/metrics/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/metrics/channel.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/metrics/connection.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/metrics/task.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/async_command.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/enum.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/environment.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/finalize.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/logging.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/psutil.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/regex.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/mixins/trig.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/apps/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/config/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/config/codec.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/config/util.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/factory/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/factory/connection.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/factory/task.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/housekeeping/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/imports/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/imports/util.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/info.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/result.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/struct/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/task.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/tcp/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/tcp/json.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/udp.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/arbiter/websocket.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/backoff.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/connection.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/factories/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/common.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/header.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/request_target.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/response.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/state.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/http/version.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/manager.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/mixin.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/mtu.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/bootstrap/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/create.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/elements.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/tab/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/tab/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/tab/controls.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/tab/message.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/env/widgets.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/files.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/landing_page.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/pyodide.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/app/tab.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/html.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/json.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/struct/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/websocket/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/server/websocket/state.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/ssl.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/stream/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/stream/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/stream/json/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/stream/string.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/connection.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/create.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/http/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/protocol.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/scpi/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/telnet/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/telnet/codes.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/tcp/telnet/np_05b.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/connection.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/create.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/protocol.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/queue.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/tftp/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/tftp/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/tftp/endpoint.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/tftp/enums.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/udp/tftp/io.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/util.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/websocket/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/net/websocket/connection.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/noise/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/array/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/bool.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/byte_order.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/evaluation.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/field/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/field/fields.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/field/manager/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/field/manager/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/float.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/int.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/scaling.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/serializable/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/serializable/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/serializable/fixed.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/serializable/framer.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/serializable/prefixed.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/string.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/types/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/types/base.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/types/bool.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/types/bounds.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/types/float.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/primitives/types/int.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/py.typed +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/registry/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/registry/bool.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/registry/item.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/registry/name.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/sample/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/sample/peer.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/sample/program.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/schemas.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/struct/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/subprocess/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/subprocess/interface.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/subprocess/peer.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/subprocess/program.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/subprocess/protocol.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/asynchronous.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/basic/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/basic/manager.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/basic/periodic.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/sample.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/task/trig/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/telemetry/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/telemetry/sample.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/tui/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/tui/channels/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/tui/cursor.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/tui/mixin.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/tui/mock.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/tui/task.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/ui/__init__.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/ui/controls.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy/util.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy.egg-info/dependency_links.txt +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy.egg-info/entry_points.txt +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/runtimepy.egg-info/top_level.txt +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/setup.cfg +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/setup.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/tests/test_entry.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/tests/test_mapping.py +0 -0
- {runtimepy-5.6.4 → runtimepy-5.7.1}/tests/test_resources.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.7.1
|
|
4
4
|
Summary: A framework for implementing Python services.
|
|
5
5
|
Home-page: https://github.com/vkottler/runtimepy
|
|
6
6
|
Author: Vaughn Kottler
|
|
@@ -17,10 +17,10 @@ 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
|
-
Requires-Dist: svgen>=0.6.8
|
|
22
|
-
Requires-Dist: vcorelib>=3.4.1
|
|
23
20
|
Requires-Dist: psutil
|
|
21
|
+
Requires-Dist: vcorelib>=3.4.2
|
|
22
|
+
Requires-Dist: svgen>=0.6.8
|
|
23
|
+
Requires-Dist: websockets
|
|
24
24
|
Requires-Dist: aiofiles
|
|
25
25
|
Provides-Extra: test
|
|
26
26
|
Requires-Dist: pylint; extra == "test"
|
|
@@ -45,11 +45,11 @@ Requires-Dist: uvloop; (sys_platform != "win32" and sys_platform != "cygwin") an
|
|
|
45
45
|
=====================================
|
|
46
46
|
generator=datazen
|
|
47
47
|
version=3.1.4
|
|
48
|
-
hash=
|
|
48
|
+
hash=8247340c8c4e6982a54b831c311f2c0b
|
|
49
49
|
=====================================
|
|
50
50
|
-->
|
|
51
51
|
|
|
52
|
-
# runtimepy ([5.
|
|
52
|
+
# runtimepy ([5.7.1](https://pypi.org/project/runtimepy/))
|
|
53
53
|
|
|
54
54
|
[](https://pypi.org/project/runtimepy/)
|
|
55
55
|

|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
=====================================
|
|
3
3
|
generator=datazen
|
|
4
4
|
version=3.1.4
|
|
5
|
-
hash=
|
|
5
|
+
hash=8247340c8c4e6982a54b831c311f2c0b
|
|
6
6
|
=====================================
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
|
-
# runtimepy ([5.
|
|
9
|
+
# runtimepy ([5.7.1](https://pypi.org/project/runtimepy/))
|
|
10
10
|
|
|
11
11
|
[](https://pypi.org/project/runtimepy/)
|
|
12
12
|

|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# =====================================
|
|
2
2
|
# generator=datazen
|
|
3
3
|
# version=3.1.4
|
|
4
|
-
# hash=
|
|
4
|
+
# hash=405585c0fbfcc966ef193f744f21fa59
|
|
5
5
|
# =====================================
|
|
6
6
|
|
|
7
7
|
"""
|
|
@@ -10,7 +10,7 @@ Useful defaults and other package metadata.
|
|
|
10
10
|
|
|
11
11
|
DESCRIPTION = "A framework for implementing Python services."
|
|
12
12
|
PKG_NAME = "runtimepy"
|
|
13
|
-
VERSION = "5.
|
|
13
|
+
VERSION = "5.7.1"
|
|
14
14
|
|
|
15
15
|
# runtimepy-specific content.
|
|
16
16
|
METRICS_NAME = "metrics"
|
|
@@ -77,19 +77,17 @@ textarea.text-logs {
|
|
|
77
77
|
padding-bottom: 0 !important;
|
|
78
78
|
|
|
79
79
|
border-top: 0;
|
|
80
|
-
background-color: var(--bs-secondary-bg-subtle);
|
|
81
80
|
}
|
|
82
81
|
|
|
83
82
|
.vertical-divider {
|
|
84
83
|
flex-basis: 0.75em;
|
|
85
84
|
flex-grow: 0;
|
|
86
85
|
flex-shrink: 0;
|
|
87
|
-
background-color: var(--bs-secondary-bg-subtle);
|
|
88
86
|
}
|
|
89
87
|
|
|
90
88
|
.vertical-divider:hover {
|
|
91
89
|
cursor: col-resize;
|
|
92
|
-
background-color: var(--bs-
|
|
90
|
+
background-color: var(--bs-highlight-bg) !important;
|
|
93
91
|
}
|
|
94
92
|
|
|
95
93
|
button:hover {
|
|
@@ -99,3 +97,9 @@ button:hover {
|
|
|
99
97
|
.channel-value-input {
|
|
100
98
|
width: 6em;
|
|
101
99
|
}
|
|
100
|
+
|
|
101
|
+
/* Prefer 'CascadiaCode' and 'CascadiaMono' at the highest priority. */
|
|
102
|
+
:root, [data-bs-theme=dark], [data-bs-theme=light] {
|
|
103
|
+
--bs-font-sans-serif: CascadiaCode, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
104
|
+
--bs-font-monospace: CascadiaMono, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
105
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: CascadiaCode;
|
|
3
|
+
src: url("/static/woff2/CascadiaCode-Regular.woff2");
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
@font-face {
|
|
7
|
+
font-family: CascadiaCode;
|
|
8
|
+
src: url("/static/woff2/CascadiaCode-Bold.woff2");
|
|
9
|
+
font-weight: bold;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: CascadiaCode;
|
|
14
|
+
src: url("/static/woff2/CascadiaCode-BoldItalic.woff2");
|
|
15
|
+
font-weight: bold;
|
|
16
|
+
font-style: italic;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@font-face {
|
|
20
|
+
font-family: CascadiaCode;
|
|
21
|
+
src: url("/static/woff2/CascadiaCode-Italic.woff2");
|
|
22
|
+
font-style: italic;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@font-face {
|
|
26
|
+
font-family: CascadiaMono;
|
|
27
|
+
src: url("/static/woff2/CascadiaMono-Regular.woff2");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@font-face {
|
|
31
|
+
font-family: CascadiaMono;
|
|
32
|
+
src: url("/static/woff2/CascadiaMono-Bold.woff2");
|
|
33
|
+
font-weight: bold;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@font-face {
|
|
37
|
+
font-family: CascadiaMono;
|
|
38
|
+
src: url("/static/woff2/CascadiaMono-BoldItalic.woff2");
|
|
39
|
+
font-weight: bold;
|
|
40
|
+
font-style: italic;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@font-face {
|
|
44
|
+
font-family: CascadiaMono;
|
|
45
|
+
src: url("/static/woff2/CascadiaMono-Italic.woff2");
|
|
46
|
+
font-style: italic;
|
|
47
|
+
}
|
|
Binary file
|
|
@@ -7,6 +7,7 @@ class WindowHashManager {
|
|
|
7
7
|
this.tabFilter = "";
|
|
8
8
|
this.tabsShown = true;
|
|
9
9
|
this.channelsShown = true;
|
|
10
|
+
this.lightMode = false;
|
|
10
11
|
this.plotChannels = {};
|
|
11
12
|
this.filters = {};
|
|
12
13
|
this.minTxPeriod = 0.0;
|
|
@@ -17,6 +18,15 @@ class WindowHashManager {
|
|
|
17
18
|
this.update();
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
lightDarkClick(event) {
|
|
22
|
+
this.lightMode = !this.lightMode;
|
|
23
|
+
|
|
24
|
+
document.getElementById("runtimepy")
|
|
25
|
+
.setAttribute("data-bs-theme", this.lightMode ? "light" : "dark");
|
|
26
|
+
|
|
27
|
+
this.update();
|
|
28
|
+
}
|
|
29
|
+
|
|
20
30
|
channelClick(event) {
|
|
21
31
|
this.channelsShown = !this.channelsShown;
|
|
22
32
|
|
|
@@ -106,6 +116,12 @@ class WindowHashManager {
|
|
|
106
116
|
channelsButton.addEventListener("click", this.channelClick.bind(this));
|
|
107
117
|
}
|
|
108
118
|
|
|
119
|
+
/* Click handler for light/dark toggle. */
|
|
120
|
+
let lightDarkButton = document.getElementById("theme-button");
|
|
121
|
+
if (lightDarkButton) {
|
|
122
|
+
lightDarkButton.addEventListener("click", this.lightDarkClick.bind(this));
|
|
123
|
+
}
|
|
124
|
+
|
|
109
125
|
/* Click handlers for new window buttons. */
|
|
110
126
|
for (const button of document.querySelectorAll(".window-button")) {
|
|
111
127
|
button.onclick = () => {
|
|
@@ -150,13 +166,6 @@ class WindowHashManager {
|
|
|
150
166
|
}
|
|
151
167
|
}
|
|
152
168
|
|
|
153
|
-
if (split.includes("hide-tabs")) {
|
|
154
|
-
tabButton.click();
|
|
155
|
-
}
|
|
156
|
-
if (split.includes("hide-channels")) {
|
|
157
|
-
channelsButton.click();
|
|
158
|
-
}
|
|
159
|
-
|
|
160
169
|
/* Check for tab filter. */
|
|
161
170
|
for (let item of split) {
|
|
162
171
|
if (item.includes("=")) {
|
|
@@ -171,6 +180,16 @@ class WindowHashManager {
|
|
|
171
180
|
}
|
|
172
181
|
}
|
|
173
182
|
}
|
|
183
|
+
|
|
184
|
+
if (split.includes("hide-tabs")) {
|
|
185
|
+
tabButton.click();
|
|
186
|
+
}
|
|
187
|
+
if (split.includes("hide-channels")) {
|
|
188
|
+
channelsButton.click();
|
|
189
|
+
}
|
|
190
|
+
if (split.includes("light-mode")) {
|
|
191
|
+
lightDarkButton.click();
|
|
192
|
+
}
|
|
174
193
|
}
|
|
175
194
|
}
|
|
176
195
|
|
|
@@ -199,6 +218,9 @@ class WindowHashManager {
|
|
|
199
218
|
if (!this.channelsShown) {
|
|
200
219
|
hash += ",hide-channels"
|
|
201
220
|
}
|
|
221
|
+
if (this.lightMode) {
|
|
222
|
+
hash += ",light-mode";
|
|
223
|
+
}
|
|
202
224
|
|
|
203
225
|
if (this.minTxPeriod != 0.0) {
|
|
204
226
|
hash += `,min-tx-period-ms=${this.minTxPeriod}`;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<circle r="50.0" cx="50.0" cy="50.0" style="fill: #ADB5BD" />
|
|
3
|
+
<rect x="16.666666666666664" y="33.333333333333336" width="16.666666666666668" height="8.333333333333334" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
4
|
+
<rect x="16.666666666666664" y="45.833333333333336" width="16.666666666666668" height="8.333333333333334" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
5
|
+
<rect x="16.666666666666664" y="58.333333333333336" width="16.666666666666668" height="8.333333333333334" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
6
|
+
<rect x="58.33333333333333" y="16.666666666666664" width="8.333333333333334" height="16.666666666666668" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
7
|
+
<rect x="45.83333333333333" y="16.666666666666664" width="8.333333333333334" height="16.666666666666668" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
8
|
+
<rect x="33.33333333333333" y="16.666666666666664" width="8.333333333333334" height="16.666666666666668" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
9
|
+
<rect x="33.333333333333336" y="66.66666666666667" width="8.333333333333334" height="16.666666666666668" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
10
|
+
<rect x="45.833333333333336" y="66.66666666666667" width="8.333333333333334" height="16.666666666666668" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
11
|
+
<rect x="58.333333333333336" y="66.66666666666667" width="8.333333333333334" height="16.666666666666668" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
12
|
+
<rect x="66.66666666666667" y="58.33333333333333" width="16.666666666666668" height="8.333333333333334" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
13
|
+
<rect x="66.66666666666667" y="45.83333333333333" width="16.666666666666668" height="8.333333333333334" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
14
|
+
<rect x="66.66666666666667" y="33.33333333333333" width="16.666666666666668" height="8.333333333333334" rx="4.166666666666667" ry="4.166666666666667" style="fill: #495057" />
|
|
15
|
+
<rect x="25.0" y="25.0" width="50.0" height="50.0" rx="8.333333333333334" ry="8.333333333333334" style="fill: #212529" />
|
|
16
|
+
<line stroke-linecap="round" style="stroke:#DEE2E6;stroke-width:3.125" x1="31.25" y1="50.0" x2="40.625" y2="59.375" />
|
|
17
|
+
<line stroke-linecap="round" style="stroke:#DEE2E6;stroke-width:3.125" x1="31.25" y1="50.0" x2="40.625" y2="40.625" />
|
|
18
|
+
<line stroke-linecap="round" style="stroke:#DEE2E6;stroke-width:3.125" x1="68.75" y1="50.0" x2="59.375" y2="59.375" />
|
|
19
|
+
<line stroke-linecap="round" style="stroke:#DEE2E6;stroke-width:3.125" x1="68.75" y1="50.0" x2="59.375" y2="40.625" />
|
|
20
|
+
<line stroke-linecap="round" style="stroke:#DEE2E6;stroke-width:3.125" x1="45.3125" y1="61.71875" x2="50.0" y2="50.0" />
|
|
21
|
+
<line stroke-linecap="round" style="stroke:#DEE2E6;stroke-width:3.125" x1="54.6875" y1="38.28125" x2="50.0" y2="50.0" />
|
|
22
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# [Cascadia Code](https://github.com/microsoft/cascadia-code)
|
|
2
|
+
|
|
3
|
+
Assets sourced from
|
|
4
|
+
[this release](https://github.com/microsoft/cascadia-code/releases/tag/v2404.23).
|
|
5
|
+
|
|
6
|
+
See also:
|
|
7
|
+
[LICENSE](https://github.com/microsoft/cascadia-code/blob/main/LICENSE).
|
|
8
|
+
|
|
9
|
+
**Fonts are used from release as-is.**
|
|
@@ -52,10 +52,9 @@ class WebApplication:
|
|
|
52
52
|
def populate(self, document: Html, app: TabPopulater) -> None:
|
|
53
53
|
"""Populate the body element with the application."""
|
|
54
54
|
|
|
55
|
-
#
|
|
55
|
+
# CSS.
|
|
56
|
+
append_kind(document.head, "font", kind="css", tag="style")
|
|
56
57
|
add_bootstrap_css(document.head)
|
|
57
|
-
|
|
58
|
-
# Internal CSS.
|
|
59
58
|
append_kind(
|
|
60
59
|
document.head, "main", "bootstrap_extra", kind="css", tag="style"
|
|
61
60
|
)
|
|
@@ -8,8 +8,10 @@ from svgen.element.html import div
|
|
|
8
8
|
|
|
9
9
|
# internal
|
|
10
10
|
from runtimepy import PKG_NAME
|
|
11
|
+
from runtimepy.net.server.app.bootstrap import icon_str
|
|
11
12
|
from runtimepy.net.server.app.bootstrap.elements import (
|
|
12
13
|
BOOTSTRAP_BUTTON,
|
|
14
|
+
bootstrap_button,
|
|
13
15
|
collapse_button,
|
|
14
16
|
flex,
|
|
15
17
|
toggle_button,
|
|
@@ -85,16 +87,23 @@ class TabbedContent:
|
|
|
85
87
|
|
|
86
88
|
# Create application container.
|
|
87
89
|
self.container = div(parent=parent, id=name)
|
|
88
|
-
self.container.add_class("d-flex", "align-items-start")
|
|
90
|
+
self.container.add_class("d-flex", "align-items-start", "bg-body")
|
|
89
91
|
|
|
90
92
|
# Dark theme.
|
|
91
93
|
self.container["data-bs-theme"] = "dark"
|
|
92
|
-
parent.add_class("bg-dark")
|
|
93
94
|
|
|
94
95
|
# Buttons.
|
|
95
96
|
self.button_column = div(parent=self.container)
|
|
96
97
|
self.button_column.add_class(
|
|
97
|
-
"d-flex", "flex-column", "h-100", "bg-
|
|
98
|
+
"d-flex", "flex-column", "h-100", "bg-dark-subtle"
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
# Dark/light theme switch button.
|
|
102
|
+
bootstrap_button(
|
|
103
|
+
icon_str("lightbulb"),
|
|
104
|
+
tooltip=" Toggle light/dark.",
|
|
105
|
+
id="theme-button",
|
|
106
|
+
parent=self.button_column,
|
|
98
107
|
)
|
|
99
108
|
|
|
100
109
|
# Toggle tabs button.
|
|
@@ -155,4 +155,8 @@ def channel_environments(app: AppInfo, tabs: TabbedContent) -> None:
|
|
|
155
155
|
)
|
|
156
156
|
|
|
157
157
|
# Add splash screen element.
|
|
158
|
-
div(
|
|
158
|
+
div(
|
|
159
|
+
id=f"{PKG_NAME}-splash",
|
|
160
|
+
parent=tabs.container,
|
|
161
|
+
class_str="bg-success-subtle bg-gradient",
|
|
162
|
+
)
|
|
@@ -43,7 +43,7 @@ def plot_settings(tabs: TabbedContent) -> None:
|
|
|
43
43
|
div(
|
|
44
44
|
text="0 ms ('high', run at native refresh rate)",
|
|
45
45
|
parent=container,
|
|
46
|
-
class_str="text-nowrap text-
|
|
46
|
+
class_str="text-nowrap text-body-emphasis",
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
slider(
|
|
@@ -53,7 +53,7 @@ def plot_settings(tabs: TabbedContent) -> None:
|
|
|
53
53
|
div(
|
|
54
54
|
text="100 ms ('low', 10 Hz)",
|
|
55
55
|
parent=container,
|
|
56
|
-
class_str="text-nowrap text-
|
|
56
|
+
class_str="text-nowrap text-body-emphasis",
|
|
57
57
|
)
|
|
58
58
|
|
|
59
59
|
div(tag="hr", parent=modal.body)
|
|
@@ -50,6 +50,9 @@ def create_name_td(parent: Element) -> Element:
|
|
|
50
50
|
return div(tag="td", parent=parent, class_str="p-0 text-nowrap")
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
COMMANDABLE = "text-info-emphasis"
|
|
54
|
+
|
|
55
|
+
|
|
53
56
|
class ChannelEnvironmentTabHtml(ChannelEnvironmentTabControls):
|
|
54
57
|
"""A channel-environment tab interface."""
|
|
55
58
|
|
|
@@ -67,7 +70,7 @@ class ChannelEnvironmentTabHtml(ChannelEnvironmentTabControls):
|
|
|
67
70
|
|
|
68
71
|
name_elem = div(tag="span", text=name, parent=name_td)
|
|
69
72
|
if chan.commandable:
|
|
70
|
-
name_elem.add_class(
|
|
73
|
+
name_elem.add_class(COMMANDABLE)
|
|
71
74
|
|
|
72
75
|
if description:
|
|
73
76
|
set_tooltip(name_elem, description, placement="left")
|
|
@@ -105,7 +108,7 @@ class ChannelEnvironmentTabHtml(ChannelEnvironmentTabControls):
|
|
|
105
108
|
|
|
106
109
|
name_elem = div(tag="span", text=name, parent=name_td)
|
|
107
110
|
if field.commandable:
|
|
108
|
-
name_elem.add_class(
|
|
111
|
+
name_elem.add_class(COMMANDABLE)
|
|
109
112
|
|
|
110
113
|
if field.description:
|
|
111
114
|
description = field.description
|
|
@@ -238,7 +241,7 @@ class ChannelEnvironmentTabHtml(ChannelEnvironmentTabControls):
|
|
|
238
241
|
logs = div(
|
|
239
242
|
tag="textarea",
|
|
240
243
|
parent=div(parent=vert_container, class_str="form-floating"),
|
|
241
|
-
class_str=f"form-control rounded-0 {TEXT} text-logs",
|
|
244
|
+
class_str=(f"form-control rounded-0 {TEXT} text-logs"),
|
|
242
245
|
id=self.get_id("logs"),
|
|
243
246
|
title=f"Text logs for {self.name}.",
|
|
244
247
|
)
|
|
@@ -258,7 +261,7 @@ class ChannelEnvironmentTabHtml(ChannelEnvironmentTabControls):
|
|
|
258
261
|
div(
|
|
259
262
|
id=self.get_id("divider"),
|
|
260
263
|
parent=container,
|
|
261
|
-
class_str="vertical-divider border-start",
|
|
264
|
+
class_str="vertical-divider border-start bg-dark-subtle",
|
|
262
265
|
)
|
|
263
266
|
|
|
264
267
|
self._compose_plot(container)
|
|
@@ -19,7 +19,7 @@ class DummyTab(Tab):
|
|
|
19
19
|
def compose(self, parent: Element) -> None:
|
|
20
20
|
"""Compose the tab's HTML elements."""
|
|
21
21
|
|
|
22
|
-
parent.add_class("text-
|
|
22
|
+
parent.add_class("text-body")
|
|
23
23
|
|
|
24
24
|
for idx in range(10):
|
|
25
25
|
div(parent=parent, text="Hello, world! " + str(idx))
|
|
@@ -17,7 +17,7 @@ class SoundTab(Tab):
|
|
|
17
17
|
def compose(self, parent: Element) -> None:
|
|
18
18
|
"""Compose the tab's HTML elements."""
|
|
19
19
|
|
|
20
|
-
container = div(parent=parent, class_str="text-
|
|
20
|
+
container = div(parent=parent, class_str="text-body")
|
|
21
21
|
|
|
22
22
|
div(text="Hello, world! 1", parent=container)
|
|
23
23
|
div(text="Hello, world! 2", parent=container)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.7.1
|
|
4
4
|
Summary: A framework for implementing Python services.
|
|
5
5
|
Home-page: https://github.com/vkottler/runtimepy
|
|
6
6
|
Author: Vaughn Kottler
|
|
@@ -17,10 +17,10 @@ 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
|
-
Requires-Dist: svgen>=0.6.8
|
|
22
|
-
Requires-Dist: vcorelib>=3.4.1
|
|
23
20
|
Requires-Dist: psutil
|
|
21
|
+
Requires-Dist: vcorelib>=3.4.2
|
|
22
|
+
Requires-Dist: svgen>=0.6.8
|
|
23
|
+
Requires-Dist: websockets
|
|
24
24
|
Requires-Dist: aiofiles
|
|
25
25
|
Provides-Extra: test
|
|
26
26
|
Requires-Dist: pylint; extra == "test"
|
|
@@ -45,11 +45,11 @@ Requires-Dist: uvloop; (sys_platform != "win32" and sys_platform != "cygwin") an
|
|
|
45
45
|
=====================================
|
|
46
46
|
generator=datazen
|
|
47
47
|
version=3.1.4
|
|
48
|
-
hash=
|
|
48
|
+
hash=8247340c8c4e6982a54b831c311f2c0b
|
|
49
49
|
=====================================
|
|
50
50
|
-->
|
|
51
51
|
|
|
52
|
-
# runtimepy ([5.
|
|
52
|
+
# runtimepy ([5.7.1](https://pypi.org/project/runtimepy/))
|
|
53
53
|
|
|
54
54
|
[](https://pypi.org/project/runtimepy/)
|
|
55
55
|

|
|
@@ -61,6 +61,7 @@ runtimepy/data/server_base.yaml
|
|
|
61
61
|
runtimepy/data/server_dev.yaml
|
|
62
62
|
runtimepy/data/tftp_server.yaml
|
|
63
63
|
runtimepy/data/css/bootstrap_extra.css
|
|
64
|
+
runtimepy/data/css/font.css
|
|
64
65
|
runtimepy/data/css/main.css
|
|
65
66
|
runtimepy/data/js/DataConnection.js
|
|
66
67
|
runtimepy/data/js/JsonConnection.js
|
|
@@ -114,6 +115,16 @@ runtimepy/data/schemas/has_factory.yaml
|
|
|
114
115
|
runtimepy/data/schemas/has_markdown.yaml
|
|
115
116
|
runtimepy/data/schemas/has_name.yaml
|
|
116
117
|
runtimepy/data/schemas/has_request_flag.yaml
|
|
118
|
+
runtimepy/data/static/svg/chip-circle-bootstrap.svg
|
|
119
|
+
runtimepy/data/static/woff2/CascadiaCode-Bold.woff2
|
|
120
|
+
runtimepy/data/static/woff2/CascadiaCode-BoldItalic.woff2
|
|
121
|
+
runtimepy/data/static/woff2/CascadiaCode-Italic.woff2
|
|
122
|
+
runtimepy/data/static/woff2/CascadiaCode-Regular.woff2
|
|
123
|
+
runtimepy/data/static/woff2/CascadiaMono-Bold.woff2
|
|
124
|
+
runtimepy/data/static/woff2/CascadiaMono-BoldItalic.woff2
|
|
125
|
+
runtimepy/data/static/woff2/CascadiaMono-Italic.woff2
|
|
126
|
+
runtimepy/data/static/woff2/CascadiaMono-Regular.woff2
|
|
127
|
+
runtimepy/data/static/woff2/README.md
|
|
117
128
|
runtimepy/enum/__init__.py
|
|
118
129
|
runtimepy/enum/registry.py
|
|
119
130
|
runtimepy/enum/types.py
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|