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

|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
=====================================
|
|
3
3
|
generator=datazen
|
|
4
4
|
version=3.1.4
|
|
5
|
-
hash=
|
|
5
|
+
hash=dbac0e58214ea7e4abbe7161a3c64749
|
|
6
6
|
=====================================
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
|
-
# runtimepy ([5.4.
|
|
9
|
+
# runtimepy ([5.4.4](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=5a37b52aedb2af82fb174fbea8ce0c1f
|
|
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.4.
|
|
13
|
+
VERSION = "5.4.4"
|
|
14
14
|
|
|
15
15
|
# runtimepy-specific content.
|
|
16
16
|
METRICS_NAME = "metrics"
|
|
@@ -21,6 +21,7 @@ from runtimepy.net.udp.tftp.base import (
|
|
|
21
21
|
DEFAULT_TIMEOUT_S,
|
|
22
22
|
REEMIT_PERIOD_S,
|
|
23
23
|
BaseTftpConnection,
|
|
24
|
+
TftpErrorHandler,
|
|
24
25
|
)
|
|
25
26
|
from runtimepy.net.udp.tftp.enums import DEFAULT_MODE
|
|
26
27
|
from runtimepy.util import PossiblePath, as_path
|
|
@@ -204,6 +205,7 @@ async def tftp(
|
|
|
204
205
|
connection_kwargs: dict[str, Any] = None,
|
|
205
206
|
timeout_s: float = DEFAULT_TIMEOUT_S,
|
|
206
207
|
reemit_period_s: float = REEMIT_PERIOD_S,
|
|
208
|
+
error_handler: TftpErrorHandler = None,
|
|
207
209
|
) -> AsyncIterator[TftpConnection]:
|
|
208
210
|
"""Use a tftp connection as a managed context."""
|
|
209
211
|
|
|
@@ -218,6 +220,11 @@ async def tftp(
|
|
|
218
220
|
conn = await TftpConnection.create_connection(
|
|
219
221
|
remote_addr=(addr.name, addr.port), **connection_kwargs
|
|
220
222
|
)
|
|
223
|
+
|
|
224
|
+
# Add error handlers.
|
|
225
|
+
if error_handler is not None:
|
|
226
|
+
conn.error_handlers.append(error_handler)
|
|
227
|
+
|
|
221
228
|
async with conn.process_then_disable(**process_kwargs):
|
|
222
229
|
# Set parameters.
|
|
223
230
|
conn.endpoint_timeout.value = timeout_s
|
|
@@ -235,6 +242,7 @@ async def tftp_write(
|
|
|
235
242
|
connection_kwargs: dict[str, Any] = None,
|
|
236
243
|
timeout_s: float = DEFAULT_TIMEOUT_S,
|
|
237
244
|
reemit_period_s: float = REEMIT_PERIOD_S,
|
|
245
|
+
error_handler: TftpErrorHandler = None,
|
|
238
246
|
) -> bool:
|
|
239
247
|
"""Attempt to perform a tftp write."""
|
|
240
248
|
|
|
@@ -244,6 +252,7 @@ async def tftp_write(
|
|
|
244
252
|
connection_kwargs=connection_kwargs,
|
|
245
253
|
timeout_s=timeout_s,
|
|
246
254
|
reemit_period_s=reemit_period_s,
|
|
255
|
+
error_handler=error_handler,
|
|
247
256
|
) as conn:
|
|
248
257
|
# Perform tftp interaction.
|
|
249
258
|
result = await conn.request_write(
|
|
@@ -262,6 +271,7 @@ async def tftp_read(
|
|
|
262
271
|
connection_kwargs: dict[str, Any] = None,
|
|
263
272
|
timeout_s: float = DEFAULT_TIMEOUT_S,
|
|
264
273
|
reemit_period_s: float = REEMIT_PERIOD_S,
|
|
274
|
+
error_handler: TftpErrorHandler = None,
|
|
265
275
|
) -> bool:
|
|
266
276
|
"""Attempt to perform a tftp read."""
|
|
267
277
|
|
|
@@ -271,6 +281,7 @@ async def tftp_read(
|
|
|
271
281
|
connection_kwargs=connection_kwargs,
|
|
272
282
|
timeout_s=timeout_s,
|
|
273
283
|
reemit_period_s=reemit_period_s,
|
|
284
|
+
error_handler=error_handler,
|
|
274
285
|
) as conn:
|
|
275
286
|
result = await conn.request_read(
|
|
276
287
|
destination, filename, mode=mode, addr=addr
|
|
@@ -8,7 +8,7 @@ from contextlib import AsyncExitStack
|
|
|
8
8
|
from io import BytesIO
|
|
9
9
|
import logging
|
|
10
10
|
from pathlib import Path
|
|
11
|
-
from typing import BinaryIO, Union
|
|
11
|
+
from typing import BinaryIO, Callable, Union
|
|
12
12
|
|
|
13
13
|
# third-party
|
|
14
14
|
from vcorelib.math import metrics_time_ns
|
|
@@ -30,6 +30,8 @@ from runtimepy.primitives import Double, Uint16
|
|
|
30
30
|
REEMIT_PERIOD_S = 0.20
|
|
31
31
|
DEFAULT_TIMEOUT_S = 1.0
|
|
32
32
|
|
|
33
|
+
TftpErrorHandler = Callable[[TftpErrorCode, str, tuple[str, int]], None]
|
|
34
|
+
|
|
33
35
|
|
|
34
36
|
class BaseTftpConnection(UdpConnection):
|
|
35
37
|
"""A class implementing a basic tftp interface."""
|
|
@@ -73,6 +75,7 @@ class BaseTftpConnection(UdpConnection):
|
|
|
73
75
|
|
|
74
76
|
self.error_code = Uint16(time_source=metrics_time_ns)
|
|
75
77
|
self.env.channel("error_code", self.error_code, enum="TftpErrorCode")
|
|
78
|
+
self.error_handlers: list[TftpErrorHandler] = []
|
|
76
79
|
|
|
77
80
|
self.endpoint_period = Double(value=REEMIT_PERIOD_S)
|
|
78
81
|
self.env.channel(
|
|
@@ -346,10 +349,14 @@ class BaseTftpConnection(UdpConnection):
|
|
|
346
349
|
"""Handle an error message."""
|
|
347
350
|
|
|
348
351
|
# Update underlying primitive.
|
|
349
|
-
error_code = self.error_code.from_stream(stream)
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
352
|
+
error_code = TftpErrorCode(self.error_code.from_stream(stream))
|
|
353
|
+
message = stream.read().decode()
|
|
354
|
+
|
|
355
|
+
# Call extra error handlers.
|
|
356
|
+
for handler in self.error_handlers:
|
|
357
|
+
handler(error_code, message, addr)
|
|
358
|
+
|
|
359
|
+
self.endpoint(addr).handle_error(error_code, message)
|
|
353
360
|
|
|
354
361
|
async def process_datagram(
|
|
355
362
|
self, data: bytes, addr: tuple[str, int]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: runtimepy
|
|
3
|
-
Version: 5.4.
|
|
3
|
+
Version: 5.4.4
|
|
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: svgen>=0.6.8
|
|
21
|
-
Requires-Dist: vcorelib>=3.3.1
|
|
22
|
-
Requires-Dist: psutil
|
|
23
20
|
Requires-Dist: websockets
|
|
21
|
+
Requires-Dist: psutil
|
|
22
|
+
Requires-Dist: vcorelib>=3.3.1
|
|
23
|
+
Requires-Dist: svgen>=0.6.8
|
|
24
24
|
Provides-Extra: test
|
|
25
25
|
Requires-Dist: pylint; extra == "test"
|
|
26
26
|
Requires-Dist: flake8; extra == "test"
|
|
@@ -44,11 +44,11 @@ Requires-Dist: uvloop; (sys_platform != "win32" and sys_platform != "cygwin") an
|
|
|
44
44
|
=====================================
|
|
45
45
|
generator=datazen
|
|
46
46
|
version=3.1.4
|
|
47
|
-
hash=
|
|
47
|
+
hash=dbac0e58214ea7e4abbe7161a3c64749
|
|
48
48
|
=====================================
|
|
49
49
|
-->
|
|
50
50
|
|
|
51
|
-
# runtimepy ([5.4.
|
|
51
|
+
# runtimepy ([5.4.4](https://pypi.org/project/runtimepy/))
|
|
52
52
|
|
|
53
53
|
[](https://pypi.org/project/runtimepy/)
|
|
54
54
|

|
|
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
|
|
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
|