echotools 2.4.7__tar.gz → 2.4.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.
- {echotools-2.4.7 → echotools-2.4.8}/PKG-INFO +2 -2
- {echotools-2.4.7 → echotools-2.4.8}/README.md +1 -1
- {echotools-2.4.7 → echotools-2.4.8}/pyproject.toml +18 -1
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/shared/__init__.py +11 -12
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/shared/win_com.py +6 -1
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools.egg-info/PKG-INFO +2 -2
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_plat_capture.py +95 -2
- {echotools-2.4.7 → echotools-2.4.8}/setup.cfg +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/cache/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/cache/list_cache.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/cache/memory_cache.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/base.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/center.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/center_notify.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/center_template.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/loader.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/config/merge.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/errors/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/errors/base.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/errors/classify.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/errors/common.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/errors/http.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/ids/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/ids/generator.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/io/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/io/io_utils.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/io/printstream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/logger/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/logger/manager.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/retry/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/base/retry/retry.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/candidate.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/dispatcher.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/proxy_selector.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/race.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/selector.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/dispatch/usage.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/parsers/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/parsers/stream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/parsers/stream_delta.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/parsers/stream_feed.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/parsers/stream_final.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/prompt/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/prompt/behavior_blocks.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/prompt/history.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/prompt/history_format.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/prompt/inject.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/prompt/prompt_helpers.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/invoke.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/params.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/regex.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/strip.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_schema/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_schema/mangled.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_schema/validate.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_stream/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_stream/body.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_stream/snap.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/core.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/filter.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/hist.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/hold.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/parse.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/comment.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/fakemarkup.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/invoke.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/tools.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/values.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/registry.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/coercion.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/entml_format.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/history_markup.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/loop_detect.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/normalization.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/shared/schema_render.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/tool_id.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/keys.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/lifecycle/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/lifecycle/manager.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/lifecycle/updater.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/lifecycle/updater_pull.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/process/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/process/port.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/protocol/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/protocol/base.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/conpty.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/local/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/local/core.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/local/proc.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/local/unix.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/local/win.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/sanitize.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/session/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/session/base.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/session/client.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/ssh.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/terminal/tmux.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/charmap.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/spinner.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/ui.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/mixins/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/mixins/uibase.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/mixins/uicmds.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/mixins/uiinteract.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/mixins/uioutput.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/mixins/uistream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/ui_console.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/ui_io.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/ui_log.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/ui_platform.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/ui_text.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uicore/ui_types.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_bridge.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_countdown.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_layout.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_misc.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_panel.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_table.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uilayout/ui_tree.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_box.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_editor.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_progress.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_richcli.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_select.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_stream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/console/uiwidgets/ui_themes.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/events/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/events/bus.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/events/event.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/spinner/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/spinner/spinner.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/spinner/spinner_color.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/tracing/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/tracing/context.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/tracing/span.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/tracing/tracer.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/translate.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/watcher/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/watcher/file_watcher.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/application.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/broker.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/app.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/filezone.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/sendbutton.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/sortablelist.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/textinput.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/inputbox.css +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/inputbox.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/style.css +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/input_box/voicegif.js +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/middleware.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/stats.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/media/web/utils.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_monitor/api.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_monitor/config.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_monitor/linux.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_monitor/mac.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_monitor/types.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_monitor/win.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/api.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/config.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/linux.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/mac.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/win.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/win_wasapi.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/audio_record/win_winmm.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/api.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/config.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/linux.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/mac.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/win.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/win_dxgi.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/screenshot/win_gdi.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/shared/bmp.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/shared/pcm.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/shared/platform.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/capture/shared/wav.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/files/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/files/file_util.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/network/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/network/http_utils.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/plugin/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/plugin/base.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/plugin/discovery.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/plugin/registry.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/plugin/registry_ops.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/proxy/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/proxy/manager.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/sdk/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/sdk/facade.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/sdk/runtime.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/plat/sdk/scheduler.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools/version.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools.egg-info/SOURCES.txt +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools.egg-info/dependency_links.txt +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools.egg-info/requires.txt +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/echotools.egg-info/top_level.txt +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/_check_parity.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/bench_import.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/conftest.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/fixtures/__init__.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/fixtures/entml_golden.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/fixtures/entml_golden_update.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/fixtures/simulated_fake_history_markup_responses.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/fixtures/simulated_fault_thinking_responses.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/fixtures/simulated_llm_tool_responses.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_adversarial_stream_splits.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_cache_retry.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_completion.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_config.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_config_extended.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_console.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_coverage_core.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_dispatch.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_dispatch_extended.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_dispatch_race.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_agent_output_formats.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_bare_invoke_format.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_batch_stream_comprehensive.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_fake_structure_markup.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_golden.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_invoke_known_tool_gate.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_parser_comprehensive.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_protocol.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_stream_json.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_stream_json_exhaustive.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_thinking_history.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_thinking_parse.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_tool_parse_leak.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_tool_pipeline.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_entml_tools.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_errors.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_errors_common.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_events.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_events_event.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_facade.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fake_history_markup_batch.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fake_history_markup_invoke_preserve.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fake_history_markup_reply_protect.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fake_history_markup_stream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fault_thinking_close_batch.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fault_thinking_close_stream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fncall.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_fncall_stream_thinking.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_history_markup_filter.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_ids.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_imports.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_io.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_keys.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_lifecycle.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_logger.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_merge.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_model_branch_matrix.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_multiline_parameter_comprehensive.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_plugin.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_printstream.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_protocols.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_proxy.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_proxy_selector.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_runtime.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_scheduler.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_schema_validate.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_simulated_llm_tool_parse.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_stream_partial_json_parity.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_stream_realtime_parse.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_tool_id.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_tracing.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_ui_bridge.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_usage.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_web.py +0 -0
- {echotools-2.4.7 → echotools-2.4.8}/src/tests/test_web_broker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: echotools
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.8
|
|
4
4
|
Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
|
|
5
5
|
Home-page: https://github.com/nichengfuben/echotools
|
|
6
6
|
Author: nichengfuben
|
|
@@ -58,7 +58,7 @@ Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
|
58
58
|
|
|
59
59
|
通用基础设施 SDK:配置、日志、事件、调度、插件、调用链,以及 **entml** LLM 工具调用协议与终端 Console UI。
|
|
60
60
|
|
|
61
|
-
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.
|
|
61
|
+
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.8**(详见 [CHANGELOG](docs/CHANGELOG.md))。
|
|
62
62
|
|
|
63
63
|
## 安装
|
|
64
64
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "echotools"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.8"
|
|
8
8
|
description = "通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -142,6 +142,23 @@ omit = [
|
|
|
142
142
|
"*/web/application.py",
|
|
143
143
|
"*/web/middleware.py",
|
|
144
144
|
"*/web/utils.py",
|
|
145
|
+
"*/plat/capture/shared/win_com.py",
|
|
146
|
+
"*/plat/capture/audio_monitor/api.py",
|
|
147
|
+
"*/plat/capture/audio_record/api.py",
|
|
148
|
+
"*/plat/capture/screenshot/api.py",
|
|
149
|
+
"*/plat/capture/audio_monitor/win.py",
|
|
150
|
+
"*/plat/capture/audio_monitor/mac.py",
|
|
151
|
+
"*/plat/capture/audio_monitor/linux.py",
|
|
152
|
+
"*/plat/capture/audio_record/win.py",
|
|
153
|
+
"*/plat/capture/audio_record/win_wasapi.py",
|
|
154
|
+
"*/plat/capture/audio_record/win_winmm.py",
|
|
155
|
+
"*/plat/capture/audio_record/mac.py",
|
|
156
|
+
"*/plat/capture/audio_record/linux.py",
|
|
157
|
+
"*/plat/capture/screenshot/win.py",
|
|
158
|
+
"*/plat/capture/screenshot/win_dxgi.py",
|
|
159
|
+
"*/plat/capture/screenshot/win_gdi.py",
|
|
160
|
+
"*/plat/capture/screenshot/mac.py",
|
|
161
|
+
"*/plat/capture/screenshot/linux.py",
|
|
145
162
|
]
|
|
146
163
|
|
|
147
164
|
[tool.coverage.report]
|
|
@@ -10,29 +10,28 @@ from echotools.plat.capture.shared.platform import (
|
|
|
10
10
|
load_lib,
|
|
11
11
|
)
|
|
12
12
|
from echotools.plat.capture.shared.wav import write_wav
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
|
|
14
|
+
if IS_WINDOWS:
|
|
15
|
+
from echotools.plat.capture.shared.win_com import (
|
|
16
|
+
GUID,
|
|
17
|
+
com_call,
|
|
18
|
+
com_qi,
|
|
19
|
+
com_release,
|
|
20
|
+
make_guid,
|
|
21
|
+
)
|
|
20
22
|
|
|
21
23
|
__all__ = [
|
|
22
|
-
"GUID",
|
|
23
24
|
"IS_LINUX",
|
|
24
25
|
"IS_MACOS",
|
|
25
26
|
"IS_WINDOWS",
|
|
26
27
|
"_OS",
|
|
27
28
|
"clamp",
|
|
28
|
-
"com_call",
|
|
29
|
-
"com_qi",
|
|
30
|
-
"com_release",
|
|
31
29
|
"load_lib",
|
|
32
|
-
"make_guid",
|
|
33
30
|
"mix_streams",
|
|
34
31
|
"resample_pcm",
|
|
35
32
|
"rgba_to_bgra",
|
|
36
33
|
"write_bmp",
|
|
37
34
|
"write_wav",
|
|
38
35
|
]
|
|
36
|
+
if IS_WINDOWS:
|
|
37
|
+
__all__ += ["GUID", "com_call", "com_qi", "com_release", "make_guid"]
|
|
@@ -3,8 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
"""Windows COM vtable helpers shared by capture backends."""
|
|
4
4
|
|
|
5
5
|
from ctypes import (
|
|
6
|
+
CFUNCTYPE,
|
|
6
7
|
POINTER,
|
|
7
|
-
WINFUNCTYPE,
|
|
8
8
|
Structure,
|
|
9
9
|
byref,
|
|
10
10
|
c_int,
|
|
@@ -16,6 +16,11 @@ from ctypes import (
|
|
|
16
16
|
sizeof,
|
|
17
17
|
)
|
|
18
18
|
|
|
19
|
+
try:
|
|
20
|
+
from ctypes import WINFUNCTYPE
|
|
21
|
+
except ImportError: # non-Windows: coverage import only
|
|
22
|
+
WINFUNCTYPE = CFUNCTYPE # type: ignore[misc,assignment]
|
|
23
|
+
|
|
19
24
|
HRESULT = c_int
|
|
20
25
|
PTR_SIZE = sizeof(c_void_p)
|
|
21
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: echotools
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.8
|
|
4
4
|
Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
|
|
5
5
|
Home-page: https://github.com/nichengfuben/echotools
|
|
6
6
|
Author: nichengfuben
|
|
@@ -58,7 +58,7 @@ Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
|
58
58
|
|
|
59
59
|
通用基础设施 SDK:配置、日志、事件、调度、插件、调用链,以及 **entml** LLM 工具调用协议与终端 Console UI。
|
|
60
60
|
|
|
61
|
-
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.
|
|
61
|
+
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.8**(详见 [CHANGELOG](docs/CHANGELOG.md))。
|
|
62
62
|
|
|
63
63
|
## 安装
|
|
64
64
|
|
|
@@ -12,8 +12,15 @@ from echotools.plat.capture import (
|
|
|
12
12
|
ScreenshotConfig,
|
|
13
13
|
get_playing_processes,
|
|
14
14
|
)
|
|
15
|
-
from echotools.plat.capture.shared.bmp import write_bmp
|
|
16
|
-
from echotools.plat.capture.shared.pcm import mix_streams
|
|
15
|
+
from echotools.plat.capture.shared.bmp import rgba_to_bgra, write_bmp
|
|
16
|
+
from echotools.plat.capture.shared.pcm import clamp, mix_streams, resample_pcm
|
|
17
|
+
from echotools.plat.capture.shared.platform import (
|
|
18
|
+
_OS,
|
|
19
|
+
IS_LINUX,
|
|
20
|
+
IS_MACOS,
|
|
21
|
+
IS_WINDOWS,
|
|
22
|
+
load_lib,
|
|
23
|
+
)
|
|
17
24
|
from echotools.plat.capture.shared.wav import write_wav
|
|
18
25
|
|
|
19
26
|
|
|
@@ -33,11 +40,96 @@ def test_audio_process_unknown_volume() -> None:
|
|
|
33
40
|
assert "vol=" not in repr(ap)
|
|
34
41
|
|
|
35
42
|
|
|
43
|
+
def test_audio_process_eq_not_implemented() -> None:
|
|
44
|
+
assert AudioProcess(1, "x").__eq__(None) is NotImplemented
|
|
45
|
+
assert AudioProcess(0, "anon") == AudioProcess(0, "anon")
|
|
46
|
+
assert "anon" in repr(AudioProcess(0, "anon"))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_mix_streams_empty() -> None:
|
|
50
|
+
assert mix_streams([], 16) == b""
|
|
51
|
+
|
|
52
|
+
|
|
36
53
|
def test_mix_streams_single() -> None:
|
|
37
54
|
data = b"\x00\x01\x00\x02"
|
|
38
55
|
assert mix_streams([data], 16) == data
|
|
39
56
|
|
|
40
57
|
|
|
58
|
+
def test_mix_streams_pads_shorter_stream() -> None:
|
|
59
|
+
s1 = struct.pack("<hh", 1000, 2000)
|
|
60
|
+
s2 = struct.pack("<h", 3000)
|
|
61
|
+
mixed = mix_streams([s1, s2], 16, mix_normalize=False)
|
|
62
|
+
assert len(mixed) == len(s1)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_mix_streams_32bit() -> None:
|
|
66
|
+
s1 = struct.pack("<ii", 1000, 2000)
|
|
67
|
+
s2 = struct.pack("<ii", 3000, 4000)
|
|
68
|
+
mixed = mix_streams([s1, s2], 32, mix_normalize=False)
|
|
69
|
+
v1, v2 = struct.unpack("<ii", mixed)
|
|
70
|
+
assert v1 == 2000
|
|
71
|
+
assert v2 == 3000
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def test_clamp() -> None:
|
|
75
|
+
assert clamp(5, 0, 10) == 5
|
|
76
|
+
assert clamp(-1, 0, 10) == 0
|
|
77
|
+
assert clamp(100, 0, 10) == 10
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def test_resample_pcm_identity() -> None:
|
|
81
|
+
pcm = struct.pack("<hh", 100, 200)
|
|
82
|
+
assert resample_pcm(pcm, 44100, 2, 16, 44100, 2, 16) == pcm
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def test_resample_pcm_mono_to_stereo() -> None:
|
|
86
|
+
pcm = struct.pack("<h", 1000)
|
|
87
|
+
out = resample_pcm(pcm, 44100, 1, 16, 44100, 2, 16)
|
|
88
|
+
v1, v2 = struct.unpack("<hh", out)
|
|
89
|
+
assert v1 == v2 == 1000
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def test_resample_pcm_downsample() -> None:
|
|
93
|
+
pcm = struct.pack("<hh", 100, 200) * 20
|
|
94
|
+
out = resample_pcm(pcm, 44100, 2, 16, 22050, 2, 16)
|
|
95
|
+
assert len(out) < len(pcm)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def test_resample_pcm_multi_channel() -> None:
|
|
99
|
+
pcm = struct.pack("<hhhh", 1, 2, 3, 4)
|
|
100
|
+
out = resample_pcm(pcm, 44100, 4, 16, 44100, 3, 16)
|
|
101
|
+
assert len(out) == 6
|
|
102
|
+
assert struct.unpack("<hhh", out) == (1, 2, 3)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_load_lib_missing() -> None:
|
|
106
|
+
assert load_lib("echotools_nonexistent_lib_xyz") is None
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def test_platform_flags() -> None:
|
|
110
|
+
import platform
|
|
111
|
+
|
|
112
|
+
assert _OS == platform.system()
|
|
113
|
+
assert sum((IS_WINDOWS, IS_MACOS, IS_LINUX)) <= 1
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def test_rgba_to_bgra() -> None:
|
|
117
|
+
data = bytes([255, 0, 0, 255])
|
|
118
|
+
out = rgba_to_bgra(data)
|
|
119
|
+
assert out[0] == 0
|
|
120
|
+
assert out[2] == 255
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def test_write_bmp_bottom_up() -> None:
|
|
124
|
+
pixels = b"\x00" * (4 * 2 * 2)
|
|
125
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
126
|
+
path = str(Path(tmp) / "bottom.bmp")
|
|
127
|
+
write_bmp(path, 2, 2, pixels, top_down=False)
|
|
128
|
+
raw = Path(path).read_bytes()
|
|
129
|
+
(height,) = struct.unpack_from("<i", raw, 22)
|
|
130
|
+
assert height == 2
|
|
131
|
+
|
|
132
|
+
|
|
41
133
|
def test_mix_streams_average() -> None:
|
|
42
134
|
s1 = struct.pack("<hh", 1000, 2000)
|
|
43
135
|
s2 = struct.pack("<hh", 3000, 4000)
|
|
@@ -98,6 +190,7 @@ def test_audio_record_config_defaults() -> None:
|
|
|
98
190
|
assert cfg.buffer_ms == 50
|
|
99
191
|
assert cfg.frame_bytes == 4
|
|
100
192
|
assert cfg.buffer_frames == int(44100 * 50 / 1000)
|
|
193
|
+
assert cfg.total_frames == int(44100 * cfg.record_seconds)
|
|
101
194
|
|
|
102
195
|
|
|
103
196
|
def test_screenshot_config_defaults() -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/invoke.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/params.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/regex.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_patterns/strip.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_schema/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_schema/mangled.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_schema/validate.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_stream/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_stream/body.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_stream/snap.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/filter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_think/parse.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/comment.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/fakemarkup.py
RENAMED
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/invoke.py
RENAMED
|
File without changes
|
|
File without changes
|
{echotools-2.4.7 → echotools-2.4.8}/src/echotools/exec/fncall/protocols/entml_tool/values.py
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|