echotools 2.3.74__tar.gz → 2.3.78__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.3.74 → echotools-2.3.78}/PKG-INFO +130 -130
- {echotools-2.3.74 → echotools-2.3.78}/README.md +3 -3
- {echotools-2.3.74 → echotools-2.3.78}/docs/README.md +74 -74
- {echotools-2.3.74 → echotools-2.3.78}/pyproject.toml +1 -1
- {echotools-2.3.74 → echotools-2.3.78}/setup.cfg +8 -8
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/__init__.py +215 -215
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/cache/__init__.py +8 -8
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/cache/list_cache.py +155 -155
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/cache/memory_cache.py +74 -74
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/__init__.py +23 -23
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/base.py +155 -155
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/center.py +285 -285
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/center_notify.py +39 -39
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/center_template.py +142 -142
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/loader.py +138 -138
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/errors/__init__.py +49 -49
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/errors/base.py +32 -32
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/errors/classify.py +79 -79
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/errors/common.py +74 -74
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/errors/http.py +126 -126
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/ids/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/ids/generator.py +62 -62
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/io/__init__.py +37 -37
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/io/io_utils.py +81 -81
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/logger/__init__.py +12 -12
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/logger/manager.py +187 -187
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/retry/__init__.py +12 -12
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/retry/retry.py +171 -171
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/compat.py +88 -88
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/__init__.py +21 -21
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/candidate.py +51 -51
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/dispatcher.py +233 -233
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/proxy_selector.py +154 -154
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/race.py +119 -119
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/selector.py +400 -400
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/__init__.py +44 -44
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/parsers/__init__.py +6 -6
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/parsers/stream.py +760 -715
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/parsers/xml_params.py +40 -40
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/parsers/xml_parser.py +285 -285
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/prompt/__init__.py +5 -5
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/prompt/history.py +322 -322
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/prompt/history_format.py +113 -113
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/prompt/inject.py +192 -192
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/prompt/prompt_helpers.py +259 -259
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/prompt/templates.py +167 -167
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/__init__.py +14 -14
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml.py +347 -343
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_invoke.py +161 -141
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_patterns.py +290 -279
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_stream_json.py +461 -395
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +33 -33
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_think/core.py +230 -230
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_think/hist.py +168 -168
- echotools-2.3.78/src/echotools/exec/fncall/protocols/entml_tool_blocks.py +172 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_values.py +93 -106
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/registry.py +111 -111
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/__init__.py +29 -29
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/coercion.py +286 -286
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/history_markup.py +298 -298
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/loop_detect.py +97 -97
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/normalization.py +181 -181
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/schema_render.py +126 -126
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/shared/xml_helpers.py +56 -56
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/lifecycle/__init__.py +8 -8
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/lifecycle/manager.py +72 -72
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/lifecycle/updater.py +197 -197
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/lifecycle/updater_pull.py +33 -33
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/process/__init__.py +10 -10
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/process/port.py +193 -193
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/protocol/__init__.py +19 -19
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/protocol/base.py +135 -135
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/conpty.py +246 -246
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/local/__init__.py +6 -6
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/local/core.py +318 -318
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/local/proc.py +331 -331
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/local/unix.py +195 -195
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/local/win.py +199 -199
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/session/__init__.py +20 -20
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/session/base.py +353 -353
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/session/client.py +155 -155
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/tmux.py +105 -105
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/__init__.py +38 -38
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/charmap.py +148 -148
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/spinner.py +342 -342
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/mixins/__init__.py +15 -15
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/mixins/uibase.py +195 -195
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/mixins/uicmds.py +224 -224
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/mixins/uiinteract.py +199 -199
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/mixins/uioutput.py +304 -304
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/mixins/uistream.py +144 -144
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/ui_console.py +20 -20
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/ui_io.py +27 -27
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/ui_log.py +67 -67
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/ui_platform.py +389 -389
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/ui_text.py +368 -368
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uicore/ui_types.py +246 -246
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uilayout/ui_countdown.py +62 -62
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uilayout/ui_layout.py +50 -50
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uilayout/ui_misc.py +336 -336
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uilayout/ui_panel.py +137 -137
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uilayout/ui_table.py +205 -205
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uilayout/ui_tree.py +146 -146
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uiwidgets/ui_box.py +197 -197
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uiwidgets/ui_editor.py +360 -360
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uiwidgets/ui_progress.py +296 -296
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uiwidgets/ui_select.py +199 -199
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/uiwidgets/ui_stream.py +85 -85
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/events/__init__.py +8 -8
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/events/bus.py +104 -104
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/events/event.py +31 -31
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/spinner/__init__.py +24 -24
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/spinner/spinner.py +324 -324
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/spinner/spinner_color.py +98 -98
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/tracing/__init__.py +28 -28
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/tracing/context.py +63 -63
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/tracing/span.py +135 -135
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/tracing/tracer.py +97 -97
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/watcher/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/watcher/file_watcher.py +110 -110
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/__init__.py +37 -37
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/application.py +120 -120
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/sendbutton.js +64 -64
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/sortablelist.js +104 -104
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/textinput.js +185 -185
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/inputbox.js +277 -277
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/style.css +170 -170
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/voicegif.js +1 -1
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/middleware.py +129 -129
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/utils.py +187 -187
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/files/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/files/file_util.py +155 -155
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/network/__init__.py +11 -11
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/network/http_utils.py +68 -68
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/plugin/__init__.py +9 -9
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/plugin/base.py +41 -41
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/plugin/discovery.py +179 -179
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/plugin/registry.py +245 -245
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/plugin/registry_ops.py +99 -99
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/proxy/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/proxy/manager.py +268 -268
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/runtime/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/runtime/collector.py +60 -60
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/scheduler/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/scheduler/scheduler.py +69 -69
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/sdk/__init__.py +7 -7
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/plat/sdk/facade.py +251 -251
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/version.py +15 -15
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools.egg-info/PKG-INFO +130 -130
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools.egg-info/SOURCES.txt +1 -1
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/bench_import.py +14 -14
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/conftest.py +19 -19
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/fixtures/simulated_fake_history_markup_responses.py +484 -481
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/fixtures/simulated_fault_thinking_responses.py +220 -220
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/fixtures/simulated_llm_tool_responses.py +805 -805
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_adversarial_stream_splits.py +144 -144
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_cache_retry.py +128 -128
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_completion.py +48 -48
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_config.py +85 -85
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_config_extended.py +45 -45
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_console.py +26 -26
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_coverage_core.py +515 -515
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_dispatch.py +35 -35
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_dispatch_extended.py +44 -44
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_dispatch_race.py +55 -55
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_agent_output_formats.py +143 -143
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_bare_invoke_format.py +375 -375
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_parser_comprehensive.py +654 -654
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_protocol.py +1416 -1180
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_stream_json.py +77 -77
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_stream_json_exhaustive.py +268 -268
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_thinking_history.py +71 -71
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_tool_parse_leak.py +255 -255
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_tool_pipeline.py +851 -851
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_errors.py +45 -45
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_errors_common.py +24 -24
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_events.py +56 -56
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_events_event.py +18 -18
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_facade.py +33 -33
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fake_history_markup_batch.py +70 -75
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fake_history_markup_invoke_preserve.py +130 -130
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fake_history_markup_reply_protect.py +168 -166
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fake_history_markup_stream.py +151 -151
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fault_thinking_close_batch.py +86 -86
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fault_thinking_close_stream.py +149 -149
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fncall.py +99 -99
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_fncall_stream_thinking.py +363 -363
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_history_markup_filter.py +321 -321
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_ids.py +25 -25
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_imports.py +51 -51
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_io.py +20 -20
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_keys.py +27 -27
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_lifecycle.py +34 -34
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_logger.py +37 -37
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_merge.py +26 -26
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_model_branch_matrix.py +204 -204
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_plugin.py +31 -31
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_printstream.py +337 -337
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_protocols.py +25 -25
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_proxy.py +56 -56
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_proxy_selector.py +27 -27
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_runtime.py +25 -25
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_scheduler.py +27 -27
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_simulated_llm_tool_parse.py +168 -168
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_stream_partial_json_parity.py +89 -89
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_stream_realtime_parse.py +134 -134
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_tracing.py +30 -30
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_usage.py +37 -37
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_web.py +48 -48
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_web_broker.py +50 -50
- echotools-2.3.74/src/tests/_check_parity.py +0 -72
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/config/merge.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/base/io/printstream.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/dispatch/usage.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_think/parse.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/fncall/protocols/entml_tools.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/keys.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/__init__.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/sanitize.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/exec/terminal/ssh.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/console/ui.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/translate.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/broker.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/app.js +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/filezone.js +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/input_box/inputbox.css +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools/media/web/stats.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools.egg-info/dependency_links.txt +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools.egg-info/requires.txt +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/echotools.egg-info/top_level.txt +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/fixtures/__init__.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_thinking_parse.py +0 -0
- {echotools-2.3.74 → echotools-2.3.78}/src/tests/test_entml_tools.py +0 -0
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: echotools
|
|
3
|
-
Version: 2.3.
|
|
4
|
-
Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
|
|
5
|
-
Home-page: https://github.com/nichengfuben/echotools
|
|
6
|
-
Author: nichengfuben
|
|
7
|
-
License: MIT
|
|
8
|
-
Project-URL: Homepage, https://github.com/nichengfuben/echotools
|
|
9
|
-
Project-URL: Repository, https://github.com/nichengfuben/echotools
|
|
10
|
-
Project-URL: Issues, https://github.com/nichengfuben/echotools/issues
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
21
|
-
Requires-Python: >=3.8
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
Requires-Dist: typing-extensions>=4.7.0
|
|
24
|
-
Provides-Extra: toml
|
|
25
|
-
Requires-Dist: tomlkit>=0.11.0; extra == "toml"
|
|
26
|
-
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "toml"
|
|
27
|
-
Provides-Extra: watch
|
|
28
|
-
Requires-Dist: watchdog>=3.0.0; extra == "watch"
|
|
29
|
-
Provides-Extra: http
|
|
30
|
-
Requires-Dist: aiohttp>=3.8.0; extra == "http"
|
|
31
|
-
Provides-Extra: socks
|
|
32
|
-
Requires-Dist: aiohttp-socks>=0.8.0; extra == "socks"
|
|
33
|
-
Provides-Extra: ssh
|
|
34
|
-
Requires-Dist: paramiko>=3.0.0; extra == "ssh"
|
|
35
|
-
Provides-Extra: terminal
|
|
36
|
-
Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "terminal"
|
|
37
|
-
Provides-Extra: console
|
|
38
|
-
Requires-Dist: rich>=13.0; extra == "console"
|
|
39
|
-
Requires-Dist: wcwidth>=0.2; extra == "console"
|
|
40
|
-
Provides-Extra: all
|
|
41
|
-
Requires-Dist: tomlkit>=0.11.0; extra == "all"
|
|
42
|
-
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "all"
|
|
43
|
-
Requires-Dist: watchdog>=3.0.0; extra == "all"
|
|
44
|
-
Requires-Dist: aiohttp>=3.8.0; extra == "all"
|
|
45
|
-
Requires-Dist: aiohttp-socks>=0.8.0; extra == "all"
|
|
46
|
-
Requires-Dist: paramiko>=3.0.0; extra == "all"
|
|
47
|
-
Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "all"
|
|
48
|
-
Requires-Dist: rich>=13.0; extra == "all"
|
|
49
|
-
Requires-Dist: wcwidth>=0.2; extra == "all"
|
|
50
|
-
Provides-Extra: dev
|
|
51
|
-
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
52
|
-
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
53
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
54
|
-
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
55
|
-
Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
56
|
-
|
|
57
|
-
# echotools
|
|
58
|
-
|
|
59
|
-
通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
|
|
60
|
-
插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
|
|
61
|
-
|
|
62
|
-
## 安装
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# 核心(仅 typing-extensions)
|
|
66
|
-
pip install echotools
|
|
67
|
-
|
|
68
|
-
# 完整功能
|
|
69
|
-
pip install echotools[all]
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### 可选依赖
|
|
73
|
-
|
|
74
|
-
| Extra | 用途 |
|
|
75
|
-
|-------|------|
|
|
76
|
-
| `toml` | TOML 配置读写 |
|
|
77
|
-
| `watch` | watchdog 文件监视 |
|
|
78
|
-
| `http` | aiohttp Web 层 |
|
|
79
|
-
| `socks` | SOCKS 代理 |
|
|
80
|
-
| `ssh` | SSH 终端 |
|
|
81
|
-
| `terminal` | Windows ConPTY |
|
|
82
|
-
| `all` | 全部可选依赖 |
|
|
83
|
-
| `dev` | pytest, ruff, mypy |
|
|
84
|
-
|
|
85
|
-
## 快速开始
|
|
86
|
-
|
|
87
|
-
```python
|
|
88
|
-
from echotools import EchoTools
|
|
89
|
-
|
|
90
|
-
et = EchoTools(service_name="myapp")
|
|
91
|
-
et.logger.configure(level="INFO", color=True)
|
|
92
|
-
cfg = et.config
|
|
93
|
-
cfg.load("config.toml")
|
|
94
|
-
|
|
95
|
-
with et.tracer.trace("request") as trace:
|
|
96
|
-
with et.tracer.span(trace, "db") as span:
|
|
97
|
-
span.set_tag("query", "select 1")
|
|
98
|
-
|
|
99
|
-
await et.shutdown()
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## 能力总览
|
|
103
|
-
|
|
104
|
-
| 模块 | 说明 |
|
|
105
|
-
|------|------|
|
|
106
|
-
| `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
|
|
107
|
-
| `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
|
|
108
|
-
| `EventBus` | 同步/异步事件 |
|
|
109
|
-
| `Tracer` | 轻量调用链 |
|
|
110
|
-
| `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
|
|
111
|
-
| `PluginRegistry` | 自动发现 + 热重载 |
|
|
112
|
-
| `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
|
|
113
|
-
| `ProxyManager` | HTTP/HTTPS/SOCKS |
|
|
114
|
-
| `AutoUpdater` | git 自动更新 |
|
|
115
|
-
| `FileWatcher` | 轮询文件监视 |
|
|
116
|
-
|
|
117
|
-
## 开发
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
pip install -e ".[dev,all]"
|
|
121
|
-
make lint
|
|
122
|
-
make test
|
|
123
|
-
make cov
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
|
|
127
|
-
|
|
128
|
-
## 许可证
|
|
129
|
-
|
|
130
|
-
MIT
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: echotools
|
|
3
|
+
Version: 2.3.78
|
|
4
|
+
Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
|
|
5
|
+
Home-page: https://github.com/nichengfuben/echotools
|
|
6
|
+
Author: nichengfuben
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/nichengfuben/echotools
|
|
9
|
+
Project-URL: Repository, https://github.com/nichengfuben/echotools
|
|
10
|
+
Project-URL: Issues, https://github.com/nichengfuben/echotools/issues
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: typing-extensions>=4.7.0
|
|
24
|
+
Provides-Extra: toml
|
|
25
|
+
Requires-Dist: tomlkit>=0.11.0; extra == "toml"
|
|
26
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "toml"
|
|
27
|
+
Provides-Extra: watch
|
|
28
|
+
Requires-Dist: watchdog>=3.0.0; extra == "watch"
|
|
29
|
+
Provides-Extra: http
|
|
30
|
+
Requires-Dist: aiohttp>=3.8.0; extra == "http"
|
|
31
|
+
Provides-Extra: socks
|
|
32
|
+
Requires-Dist: aiohttp-socks>=0.8.0; extra == "socks"
|
|
33
|
+
Provides-Extra: ssh
|
|
34
|
+
Requires-Dist: paramiko>=3.0.0; extra == "ssh"
|
|
35
|
+
Provides-Extra: terminal
|
|
36
|
+
Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "terminal"
|
|
37
|
+
Provides-Extra: console
|
|
38
|
+
Requires-Dist: rich>=13.0; extra == "console"
|
|
39
|
+
Requires-Dist: wcwidth>=0.2; extra == "console"
|
|
40
|
+
Provides-Extra: all
|
|
41
|
+
Requires-Dist: tomlkit>=0.11.0; extra == "all"
|
|
42
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "all"
|
|
43
|
+
Requires-Dist: watchdog>=3.0.0; extra == "all"
|
|
44
|
+
Requires-Dist: aiohttp>=3.8.0; extra == "all"
|
|
45
|
+
Requires-Dist: aiohttp-socks>=0.8.0; extra == "all"
|
|
46
|
+
Requires-Dist: paramiko>=3.0.0; extra == "all"
|
|
47
|
+
Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "all"
|
|
48
|
+
Requires-Dist: rich>=13.0; extra == "all"
|
|
49
|
+
Requires-Dist: wcwidth>=0.2; extra == "all"
|
|
50
|
+
Provides-Extra: dev
|
|
51
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
52
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
53
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
54
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
55
|
+
Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
56
|
+
|
|
57
|
+
# echotools
|
|
58
|
+
|
|
59
|
+
通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
|
|
60
|
+
插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
|
|
61
|
+
|
|
62
|
+
## 安装
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# 核心(仅 typing-extensions)
|
|
66
|
+
pip install echotools
|
|
67
|
+
|
|
68
|
+
# 完整功能
|
|
69
|
+
pip install echotools[all]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 可选依赖
|
|
73
|
+
|
|
74
|
+
| Extra | 用途 |
|
|
75
|
+
|-------|------|
|
|
76
|
+
| `toml` | TOML 配置读写 |
|
|
77
|
+
| `watch` | watchdog 文件监视 |
|
|
78
|
+
| `http` | aiohttp Web 层 |
|
|
79
|
+
| `socks` | SOCKS 代理 |
|
|
80
|
+
| `ssh` | SSH 终端 |
|
|
81
|
+
| `terminal` | Windows ConPTY |
|
|
82
|
+
| `all` | 全部可选依赖 |
|
|
83
|
+
| `dev` | pytest, ruff, mypy |
|
|
84
|
+
|
|
85
|
+
## 快速开始
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
from echotools import EchoTools
|
|
89
|
+
|
|
90
|
+
et = EchoTools(service_name="myapp")
|
|
91
|
+
et.logger.configure(level="INFO", color=True)
|
|
92
|
+
cfg = et.config
|
|
93
|
+
cfg.load("config.toml")
|
|
94
|
+
|
|
95
|
+
with et.tracer.trace("request") as trace:
|
|
96
|
+
with et.tracer.span(trace, "db") as span:
|
|
97
|
+
span.set_tag("query", "select 1")
|
|
98
|
+
|
|
99
|
+
await et.shutdown()
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 能力总览
|
|
103
|
+
|
|
104
|
+
| 模块 | 说明 |
|
|
105
|
+
|------|------|
|
|
106
|
+
| `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
|
|
107
|
+
| `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
|
|
108
|
+
| `EventBus` | 同步/异步事件 |
|
|
109
|
+
| `Tracer` | 轻量调用链 |
|
|
110
|
+
| `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
|
|
111
|
+
| `PluginRegistry` | 自动发现 + 热重载 |
|
|
112
|
+
| `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
|
|
113
|
+
| `ProxyManager` | HTTP/HTTPS/SOCKS |
|
|
114
|
+
| `AutoUpdater` | git 自动更新 |
|
|
115
|
+
| `FileWatcher` | 轮询文件监视 |
|
|
116
|
+
|
|
117
|
+
## 开发
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pip install -e ".[dev,all]"
|
|
121
|
+
make lint
|
|
122
|
+
make test
|
|
123
|
+
make cov
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
|
|
127
|
+
|
|
128
|
+
## 许可证
|
|
129
|
+
|
|
130
|
+
MIT
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# echotools
|
|
2
|
-
|
|
3
|
-
Documentation: [docs/README.md](docs/README.md)
|
|
1
|
+
# echotools
|
|
2
|
+
|
|
3
|
+
Documentation: [docs/README.md](docs/README.md)
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
# echotools
|
|
2
|
-
|
|
3
|
-
通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
|
|
4
|
-
插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
|
|
5
|
-
|
|
6
|
-
## 安装
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
# 核心(仅 typing-extensions)
|
|
10
|
-
pip install echotools
|
|
11
|
-
|
|
12
|
-
# 完整功能
|
|
13
|
-
pip install echotools[all]
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### 可选依赖
|
|
17
|
-
|
|
18
|
-
| Extra | 用途 |
|
|
19
|
-
|-------|------|
|
|
20
|
-
| `toml` | TOML 配置读写 |
|
|
21
|
-
| `watch` | watchdog 文件监视 |
|
|
22
|
-
| `http` | aiohttp Web 层 |
|
|
23
|
-
| `socks` | SOCKS 代理 |
|
|
24
|
-
| `ssh` | SSH 终端 |
|
|
25
|
-
| `terminal` | Windows ConPTY |
|
|
26
|
-
| `all` | 全部可选依赖 |
|
|
27
|
-
| `dev` | pytest, ruff, mypy |
|
|
28
|
-
|
|
29
|
-
## 快速开始
|
|
30
|
-
|
|
31
|
-
```python
|
|
32
|
-
from echotools import EchoTools
|
|
33
|
-
|
|
34
|
-
et = EchoTools(service_name="myapp")
|
|
35
|
-
et.logger.configure(level="INFO", color=True)
|
|
36
|
-
cfg = et.config
|
|
37
|
-
cfg.load("config.toml")
|
|
38
|
-
|
|
39
|
-
with et.tracer.trace("request") as trace:
|
|
40
|
-
with et.tracer.span(trace, "db") as span:
|
|
41
|
-
span.set_tag("query", "select 1")
|
|
42
|
-
|
|
43
|
-
await et.shutdown()
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## 能力总览
|
|
47
|
-
|
|
48
|
-
| 模块 | 说明 |
|
|
49
|
-
|------|------|
|
|
50
|
-
| `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
|
|
51
|
-
| `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
|
|
52
|
-
| `EventBus` | 同步/异步事件 |
|
|
53
|
-
| `Tracer` | 轻量调用链 |
|
|
54
|
-
| `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
|
|
55
|
-
| `PluginRegistry` | 自动发现 + 热重载 |
|
|
56
|
-
| `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
|
|
57
|
-
| `ProxyManager` | HTTP/HTTPS/SOCKS |
|
|
58
|
-
| `AutoUpdater` | git 自动更新 |
|
|
59
|
-
| `FileWatcher` | 轮询文件监视 |
|
|
60
|
-
|
|
61
|
-
## 开发
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
pip install -e ".[dev,all]"
|
|
65
|
-
make lint
|
|
66
|
-
make test
|
|
67
|
-
make cov
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
|
|
71
|
-
|
|
72
|
-
## 许可证
|
|
73
|
-
|
|
74
|
-
MIT
|
|
1
|
+
# echotools
|
|
2
|
+
|
|
3
|
+
通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
|
|
4
|
+
插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
# 核心(仅 typing-extensions)
|
|
10
|
+
pip install echotools
|
|
11
|
+
|
|
12
|
+
# 完整功能
|
|
13
|
+
pip install echotools[all]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 可选依赖
|
|
17
|
+
|
|
18
|
+
| Extra | 用途 |
|
|
19
|
+
|-------|------|
|
|
20
|
+
| `toml` | TOML 配置读写 |
|
|
21
|
+
| `watch` | watchdog 文件监视 |
|
|
22
|
+
| `http` | aiohttp Web 层 |
|
|
23
|
+
| `socks` | SOCKS 代理 |
|
|
24
|
+
| `ssh` | SSH 终端 |
|
|
25
|
+
| `terminal` | Windows ConPTY |
|
|
26
|
+
| `all` | 全部可选依赖 |
|
|
27
|
+
| `dev` | pytest, ruff, mypy |
|
|
28
|
+
|
|
29
|
+
## 快速开始
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
from echotools import EchoTools
|
|
33
|
+
|
|
34
|
+
et = EchoTools(service_name="myapp")
|
|
35
|
+
et.logger.configure(level="INFO", color=True)
|
|
36
|
+
cfg = et.config
|
|
37
|
+
cfg.load("config.toml")
|
|
38
|
+
|
|
39
|
+
with et.tracer.trace("request") as trace:
|
|
40
|
+
with et.tracer.span(trace, "db") as span:
|
|
41
|
+
span.set_tag("query", "select 1")
|
|
42
|
+
|
|
43
|
+
await et.shutdown()
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 能力总览
|
|
47
|
+
|
|
48
|
+
| 模块 | 说明 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
|
|
51
|
+
| `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
|
|
52
|
+
| `EventBus` | 同步/异步事件 |
|
|
53
|
+
| `Tracer` | 轻量调用链 |
|
|
54
|
+
| `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
|
|
55
|
+
| `PluginRegistry` | 自动发现 + 热重载 |
|
|
56
|
+
| `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
|
|
57
|
+
| `ProxyManager` | HTTP/HTTPS/SOCKS |
|
|
58
|
+
| `AutoUpdater` | git 自动更新 |
|
|
59
|
+
| `FileWatcher` | 轮询文件监视 |
|
|
60
|
+
|
|
61
|
+
## 开发
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip install -e ".[dev,all]"
|
|
65
|
+
make lint
|
|
66
|
+
make test
|
|
67
|
+
make cov
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
|
|
71
|
+
|
|
72
|
+
## 许可证
|
|
73
|
+
|
|
74
|
+
MIT
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
[metadata]
|
|
2
|
-
url = https://github.com/nichengfuben/echotools
|
|
3
|
-
home_page = https://github.com/nichengfuben/echotools
|
|
4
|
-
|
|
5
|
-
[egg_info]
|
|
6
|
-
tag_build =
|
|
7
|
-
tag_date = 0
|
|
8
|
-
|
|
1
|
+
[metadata]
|
|
2
|
+
url = https://github.com/nichengfuben/echotools
|
|
3
|
+
home_page = https://github.com/nichengfuben/echotools
|
|
4
|
+
|
|
5
|
+
[egg_info]
|
|
6
|
+
tag_build =
|
|
7
|
+
tag_date = 0
|
|
8
|
+
|