runtimepy 5.13.1__tar.gz → 5.13.3__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.13.1/runtimepy.egg-info → runtimepy-5.13.3}/PKG-INFO +6 -6
- {runtimepy-5.13.1 → runtimepy-5.13.3}/README.md +2 -2
- {runtimepy-5.13.1 → runtimepy-5.13.3}/pyproject.toml +1 -1
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/__init__.py +2 -2
- runtimepy-5.13.3/runtimepy/data/404.html +7 -0
- runtimepy-5.13.3/runtimepy/data/base.yaml +19 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/server_base.yaml +1 -17
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/response.py +7 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/__init__.py +20 -1
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/__init__.py +2 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/html.py +18 -2
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/http/__init__.py +13 -7
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/requirements.txt +1 -1
- {runtimepy-5.13.1 → runtimepy-5.13.3/runtimepy.egg-info}/PKG-INFO +6 -6
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy.egg-info/SOURCES.txt +1 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy.egg-info/requires.txt +3 -3
- runtimepy-5.13.1/runtimepy/data/404.html +0 -6
- {runtimepy-5.13.1 → runtimepy-5.13.3}/LICENSE +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/__main__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/app.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/array.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/command/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/command/parser.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/command/processor.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/command/result.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/create.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/file.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/sample.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/environment/telemetry.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/event/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/event/header.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/channel/registry.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/codec/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/codec/protocol/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/codec/protocol/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/codec/protocol/json.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/codec/system/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/all.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/arbiter.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/common.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/mtu.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/server.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/task.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/tftp.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/commands/tui.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/control/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/control/env/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/control/source.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/control/step.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/browser.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/css/bootstrap_extra.css +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/css/font.css +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/css/main.css +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/dummy_load.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/factories.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/favicon.ico +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/DataConnection.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/JsonConnection.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/audio.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/App.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/ChannelTable.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/DataConnection.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/JsonConnection.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/OverlayManager.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/Plot.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/PlotDrawer.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/PlotManager.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/PlotModalManager.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/PointBuffer.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/PointManager.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/TabFilter.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/TabInterface.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/UnitSystem.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/WindowHashManager.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/classes/WorkerInterface.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/events.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/init.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/main.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/markdown_page.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/tab/env.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/tab/sound.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/third-party/webgl-debug.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/unused/pyodide.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/util.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/js/worker.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/md/Connection.md +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/md/PeriodicTask.md +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/md/RuntimeStruct.md +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/md/RuntimepyPeer.md +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/md/SinusoidTask.md +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/sample_telemetry.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/BitFields.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/Channel.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/ChannelCommand.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/ChannelRegistry.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/ClientConnectionConfig.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/ConnectionArbiterConfig.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/EnumRegistry.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/FindFile.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/PeerProcessConfig.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/RuntimeEnum.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/ServerConnectionConfig.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/StructConfig.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/TaskConfig.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/channel_controls.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/has_config.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/has_factory.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/has_markdown.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/has_name.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/schemas/has_request_flag.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/server.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/server_dev.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/css/bootstrap-icons.min.css +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/css/bootstrap.min.css +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/css/fonts/bootstrap-icons.woff +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/css/fonts/bootstrap-icons.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/js/bootstrap.bundle.min.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/js/webglplot.umd.min.js +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/1024x1024.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/128x128.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/16x16.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/1920x1920.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/24x24.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/256x256.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/32x32.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/512x512.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/png/chip-circle-bootstrap/64x64.png +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/svg/chip-circle-bootstrap.svg +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaCode-Bold.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaCode-BoldItalic.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaCode-Italic.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaCode-Regular.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaMono-Bold.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaMono-BoldItalic.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaMono-Italic.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/CascadiaMono-Regular.woff2 +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/static/woff2/README.md +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/data/tftp_server.yaml +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/dev_requirements.txt +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/entry.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/enum/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/enum/registry.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/enum/types.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mapping.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/message/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/message/handlers.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/message/interface.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/message/types.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/metrics/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/metrics/channel.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/metrics/connection.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/metrics/task.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/async_command.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/enum.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/environment.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/finalize.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/logging.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/psutil.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/regex.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/mixins/trig.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/apps/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/config/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/config/codec.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/config/util.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/factory/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/factory/connection.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/factory/task.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/housekeeping/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/imports/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/imports/util.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/info.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/result.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/struct/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/task.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/tcp/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/tcp/json.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/udp.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/arbiter/websocket.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/backoff.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/connection.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/factories/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/html/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/html/arbiter.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/html/bootstrap/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/html/bootstrap/elements.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/html/bootstrap/tabs.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/common.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/header.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/request_target.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/state.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/http/version.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/manager.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/mixin.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/mtu.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/create.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/elements.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/modal.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/settings.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/tab/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/tab/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/tab/controls.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/tab/html.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/tab/message.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/env/widgets.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/files.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/landing_page.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/placeholder.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/pyodide.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/sound.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/app/tab.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/json.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/markdown.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/struct/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/websocket/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/server/websocket/state.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/ssl.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/stream/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/stream/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/stream/json/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/stream/string.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/connection.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/create.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/protocol.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/scpi/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/telnet/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/telnet/codes.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/tcp/telnet/np_05b.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/connection.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/create.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/protocol.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/queue.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/tftp/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/tftp/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/tftp/endpoint.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/tftp/enums.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/udp/tftp/io.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/util.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/websocket/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/net/websocket/connection.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/noise/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/array/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/bool.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/byte_order.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/evaluation.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/field/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/field/fields.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/field/manager/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/field/manager/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/float.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/int.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/scaling.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/serializable/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/serializable/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/serializable/fixed.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/serializable/framer.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/serializable/prefixed.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/string.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/types/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/types/base.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/types/bool.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/types/bounds.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/types/float.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/primitives/types/int.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/py.typed +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/registry/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/registry/bool.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/registry/item.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/registry/name.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/sample/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/sample/peer.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/sample/program.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/schemas.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/struct/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/subprocess/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/subprocess/interface.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/subprocess/peer.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/subprocess/program.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/subprocess/protocol.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/asynchronous.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/basic/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/basic/manager.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/basic/periodic.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/sample.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/task/trig/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/telemetry/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/telemetry/sample.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/tui/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/tui/channels/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/tui/cursor.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/tui/mixin.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/tui/mock.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/tui/task.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/ui/__init__.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/ui/controls.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy/util.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy.egg-info/dependency_links.txt +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy.egg-info/entry_points.txt +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/runtimepy.egg-info/top_level.txt +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/setup.cfg +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/setup.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/tests/test_entry.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/tests/test_mapping.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/tests/test_resources.py +0 -0
- {runtimepy-5.13.1 → runtimepy-5.13.3}/tests/test_util.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.13.
|
|
3
|
+
Version: 5.13.3
|
|
4
4
|
Summary: A framework for implementing Python services.
|
|
5
5
|
Home-page: https://github.com/libre-embedded/runtimepy
|
|
6
6
|
Author: Libre Embedded
|
|
@@ -17,11 +17,11 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
17
17
|
Requires-Python: >=3.12
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: psutil
|
|
21
20
|
Requires-Dist: aiofiles
|
|
22
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: psutil
|
|
23
22
|
Requires-Dist: websockets
|
|
24
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: svgen>=0.7.12
|
|
24
|
+
Requires-Dist: vcorelib>=3.5.8
|
|
25
25
|
Provides-Extra: test
|
|
26
26
|
Requires-Dist: pylint; extra == "test"
|
|
27
27
|
Requires-Dist: flake8; extra == "test"
|
|
@@ -51,11 +51,11 @@ Dynamic: requires-python
|
|
|
51
51
|
=====================================
|
|
52
52
|
generator=datazen
|
|
53
53
|
version=3.2.3
|
|
54
|
-
hash=
|
|
54
|
+
hash=7dce65a7ea83c118cf5fa28ddbfd533f
|
|
55
55
|
=====================================
|
|
56
56
|
-->
|
|
57
57
|
|
|
58
|
-
# runtimepy ([5.13.
|
|
58
|
+
# runtimepy ([5.13.3](https://pypi.org/project/runtimepy/))
|
|
59
59
|
|
|
60
60
|
[](https://pypi.org/project/runtimepy/)
|
|
61
61
|

|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
=====================================
|
|
3
3
|
generator=datazen
|
|
4
4
|
version=3.2.3
|
|
5
|
-
hash=
|
|
5
|
+
hash=7dce65a7ea83c118cf5fa28ddbfd533f
|
|
6
6
|
=====================================
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
|
-
# runtimepy ([5.13.
|
|
9
|
+
# runtimepy ([5.13.3](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.2.3
|
|
4
|
-
# hash=
|
|
4
|
+
# hash=940af0fb662bf9b9e98e5ce5df85b4b2
|
|
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.
|
|
13
|
+
VERSION = "5.13.3"
|
|
14
14
|
|
|
15
15
|
# runtimepy-specific content.
|
|
16
16
|
METRICS_NAME = "metrics"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!doctype html><html lang=en><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Libre Embedded - Home
|
|
2
|
+
</title><meta http-equiv=Cache-Control content="public"><link rel=icon href=/favicon.ico><meta name=description content="Libre Embedded Engineering Technologies LLC is an engineering consultancy and product development company. This page was rendered from Markdown by runtimepy/5.13.3."><style>@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Regular.woff2)}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Bold.woff2);font-weight:700}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-BoldItalic.woff2);font-weight:700;font-style:italic}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Italic.woff2);font-style:italic}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Regular.woff2)}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Bold.woff2);font-weight:700}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-BoldItalic.woff2);font-weight:700;font-style:italic}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Italic.woff2);font-style:italic}</style><link rel=stylesheet href=/static/css/bootstrap-icons.min.css></link>
|
|
3
|
+
<link href=/static/css/bootstrap.min.css rel=stylesheet crossorigin=anonymous></link><style>html{height:100%;width:100%;position:fixed}body{height:100%;margin:0;overflow:hidden}body>:first-child{height:100%}#runtimepy{height:100%}#runtimepy-tabs{width:min-content}#runtimepy-splash{position:fixed;top:0;left:0;width:100vw;height:100vh;opacity:1}.click-plot{cursor:pointer}.stale{color:var(--bs-warning-text-emphasis)!important}.slider{min-width:8em}.toggle-value{}.window-button{border-right:var(--bs-border-width)var(--bs-border-style)var(--bs-link-hover-color)!important}:focus{outline:none}.flex-column-scroll-bodge{height:100%;flex-wrap:nowrap;overflow-y:scroll;flex-shrink:0}.scroll{overflow:scroll}.tab-content-bodge{width:100%;height:100%}.button-bodge{text-align:left}.collapsing{transition:none!important}.tab-pane.fade{transition:none!important}.modal.fade{transition:none!important}.modal-dialog{width:80%;max-width:80%}.table{margin-bottom:0;width:auto}.table-container{overflow-x:scroll;min-height:fit-content}.channel-column{overflow-y:scroll;overflow-x:hidden;flex-grow:0;flex-shrink:0;max-width:75%}.channel-value{min-width:10em}.table>tbody>tr>td{vertical-align:middle}.collapse:not(.show){display:none!important}select.form-select{width:min-content}select.form-select:hover{cursor:pointer}textarea.text-logs{min-height:10em!important;padding-top:0!important;padding-bottom:0!important;border-top:0}.vertical-divider{flex-basis:.75em;flex-grow:0;flex-shrink:0}pre{color:var(--bs-code-color)}.vertical-divider:hover{cursor:col-resize;background-color:var(--bs-highlight-bg)!important}button:hover{background-color:var(--bs-tertiary-bg)}.channel-value-input{width:6em}:root,[data-bs-theme=dark],[data-bs-theme=light]{--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";--bs-font-monospace:CascadiaMono, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}</style><div id=runtimepy class="d-flex bg-body align-items-start" data-bs-theme=dark><div class="bg-dark-subtle d-flex h-100 flex-column"><button type=button id=theme-button title="change theme button" class="btn btn-secondary rounded-0 font-monospace button-bodge text-nowrap has-tooltip" data-bs-title="Toggle light/dark." data-bs-placement=right>
|
|
4
|
+
<i class="bi bi-lightbulb"></i>
|
|
5
|
+
</button>
|
|
6
|
+
<a href="?print=true"><button type=button id=print-button title="print-view button" class="btn btn-secondary rounded-0 font-monospace button-bodge text-nowrap has-tooltip" data-bs-title="Printer-friendly view." data-bs-placement=right>
|
|
7
|
+
<i class="bi bi-printer"></i></button></a></div><div class="h-100 flex-grow-1 justify-content-between text-body d-flex overflow-y-auto flex-column"><div></div><div class="justify-content-between d-flex flex-row"><div></div><div class="text-body p-3 pb-0"><h1><a href=/><img alt=logo src=/static/png/chip-circle-bootstrap/128x128.png></a> Resource Not Found (404) <a href=/><img alt=logo src=/static/png/chip-circle-bootstrap/128x128.png></a></h1><p>(<a href=/>home</a>)</div><div></div></div><div></div></div></div><script>function worker_config(e){let t={},s="runtimepy_websocket",n="ws";location.protocol.includes("https")&&(s="runtimepy_secure_websocket",n+="s");let o=e.config.ports;for(let r in o){let i=o[r],a=e.config.websocket_hostname||window.location.hostname;i.name.includes(s)&&(i.name.includes("data")?t.data=`${n}://${a}:`+i.port:t.json=`${n}://${a}:`+i.port)}return t}let tabFilter=void 0;function bootstrap_init(){const t=document.querySelectorAll(".has-tooltip"),n=[...t].map(e=>new bootstrap.Tooltip(e));let e=document.getElementById("runtimepy-tabs");e&&(tabFilter=new TabFilter(e))}let lightMode=!1;function lightDarkClick(){lightMode=!lightMode,document.getElementById("runtimepy").setAttribute("data-bs-theme",lightMode?"light":"dark"),window.location.hash=lightMode?"#light-mode":""}window.onload=()=>{let e=document.getElementById("theme-button");if(e&&e.addEventListener("click",lightDarkClick),window.location.hash){let t=window.location.hash.slice(1).split(",");t.includes("light-mode")&&e.click()}bootstrap_init()}</script><script src=/static/js/bootstrap.bundle.min.js crossorigin=anonymous></script>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
includes:
|
|
3
|
+
- package://runtimepy/factories.yaml
|
|
4
|
+
|
|
5
|
+
init:
|
|
6
|
+
- runtimepy.net.arbiter.housekeeping.init
|
|
7
|
+
|
|
8
|
+
config:
|
|
9
|
+
# Default redirects.
|
|
10
|
+
http_redirects:
|
|
11
|
+
"/": "/index.html"
|
|
12
|
+
"/index.html": "/app.html"
|
|
13
|
+
|
|
14
|
+
# Serve these applications by default at these paths.
|
|
15
|
+
http_app_paths: ["/app.html"]
|
|
16
|
+
|
|
17
|
+
# Handles config["http_app_prefixes"].
|
|
18
|
+
config_builders:
|
|
19
|
+
- runtimepy.net.html.arbiter.web_app_paths
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
includes:
|
|
3
|
-
- package://runtimepy/
|
|
3
|
+
- package://runtimepy/base.yaml
|
|
4
4
|
|
|
5
5
|
ports:
|
|
6
6
|
- {name: runtimepy_http_server, type: tcp}
|
|
@@ -10,22 +10,6 @@ ports:
|
|
|
10
10
|
structs:
|
|
11
11
|
- {name: ui, factory: ui_state}
|
|
12
12
|
|
|
13
|
-
init:
|
|
14
|
-
- runtimepy.net.arbiter.housekeeping.init
|
|
15
|
-
|
|
16
|
-
config:
|
|
17
|
-
# Default redirects.
|
|
18
|
-
http_redirects:
|
|
19
|
-
"/": "/index.html"
|
|
20
|
-
"/index.html": "/app.html"
|
|
21
|
-
|
|
22
|
-
# Serve these applications by default at these paths.
|
|
23
|
-
http_app_paths: ["/app.html"]
|
|
24
|
-
|
|
25
|
-
# Handles config["http_app_prefixes"].
|
|
26
|
-
config_builders:
|
|
27
|
-
- runtimepy.net.html.arbiter.web_app_paths
|
|
28
|
-
|
|
29
13
|
servers:
|
|
30
14
|
- factory: runtimepy_http
|
|
31
15
|
kwargs: {port: "$runtimepy_http_server"}
|
|
@@ -88,6 +88,13 @@ class ResponseHeader(HeadersMixin):
|
|
|
88
88
|
self.headers,
|
|
89
89
|
)
|
|
90
90
|
|
|
91
|
+
def static_resource(
|
|
92
|
+
self, value: str = "public, max-age=31536000, immutable"
|
|
93
|
+
) -> None:
|
|
94
|
+
"""Set headers for static resources."""
|
|
95
|
+
|
|
96
|
+
self["Cache-Control"] = value
|
|
97
|
+
|
|
91
98
|
|
|
92
99
|
class AsyncResponse:
|
|
93
100
|
"""
|
|
@@ -55,6 +55,12 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
55
55
|
class_paths: list[Pathlike] = [Path(), package_data_dir()]
|
|
56
56
|
class_redirect_paths: dict[Path, Union[str, Path]] = {}
|
|
57
57
|
|
|
58
|
+
# Set these to control meta attributes.
|
|
59
|
+
metadata: dict[str, Optional[str]] = {
|
|
60
|
+
"title": HttpConnection.identity,
|
|
61
|
+
"description": None,
|
|
62
|
+
}
|
|
63
|
+
|
|
58
64
|
def add_path(self, path: Pathlike, front: bool = False) -> None:
|
|
59
65
|
"""Add a path."""
|
|
60
66
|
|
|
@@ -145,7 +151,16 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
145
151
|
) -> bytes:
|
|
146
152
|
"""Return rendered markdown content."""
|
|
147
153
|
|
|
148
|
-
|
|
154
|
+
meta: dict[str, str] = type(self).metadata.copy() # type: ignore
|
|
155
|
+
|
|
156
|
+
meta.setdefault("description", "")
|
|
157
|
+
meta["description"] += (
|
|
158
|
+
" This page was rendered from "
|
|
159
|
+
f"Markdown by {HttpConnection.identity}."
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
document = get_html(**meta)
|
|
163
|
+
|
|
149
164
|
with IndentedFileWriter.string() as writer:
|
|
150
165
|
writer.write_markdown(content, **kwargs)
|
|
151
166
|
full_markdown_page(
|
|
@@ -222,6 +237,8 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
222
237
|
|
|
223
238
|
self.logger.info("Serving '%s' (MIME: %s)", candidate, mime)
|
|
224
239
|
|
|
240
|
+
response.static_resource()
|
|
241
|
+
|
|
225
242
|
# Return the file data.
|
|
226
243
|
result = AsyncResponse(candidate)
|
|
227
244
|
break
|
|
@@ -306,6 +323,7 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
306
323
|
# Handle favicon (for browser clients).
|
|
307
324
|
if path.startswith("/favicon"):
|
|
308
325
|
response["Content-Type"] = "image/x-icon"
|
|
326
|
+
response.static_resource()
|
|
309
327
|
return self.favicon_data
|
|
310
328
|
|
|
311
329
|
# Try serving a file and handling redirects.
|
|
@@ -336,6 +354,7 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
336
354
|
response,
|
|
337
355
|
request_data,
|
|
338
356
|
default_app=type(self).default_app,
|
|
357
|
+
**type(self).metadata,
|
|
339
358
|
)
|
|
340
359
|
|
|
341
360
|
if populated:
|
|
@@ -24,19 +24,32 @@ HtmlApps = dict[str, HtmlApp]
|
|
|
24
24
|
def get_html(
|
|
25
25
|
title: str = HttpConnection.identity,
|
|
26
26
|
cache_control: str = "public",
|
|
27
|
+
description: str = None,
|
|
27
28
|
**kwargs,
|
|
28
29
|
) -> Html:
|
|
29
30
|
"""Get a default HTML document."""
|
|
30
31
|
|
|
31
32
|
elem = Html(title, **kwargs)
|
|
32
33
|
|
|
33
|
-
elem.children.append(
|
|
34
|
+
elem.head.children.append(
|
|
34
35
|
Element(
|
|
35
36
|
tag="meta",
|
|
36
37
|
attrib={"http-equiv": "Cache-Control", "content": cache_control},
|
|
37
38
|
)
|
|
38
39
|
)
|
|
39
40
|
|
|
41
|
+
elem.head.children.append(
|
|
42
|
+
Element(tag="link", rel="icon", href="/favicon.ico")
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
if description:
|
|
46
|
+
elem.head.children.append(
|
|
47
|
+
Element(
|
|
48
|
+
tag="meta",
|
|
49
|
+
attrib={"name": "description", "content": description},
|
|
50
|
+
)
|
|
51
|
+
)
|
|
52
|
+
|
|
40
53
|
return elem
|
|
41
54
|
|
|
42
55
|
|
|
@@ -47,6 +60,7 @@ async def html_handler(
|
|
|
47
60
|
response: ResponseHeader,
|
|
48
61
|
request_data: Optional[bytes],
|
|
49
62
|
default_app: HtmlApp = None,
|
|
63
|
+
**kwargs,
|
|
50
64
|
) -> bool:
|
|
51
65
|
"""Render an HTML document in response to an HTTP request."""
|
|
52
66
|
|
|
@@ -56,6 +70,8 @@ async def html_handler(
|
|
|
56
70
|
# Create the application.
|
|
57
71
|
app = apps.get(request.target.path, default_app)
|
|
58
72
|
if app is not None:
|
|
59
|
-
(
|
|
73
|
+
(
|
|
74
|
+
await app(get_html(**kwargs), request, response, request_data)
|
|
75
|
+
).render(stream)
|
|
60
76
|
|
|
61
77
|
return app is not None
|
|
@@ -52,10 +52,13 @@ def to_json(response: HttpResponse) -> Any:
|
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
|
|
55
|
+
IDENTITY = f"{PKG_NAME}/{VERSION}"
|
|
56
|
+
|
|
57
|
+
|
|
55
58
|
class HttpConnection(_TcpConnection):
|
|
56
59
|
"""A class implementing a basic HTTP interface."""
|
|
57
60
|
|
|
58
|
-
identity =
|
|
61
|
+
identity = IDENTITY
|
|
59
62
|
|
|
60
63
|
expecting_response: bool
|
|
61
64
|
|
|
@@ -65,6 +68,12 @@ class HttpConnection(_TcpConnection):
|
|
|
65
68
|
# runtime don't need additional initialization.
|
|
66
69
|
handlers: HttpRequestHandlers = {}
|
|
67
70
|
|
|
71
|
+
headers: dict[str, str] = {
|
|
72
|
+
"Server": PKG_NAME,
|
|
73
|
+
"X-Content-Type-Options": "nosniff",
|
|
74
|
+
"Cache-Control": "public",
|
|
75
|
+
}
|
|
76
|
+
|
|
68
77
|
def init(self) -> None:
|
|
69
78
|
"""Initialize this instance."""
|
|
70
79
|
|
|
@@ -125,12 +134,9 @@ class HttpConnection(_TcpConnection):
|
|
|
125
134
|
f"No handler for {request_header.method} requests."
|
|
126
135
|
)
|
|
127
136
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
# response["server"] = self.identity
|
|
132
|
-
response["server"] = PKG_NAME
|
|
133
|
-
response["X-Content-Type-Options"] = "nosniff"
|
|
137
|
+
for key, value in type(self).headers.items():
|
|
138
|
+
if response.get(key) is None:
|
|
139
|
+
response[key] = value
|
|
134
140
|
|
|
135
141
|
return result
|
|
136
142
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.13.
|
|
3
|
+
Version: 5.13.3
|
|
4
4
|
Summary: A framework for implementing Python services.
|
|
5
5
|
Home-page: https://github.com/libre-embedded/runtimepy
|
|
6
6
|
Author: Libre Embedded
|
|
@@ -17,11 +17,11 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
17
17
|
Requires-Python: >=3.12
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: psutil
|
|
21
20
|
Requires-Dist: aiofiles
|
|
22
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: psutil
|
|
23
22
|
Requires-Dist: websockets
|
|
24
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: svgen>=0.7.12
|
|
24
|
+
Requires-Dist: vcorelib>=3.5.8
|
|
25
25
|
Provides-Extra: test
|
|
26
26
|
Requires-Dist: pylint; extra == "test"
|
|
27
27
|
Requires-Dist: flake8; extra == "test"
|
|
@@ -51,11 +51,11 @@ Dynamic: requires-python
|
|
|
51
51
|
=====================================
|
|
52
52
|
generator=datazen
|
|
53
53
|
version=3.2.3
|
|
54
|
-
hash=
|
|
54
|
+
hash=7dce65a7ea83c118cf5fa28ddbfd533f
|
|
55
55
|
=====================================
|
|
56
56
|
-->
|
|
57
57
|
|
|
58
|
-
# runtimepy ([5.13.
|
|
58
|
+
# runtimepy ([5.13.3](https://pypi.org/project/runtimepy/))
|
|
59
59
|
|
|
60
60
|
[](https://pypi.org/project/runtimepy/)
|
|
61
61
|

|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<html lang=en><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>runtimepy/5.12.0</title><style>@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Regular.woff2)}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Bold.woff2);font-weight:700}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-BoldItalic.woff2);font-weight:700;font-style:italic}@font-face{font-family:CascadiaCode;src:url(/static/woff2/CascadiaCode-Italic.woff2);font-style:italic}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Regular.woff2)}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Bold.woff2);font-weight:700}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-BoldItalic.woff2);font-weight:700;font-style:italic}@font-face{font-family:CascadiaMono;src:url(/static/woff2/CascadiaMono-Italic.woff2);font-style:italic}</style><link rel=stylesheet href=/static/css/bootstrap-icons.min.css></link>
|
|
2
|
-
<link href=/static/css/bootstrap.min.css rel=stylesheet crossorigin=anonymous></link><style>html{height:100%;width:100%;position:fixed}body{height:100%;margin:0;overflow:hidden}body>:first-child{height:100%}#runtimepy{height:100%}#runtimepy-tabs{width:min-content}#runtimepy-splash{position:fixed;top:0;left:0;width:100vw;height:100vh;opacity:1}.click-plot{cursor:pointer}.stale{color:var(--bs-warning-text-emphasis)!important}.slider{min-width:8em}.toggle-value{}.window-button{border-right:var(--bs-border-width)var(--bs-border-style)var(--bs-link-hover-color)!important}canvas:focus{outline:none}.flex-column-scroll-bodge{height:100%;flex-wrap:nowrap;overflow-y:scroll;flex-shrink:0}.scroll{overflow:scroll}.tab-content-bodge{width:100%;height:100%}.button-bodge{text-align:left}.collapsing{transition:none!important}.tab-pane.fade{transition:none!important}.modal.fade{transition:none!important}.modal-dialog{width:80%;max-width:80%}.table{margin-bottom:0;width:auto}.table-container{overflow-x:scroll;min-height:fit-content}.channel-column{overflow-y:scroll;overflow-x:hidden;flex-grow:0;flex-shrink:0;max-width:75%}.channel-value{min-width:10em}.table>tbody>tr>td{vertical-align:middle}.collapse:not(.show){display:none!important}select.form-select{width:min-content}select.form-select:hover{cursor:pointer}textarea.text-logs{min-height:10em!important;padding-top:0!important;padding-bottom:0!important;border-top:0}.vertical-divider{flex-basis:.75em;flex-grow:0;flex-shrink:0}pre{color:var(--bs-code-color)}.vertical-divider:hover{cursor:col-resize;background-color:var(--bs-highlight-bg)!important}button:hover{background-color:var(--bs-tertiary-bg)}.channel-value-input{width:6em}:root,[data-bs-theme=dark],[data-bs-theme=light]{--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";--bs-font-monospace:CascadiaMono, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}</style><div id=runtimepy class="align-items-start d-flex bg-body" data-bs-theme=dark><div class="d-flex h-100 bg-dark-subtle flex-column"><button type=button id=theme-button class="btn btn-secondary rounded-0 font-monospace button-bodge text-nowrap has-tooltip" data-bs-title=" Toggle light/dark." data-bs-placement=right>
|
|
3
|
-
<i class="bi bi-lightbulb"></i>
|
|
4
|
-
</button>
|
|
5
|
-
<a href="?print=true"><button type=button id=print-button class="btn btn-secondary rounded-0 font-monospace button-bodge text-nowrap has-tooltip" data-bs-title="Printer-friendly view." data-bs-placement=right>
|
|
6
|
-
<i class="bi bi-printer"></i></button></a></div><div class="d-flex h-100 justify-content-between flex-grow-1 flex-column overflow-y-auto text-body"><div></div><div class="d-flex flex-row justify-content-between"><div></div><div class="text-body p-3 pb-0"><h1><a href=/><img alt=logo src=/static/png/chip-circle-bootstrap/128x128.png></a> Resource Not Found (404) <a href=/><img alt=logo src=/static/png/chip-circle-bootstrap/128x128.png></a></h1><p>(<a href=/>home</a>)</div><div></div></div><div></div></div></div><script>function worker_config(e){let t={},s="runtimepy_websocket",n="ws";location.protocol.includes("https")&&(s="runtimepy_secure_websocket",n+="s");let o=e.config.ports;for(let r in o){let i=o[r],a=e.config.websocket_hostname||window.location.hostname;i.name.includes(s)&&(i.name.includes("data")?t.data=`${n}://${a}:`+i.port:t.json=`${n}://${a}:`+i.port)}return t}let tabFilter=void 0;function bootstrap_init(){const t=document.querySelectorAll(".has-tooltip"),n=[...t].map(e=>new bootstrap.Tooltip(e));let e=document.getElementById("runtimepy-tabs");e&&(tabFilter=new TabFilter(e))}let lightMode=!1;function lightDarkClick(){lightMode=!lightMode,document.getElementById("runtimepy").setAttribute("data-bs-theme",lightMode?"light":"dark"),window.location.hash=lightMode?"#light-mode":""}window.onload=()=>{let e=document.getElementById("theme-button");if(e&&e.addEventListener("click",lightDarkClick),window.location.hash){let t=window.location.hash.slice(1).split(",");t.includes("light-mode")&&e.click()}bootstrap_init()}</script><script src=/static/js/bootstrap.bundle.min.js crossorigin=anonymous></script>
|
|
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
|
|
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
|
|
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
|