runtimepy 5.15.7__tar.gz → 5.15.8__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.15.7/runtimepy.egg-info → runtimepy-5.15.8}/PKG-INFO +6 -6
- {runtimepy-5.15.7 → runtimepy-5.15.8}/README.md +2 -2
- {runtimepy-5.15.7 → runtimepy-5.15.8}/pyproject.toml +1 -1
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/__init__.py +2 -2
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/response.py +18 -4
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/__init__.py +15 -3
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/http/__init__.py +5 -5
- {runtimepy-5.15.7 → runtimepy-5.15.8/runtimepy.egg-info}/PKG-INFO +6 -6
- {runtimepy-5.15.7 → runtimepy-5.15.8}/LICENSE +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/__main__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/app.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/array.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/command/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/command/parser.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/command/processor.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/command/result.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/create.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/file.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/sample.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/environment/telemetry.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/event/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/event/header.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/channel/registry.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/codec/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/codec/protocol/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/codec/protocol/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/codec/protocol/json.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/codec/protocol/receiver.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/codec/system/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/all.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/arbiter.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/common.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/mtu.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/server.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/task.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/tftp.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/commands/tui.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/control/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/control/env/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/control/source.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/control/step.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/404.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/base.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/browser.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/css/bootstrap_extra.css +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/css/font.css +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/css/main.css +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/dummy_load.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/factories.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/favicon.ico +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/DataConnection.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/JsonConnection.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/audio.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/App.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/ChannelTable.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/DataConnection.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/JsonConnection.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/OverlayManager.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/Plot.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/PlotDrawer.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/PlotManager.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/PlotModalManager.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/PointBuffer.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/PointManager.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/TabFilter.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/TabInterface.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/UnitSystem.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/WindowHashManager.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/classes/WorkerInterface.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/events.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/init.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/main.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/markdown_page.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/sample.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/tab/env.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/tab/sound.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/third-party/webgl-debug.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/unused/pyodide.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/util.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/js/worker.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/md/Connection.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/md/PeriodicTask.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/md/RuntimeStruct.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/md/RuntimepyPeer.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/md/SinusoidTask.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/sample_telemetry.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/BitFields.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/Button.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/Channel.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/ChannelCommand.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/ChannelRegistry.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/ClientConnectionConfig.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/ConnectionArbiterConfig.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/EnumRegistry.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/FindFile.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/PeerProcessConfig.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/RuntimeEnum.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/ServerConnectionConfig.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/StructConfig.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/TaskConfig.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/TwoTupleArray.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/channel_controls.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_buttons.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_config.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_factory.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_markdown.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_name.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_request_flag.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/schemas/has_views.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/server.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/server_base.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/server_dev.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/css/bootstrap-icons.min.css +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/css/bootstrap.min.css +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/css/fonts/bootstrap-icons.woff +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/css/fonts/bootstrap-icons.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/js/bootstrap.bundle.min.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/js/webglplot.umd.min.js +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/1024x1024.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/128x128.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/16x16.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/1920x1920.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/24x24.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/256x256.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/32x32.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/512x512.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/64x64.png +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/svg/chip-circle-bootstrap.svg +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/svg/outline-dark.svg +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/svg/outline-light.svg +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaCode-Bold.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaCode-BoldItalic.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaCode-Italic.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaCode-Regular.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaMono-Bold.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaMono-BoldItalic.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaMono-Italic.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaMono-Regular.woff2 +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/README.md +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/tftp_server.yaml +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/dev_requirements.txt +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/entry.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/enum/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/enum/registry.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/enum/types.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mapping.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/message/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/message/handlers.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/message/interface.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/message/types.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/metrics/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/metrics/channel.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/metrics/connection.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/metrics/task.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/async_command.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/enum.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/environment.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/finalize.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/logging.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/psutil.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/regex.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/mixins/trig.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/apps/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/config/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/config/codec.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/config/util.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/factory/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/factory/connection.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/factory/task.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/housekeeping/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/imports/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/imports/util.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/info.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/result.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/struct/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/task.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/tcp/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/tcp/json.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/udp.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/arbiter/websocket.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/backoff.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/connection.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/factories/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/html/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/html/arbiter.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/html/bootstrap/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/html/bootstrap/elements.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/html/bootstrap/tabs.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/common.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/header.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/request_target.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/state.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/http/version.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/manager.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/mixin.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/mtu.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/create.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/elements.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/modal.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/settings.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/tab/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/tab/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/tab/controls.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/tab/html.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/tab/message.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/env/widgets.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/files.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/landing_page.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/placeholder.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/pyodide.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/sound.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/app/tab.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/html.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/json.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/markdown.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/mux.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/struct/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/websocket/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/server/websocket/state.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/ssl.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/stream/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/stream/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/stream/json/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/stream/string.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/connection.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/create.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/protocol.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/scpi/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/telnet/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/telnet/codes.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/tcp/telnet/np_05b.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/connection.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/create.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/protocol.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/queue.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/tftp/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/tftp/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/tftp/endpoint.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/tftp/enums.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/udp/tftp/io.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/util.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/websocket/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/net/websocket/connection.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/noise/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/array/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/bool.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/byte_order.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/evaluation.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/field/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/field/fields.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/field/manager/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/field/manager/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/float.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/int.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/scaling.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/serializable/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/serializable/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/serializable/fixed.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/serializable/framer.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/serializable/prefixed.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/string.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/types/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/types/base.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/types/bool.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/types/bounds.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/types/float.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/primitives/types/int.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/py.typed +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/registry/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/registry/bool.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/registry/item.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/registry/name.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/requirements.txt +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/sample/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/sample/peer.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/sample/program.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/schemas.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/struct/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/subprocess/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/subprocess/interface.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/subprocess/peer.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/subprocess/program.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/subprocess/protocol.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/asynchronous.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/basic/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/basic/manager.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/basic/periodic.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/sample.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/task/trig/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/telemetry/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/telemetry/sample.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/tui/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/tui/channels/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/tui/cursor.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/tui/mixin.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/tui/mock.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/tui/task.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/ui/__init__.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/ui/button.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/ui/controls.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/util.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy.egg-info/SOURCES.txt +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy.egg-info/dependency_links.txt +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy.egg-info/entry_points.txt +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy.egg-info/requires.txt +3 -3
- {runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy.egg-info/top_level.txt +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/setup.cfg +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/setup.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/tests/test_entry.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/tests/test_mapping.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/tests/test_resources.py +0 -0
- {runtimepy-5.15.7 → runtimepy-5.15.8}/tests/test_util.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.15.
|
|
3
|
+
Version: 5.15.8
|
|
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:
|
|
21
|
-
Requires-Dist: svgen>=0.8.0
|
|
20
|
+
Requires-Dist: psutil
|
|
22
21
|
Requires-Dist: vcorelib>=3.6.4
|
|
22
|
+
Requires-Dist: svgen>=0.8.0
|
|
23
|
+
Requires-Dist: websockets
|
|
23
24
|
Requires-Dist: aiofiles
|
|
24
|
-
Requires-Dist: psutil
|
|
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=c354cb6439439285d244ad2bdcc32cc8
|
|
55
55
|
=====================================
|
|
56
56
|
-->
|
|
57
57
|
|
|
58
|
-
# runtimepy ([5.15.
|
|
58
|
+
# runtimepy ([5.15.8](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=c354cb6439439285d244ad2bdcc32cc8
|
|
6
6
|
=====================================
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
|
-
# runtimepy ([5.15.
|
|
9
|
+
# runtimepy ([5.15.8](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=be3f79364e840f1950bc121205810f02
|
|
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.15.
|
|
13
|
+
VERSION = "5.15.8"
|
|
14
14
|
|
|
15
15
|
# runtimepy-specific content.
|
|
16
16
|
METRICS_NAME = "metrics"
|
|
@@ -3,11 +3,12 @@ A module implementing HTTP-response interfaces.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
# built-in
|
|
6
|
+
from abc import ABC, abstractmethod
|
|
6
7
|
import http
|
|
7
8
|
from io import StringIO
|
|
8
9
|
import logging
|
|
9
10
|
from pathlib import Path
|
|
10
|
-
from typing import AsyncIterator, cast
|
|
11
|
+
from typing import AsyncIterator, Optional, cast
|
|
11
12
|
|
|
12
13
|
# third-party
|
|
13
14
|
import aiofiles
|
|
@@ -96,19 +97,32 @@ class ResponseHeader(HeadersMixin):
|
|
|
96
97
|
self["Cache-Control"] = value
|
|
97
98
|
|
|
98
99
|
|
|
99
|
-
class AsyncResponse:
|
|
100
|
+
class AsyncResponse(ABC):
|
|
101
|
+
"""Interface for asynchronous responses."""
|
|
102
|
+
|
|
103
|
+
@abstractmethod
|
|
104
|
+
async def size(self) -> Optional[int]:
|
|
105
|
+
"""Get this response's size."""
|
|
106
|
+
|
|
107
|
+
@abstractmethod
|
|
108
|
+
async def process(self) -> AsyncIterator[bytes]:
|
|
109
|
+
"""Yield chunks to write asynchronously."""
|
|
110
|
+
yield bytes() # pragma: nocover
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class AsyncFile(AsyncResponse):
|
|
100
114
|
"""
|
|
101
115
|
A class facilitating asynchronous server responses for e.g.
|
|
102
116
|
file-system files.
|
|
103
117
|
"""
|
|
104
118
|
|
|
105
|
-
def __init__(self, path: Path, chunk_size: int =
|
|
119
|
+
def __init__(self, path: Path, chunk_size: int = 4096) -> None:
|
|
106
120
|
"""Initialize this instance."""
|
|
107
121
|
|
|
108
122
|
self.path = path
|
|
109
123
|
self.chunk_size = chunk_size
|
|
110
124
|
|
|
111
|
-
async def size(self) -> int:
|
|
125
|
+
async def size(self) -> Optional[int]:
|
|
112
126
|
"""Get this response's size."""
|
|
113
127
|
return cast(int, await aiofiles.os.path.getsize(self.path))
|
|
114
128
|
|
|
@@ -8,7 +8,7 @@ from io import StringIO
|
|
|
8
8
|
import logging
|
|
9
9
|
import mimetypes
|
|
10
10
|
from pathlib import Path
|
|
11
|
-
from typing import Any, Optional, TextIO, Union
|
|
11
|
+
from typing import Any, Awaitable, Callable, Optional, TextIO, Union
|
|
12
12
|
from urllib.parse import urlencode
|
|
13
13
|
|
|
14
14
|
# third-party
|
|
@@ -22,7 +22,7 @@ from runtimepy.channel.environment.command import GLOBAL, global_command
|
|
|
22
22
|
from runtimepy.net.html import full_markdown_page
|
|
23
23
|
from runtimepy.net.http.header import RequestHeader
|
|
24
24
|
from runtimepy.net.http.request_target import PathMaybeQuery
|
|
25
|
-
from runtimepy.net.http.response import
|
|
25
|
+
from runtimepy.net.http.response import AsyncFile, ResponseHeader
|
|
26
26
|
from runtimepy.net.server.html import HtmlApp, HtmlApps, get_html, html_handler
|
|
27
27
|
from runtimepy.net.server.json import encode_json, json_handler
|
|
28
28
|
from runtimepy.net.server.markdown import DIR_FILE, markdown_for_dir
|
|
@@ -41,11 +41,17 @@ def package_data_dir() -> Path:
|
|
|
41
41
|
return result.parent
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
CustomAsync = Callable[
|
|
45
|
+
[ResponseHeader, RequestHeader, Optional[bytearray]], Awaitable[HttpResult]
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
|
|
44
49
|
class RuntimepyServerConnection(HttpConnection):
|
|
45
50
|
"""A class implementing a server-connection interface for this package."""
|
|
46
51
|
|
|
47
52
|
# Can register application methods to URL paths.
|
|
48
53
|
apps: HtmlApps = {"/mux.html": mux_app}
|
|
54
|
+
custom: dict[str, CustomAsync] = {}
|
|
49
55
|
default_app: Optional[HtmlApp] = None
|
|
50
56
|
|
|
51
57
|
# Can load additional data into this dictionary for easy HTTP access.
|
|
@@ -245,7 +251,7 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
245
251
|
response.static_resource()
|
|
246
252
|
|
|
247
253
|
# Return the file data.
|
|
248
|
-
result =
|
|
254
|
+
result = AsyncFile(candidate)
|
|
249
255
|
break
|
|
250
256
|
|
|
251
257
|
# Handle a directory as a last resort.
|
|
@@ -335,6 +341,12 @@ class RuntimepyServerConnection(HttpConnection):
|
|
|
335
341
|
response.static_resource()
|
|
336
342
|
return self.favicon_data
|
|
337
343
|
|
|
344
|
+
# Check for a custom handler.
|
|
345
|
+
if path in self.custom:
|
|
346
|
+
return await self.custom[path](
|
|
347
|
+
response, request, request_data
|
|
348
|
+
)
|
|
349
|
+
|
|
338
350
|
# Try serving a file and handling redirects.
|
|
339
351
|
for handler in [self.try_redirect, self.try_file]:
|
|
340
352
|
result = await handler(
|
|
@@ -173,13 +173,13 @@ class HttpConnection(_TcpConnection):
|
|
|
173
173
|
) -> None:
|
|
174
174
|
"""Send a request or response to a request."""
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
header["content-length"] = "0"
|
|
178
|
-
|
|
176
|
+
size = None
|
|
179
177
|
if isinstance(data, AsyncResponse):
|
|
180
|
-
|
|
178
|
+
size = await data.size()
|
|
181
179
|
elif data is not None:
|
|
182
|
-
|
|
180
|
+
size = len(data)
|
|
181
|
+
if size is not None:
|
|
182
|
+
header["content-length"] = str(size)
|
|
183
183
|
|
|
184
184
|
self.send_binary(bytes(header))
|
|
185
185
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.15.
|
|
3
|
+
Version: 5.15.8
|
|
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:
|
|
21
|
-
Requires-Dist: svgen>=0.8.0
|
|
20
|
+
Requires-Dist: psutil
|
|
22
21
|
Requires-Dist: vcorelib>=3.6.4
|
|
22
|
+
Requires-Dist: svgen>=0.8.0
|
|
23
|
+
Requires-Dist: websockets
|
|
23
24
|
Requires-Dist: aiofiles
|
|
24
|
-
Requires-Dist: psutil
|
|
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=c354cb6439439285d244ad2bdcc32cc8
|
|
55
55
|
=====================================
|
|
56
56
|
-->
|
|
57
57
|
|
|
58
|
-
# runtimepy ([5.15.
|
|
58
|
+
# runtimepy ([5.15.8](https://pypi.org/project/runtimepy/))
|
|
59
59
|
|
|
60
60
|
[](https://pypi.org/project/runtimepy/)
|
|
61
61
|

|
|
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
|
|
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
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/1024x1024.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/128x128.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/16x16.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/1920x1920.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/24x24.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/256x256.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/32x32.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/512x512.png
RENAMED
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/png/chip-circle-bootstrap/64x64.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaCode-BoldItalic.woff2
RENAMED
|
File without changes
|
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaCode-Regular.woff2
RENAMED
|
File without changes
|
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaMono-BoldItalic.woff2
RENAMED
|
File without changes
|
|
File without changes
|
{runtimepy-5.15.7 → runtimepy-5.15.8}/runtimepy/data/static/woff2/CascadiaMono-Regular.woff2
RENAMED
|
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
|