From 975b268f9b933726741de17fdb5653c5be084b01 Mon Sep 17 00:00:00 2001 From: qianlifeng Date: Thu, 19 Dec 2024 23:12:38 +0800 Subject: [PATCH] Replace justfile with makefile and unify project naming --- .github/workflows/plugin.yml | 2 +- .gitignore | 22 +- .vscode/settings.json | 29 + Makefile | 104 +++ Wox.Plugin.Host.Python/Makefile | 5 - Wox.Plugin.Host.Python/pyproject.toml | 11 - Wox.Plugin.Host.Python/uv.lock | 118 --- Wox.Plugin.Python/Makefile | 2 - Wox.Plugin.Python/README.md | 27 - Wox.Plugin.Python/publish.py | 109 --- Wox.Plugin.Python/pyproject.toml | 12 - Wox.Plugin.Python/setup.py | 35 - Wox.Plugin.Python/uv.lock | 439 --------- Wox.Plugin.Python/wox_plugin/__init__.py | 55 -- Wox.Plugin.Python/wox_plugin/types.py | 535 ----------- Wox.code-workspace | 52 ++ {Assets => assets}/app.ico | Bin {Assets => assets}/app.png | Bin {Assets => assets}/app.psd | Bin {Assets => assets}/mac/Info.plist | 0 {Assets => assets}/mac/app.icns | Bin {CI => ci}/go.mod | 0 {CI => ci}/go.sum | 0 {CI => ci}/plugin.go | 0 docs/development.md | 21 +- justfile | 111 --- wox.core/Makefile | 38 + {Wox => wox.core}/ai/conversation.go | 0 {Wox => wox.core}/ai/model.go | 0 {Wox => wox.core}/ai/provider.go | 0 {Wox => wox.core}/ai/provider_google.go | 0 {Wox => wox.core}/ai/provider_groq.go | 0 {Wox => wox.core}/ai/provider_ollama.go | 0 {Wox => wox.core}/ai/provider_openai.go | 0 {Wox => wox.core}/go.mod | 0 {Wox => wox.core}/go.sum | 0 {Wox => wox.core}/i18n/lang.go | 0 {Wox => wox.core}/i18n/manager.go | 0 {Wox => wox.core}/main.go | 0 {Wox => wox.core}/plugin/api.go | 0 wox.core/plugin/cache/images/emoji_1f6ab.png | Bin 0 -> 388 bytes {Wox => wox.core}/plugin/doctor.go | 0 {Wox => wox.core}/plugin/host.go | 0 {Wox => wox.core}/plugin/host/host_nodejs.go | 0 {Wox => wox.core}/plugin/host/host_python.go | 0 .../plugin/host/host_websocket.go | 0 .../plugin/host/host_websocket_plugin.go | 0 {Wox => wox.core}/plugin/host/jsonrpc.go | 0 {Wox => wox.core}/plugin/icons.go | 0 {Wox => wox.core}/plugin/image.go | 0 {Wox => wox.core}/plugin/image_test.go | 0 {Wox => wox.core}/plugin/instance.go | 0 {Wox => wox.core}/plugin/manager.go | 0 {Wox => wox.core}/plugin/manager_test.go | 0 {Wox => wox.core}/plugin/metadata.go | 0 {Wox => wox.core}/plugin/os.go | 0 {Wox => wox.core}/plugin/platform.go | 0 {Wox => wox.core}/plugin/plugin.go | 0 {Wox => wox.core}/plugin/preview.go | 0 {Wox => wox.core}/plugin/query.go | 0 {Wox => wox.core}/plugin/query_test.go | 0 {Wox => wox.core}/plugin/refresh.go | 0 {Wox => wox.core}/plugin/runtime.go | 0 {Wox => wox.core}/plugin/store.go | 0 {Wox => wox.core}/plugin/system/ai_command.go | 0 {Wox => wox.core}/plugin/system/app/app.go | 0 .../plugin/system/app/app_darwin.go | 0 .../plugin/system/app/app_darwin.m | 0 .../plugin/system/app/app_darwin_test.go | 0 .../plugin/system/app/app_icons_darwin.go | 0 .../plugin/system/app/app_linux.go | 0 .../plugin/system/app/app_windows.go | 0 .../plugin/system/app/retriever.go | 0 {Wox => wox.core}/plugin/system/backup.go | 0 {Wox => wox.core}/plugin/system/browser.go | 0 .../plugin/system/browser_bookmark.go | 0 .../plugin/system/calculator/README.md | 0 .../plugin/system/calculator/calculator.go | 0 .../system/calculator/calculator_plugin.go | 0 .../plugin/system/calculator/parser.go | 0 .../plugin/system/calculator/tokenizer.go | 0 {Wox => wox.core}/plugin/system/clipboard.go | 0 {Wox => wox.core}/plugin/system/doctor.go | 0 .../plugin/system/file/plugin.go | 0 .../plugin/system/file/searcher.go | 0 .../plugin/system/file/searcher_darwin.go | 0 .../plugin/system/file/searcher_linux.go | 0 .../plugin/system/file/searcher_windows.go | 0 {Wox => wox.core}/plugin/system/indicator.go | 0 .../plugin/system/menus_darwin.go | 0 .../plugin/system/plugin_installer.go | 0 .../plugin/system/query_history.go | 0 {Wox => wox.core}/plugin/system/selection.go | 0 {Wox => wox.core}/plugin/system/sys.go | 0 {Wox => wox.core}/plugin/system/theme.go | 0 {Wox => wox.core}/plugin/system/url.go | 0 {Wox => wox.core}/plugin/system/url_test.go | 0 {Wox => wox.core}/plugin/system/util.go | 0 {Wox => wox.core}/plugin/system/websearch.go | 0 {Wox => wox.core}/plugin/system/wpm.go | 0 {Wox => wox.core}/resource/app.ico | Bin {Wox => wox.core}/resource/app.png | Bin {Wox => wox.core}/resource/lang/en_US.json | 0 {Wox => wox.core}/resource/lang/zh_CN.json | 0 {Wox => wox.core}/resource/resource.go | 0 .../resource/ui/themes/dark.json | 0 .../resource/ui/themes/light.json | 0 .../resource/ui/themes/macaroon delight.json | 0 .../resource/ui/themes/morandi dream.json | 0 .../resource/ui/themes/rococo dream.json | 0 {Wox => wox.core}/rsrc_windows.syso | Bin {Wox => wox.core}/setting/backup_restore.go | 0 .../setting/definition/definition.go | 0 .../setting/definition/definition_checkbox.go | 0 .../setting/definition/definition_dynamic.go | 0 .../setting/definition/definition_head.go | 0 .../setting/definition/definition_label.go | 0 .../setting/definition/definition_newline.go | 0 .../setting/definition/definition_select.go | 0 .../definition/definition_select_ai_model.go | 0 .../setting/definition/definition_table.go | 0 .../setting/definition/definition_textbox.go | 0 {Wox => wox.core}/setting/manager.go | 0 .../setting/platform_setting_value.go | 0 {Wox => wox.core}/setting/plugin_setting.go | 0 .../setting/plugin_setting_test.go | 0 .../setting/validator/validator.go | 0 .../setting/validator/validator_is_number.go | 0 .../setting/validator/validator_not_empty.go | 0 {Wox => wox.core}/setting/wox_app_data.go | 0 {Wox => wox.core}/setting/wox_setting.go | 0 {Wox => wox.core}/share/theme.go | 0 {Wox => wox.core}/share/ui.go | 0 {Wox => wox.core}/ui/dto/plugin_dto.go | 0 {Wox => wox.core}/ui/dto/setting_dto.go | 0 {Wox => wox.core}/ui/dto/theme_dto.go | 0 {Wox => wox.core}/ui/http.go | 0 {Wox => wox.core}/ui/manager.go | 0 {Wox => wox.core}/ui/position.go | 0 {Wox => wox.core}/ui/router.go | 0 {Wox => wox.core}/ui/store.go | 0 {Wox => wox.core}/ui/ui_impl.go | 0 {Wox => wox.core}/updater/updater.go | 0 {Wox => wox.core}/updater/version.go | 0 {Wox => wox.core}/util/airdrop/airdrop.go | 0 .../util/airdrop/airdrop_darwin.go | 0 .../util/airdrop/airdrop_darwin.m | 0 {Wox => wox.core}/util/autostart/autostart.go | 0 .../util/autostart/autostart_darwin.go | 0 .../util/autostart/autostart_linux.go | 0 .../util/autostart/autostart_windows.go | 0 .../util/clipboard/clipboad_test.go | 0 {Wox => wox.core}/util/clipboard/clipboard.go | 0 .../util/clipboard/clipboard_darwin.go | 0 .../util/clipboard/clipboard_darwin.m | 0 .../util/clipboard/clipboard_linux.go | 0 .../util/clipboard/clipboard_windows.go | 0 {Wox => wox.core}/util/context.go | 0 {Wox => wox.core}/util/debounce.go | 0 {Wox => wox.core}/util/debounce_test.go | 0 {Wox => wox.core}/util/dev.go | 0 {Wox => wox.core}/util/directory.go | 0 {Wox => wox.core}/util/file.go | 0 {Wox => wox.core}/util/file_darwin.go | 0 {Wox => wox.core}/util/file_linux.go | 0 {Wox => wox.core}/util/file_watcher.go | 0 {Wox => wox.core}/util/file_windows.go | 0 {Wox => wox.core}/util/goid.go | 0 {Wox => wox.core}/util/goroutine.go | 0 {Wox => wox.core}/util/hashmap.go | 0 {Wox => wox.core}/util/hotkey/hotkey.go | 0 .../util/hotkey/hotkey_darwin.go | 0 .../util/hotkey/hotkey_double.go | 0 {Wox => wox.core}/util/hotkey/hotkey_linux.go | 0 .../util/hotkey/hotkey_windows.go | 0 {Wox => wox.core}/util/http.go | 0 {Wox => wox.core}/util/ime/ime_darwin.go | 0 {Wox => wox.core}/util/ime/ime_darwin.m | 0 {Wox => wox.core}/util/ime/ime_linux.go | 0 {Wox => wox.core}/util/ime/ime_windows.go | 0 {Wox => wox.core}/util/keyboard/keyboard.go | 0 .../util/keyboard/keyboard_darwin.go | 0 .../util/keyboard/keyboard_linux.go | 0 .../util/keyboard/keyboard_windows.go | 0 {Wox => wox.core}/util/location.go | 0 {Wox => wox.core}/util/log.go | 0 {Wox => wox.core}/util/lumberjack.go | 0 {Wox => wox.core}/util/math.go | 0 {Wox => wox.core}/util/md5.go | 0 {Wox => wox.core}/util/menus/menus_darwin.go | 0 {Wox => wox.core}/util/menus/menus_darwin.m | 0 {Wox => wox.core}/util/net.go | 0 {Wox => wox.core}/util/notifier/notify.go | 0 .../util/notifier/notify_darwin.go | 0 .../util/notifier/notify_darwin.m | 0 .../util/notifier/notify_linux.go | 0 .../util/notifier/notify_windows.c | 0 .../util/notifier/notify_windows.go | 0 {Wox => wox.core}/util/open_darwin.go | 0 {Wox => wox.core}/util/open_darwin_test.go | 0 {Wox => wox.core}/util/open_linux.go | 0 {Wox => wox.core}/util/open_windows.go | 0 {Wox => wox.core}/util/os.go | 0 .../util/permission/permission_darwin.go | 0 .../util/permission/permission_linux.go | 0 .../util/permission/permission_windows.go | 0 {Wox => wox.core}/util/pinyin.go | 0 {Wox => wox.core}/util/pinyin_dict.go | 0 {Wox => wox.core}/util/regex.go | 0 {Wox => wox.core}/util/screen/screen.go | 0 .../util/screen/screen_darwin.go | 0 {Wox => wox.core}/util/screen/screen_darwin.m | 0 {Wox => wox.core}/util/screen/screen_linux.go | 0 .../util/screen/screen_windows.go | 0 {Wox => wox.core}/util/selection.go | 0 {Wox => wox.core}/util/strings.go | 0 {Wox => wox.core}/util/strings_test.go | 0 {Wox => wox.core}/util/time.go | 0 {Wox => wox.core}/util/tray/tray.go | 0 {Wox => wox.core}/util/tray/tray_darwin.go | 0 {Wox => wox.core}/util/tray/tray_darwin.m | 0 {Wox => wox.core}/util/tray/tray_linux.c | 0 {Wox => wox.core}/util/tray/tray_linux.go | 0 {Wox => wox.core}/util/tray/tray_windows.c | 0 {Wox => wox.core}/util/tray/tray_windows.go | 0 {Wox => wox.core}/util/websocket_client.go | 0 {Wox => wox.core}/util/window/window.go | 0 .../util/window/window_darwin.go | 0 {Wox => wox.core}/util/window/window_darwin.m | 0 {Wox => wox.core}/util/window/window_linux.go | 0 .../util/window/window_windows.c | 0 .../util/window/window_windows.go | 0 {Wox => wox.core}/util/zip.go | 0 .../.babelrc | 0 .../.eslintignore | 0 .../.eslintrc | 0 .../.gitignore | 0 .../.prettierrc.json | 0 wox.plugin.host.nodejs/Makefile | 21 + .../README.md | 0 .../package.json | 4 +- .../pnpm-lock.yaml | 0 .../src/index.ts | 0 .../src/jsonrpc.ts | 0 .../src/logger.ts | 0 .../src/pluginAPI.ts | 0 .../src/trace.ts | 0 .../src/types.ts | 0 .../tsconfig.json | 0 .../.python-version | 0 wox.plugin.host.python/Makefile | 28 + .../README.md | 0 wox.plugin.host.python/pyproject.toml | 20 + .../src/wox_plugin_host/__init__.py | 0 .../src/wox_plugin_host}/__main__.py | 0 .../src/wox_plugin_host}/constants.py | 0 .../src/wox_plugin_host}/host.py | 0 .../src/wox_plugin_host}/jsonrpc.py | 218 +++-- .../src/wox_plugin_host}/logger.py | 0 .../src/wox_plugin_host}/plugin_api.py | 100 +- .../src/wox_plugin_host}/plugin_manager.py | 0 wox.plugin.host.python/uv.lock | 355 ++++++++ .../.eslintignore | 0 .../.eslintrc | 0 .../.gitignore | 0 .../.prettierrc.json | 0 wox.plugin.nodejs/Makefile | 21 + .../README.md | 0 .../package.json | 2 +- .../pnpm-lock.yaml | 0 .../src/context.ts | 0 .../src/image.ts | 0 .../src/index.ts | 0 .../tsconfig.json | 0 .../types/ai.d.ts | 0 .../types/index.d.ts | 0 .../types/setting.d.ts | 0 .../.python-version | 0 wox.plugin.python/Makefile | 23 + wox.plugin.python/README.md | 48 + wox.plugin.python/pyproject.toml | 33 + wox.plugin.python/src/wox_plugin/__init__.py | 83 ++ wox.plugin.python/src/wox_plugin/api.py | 79 ++ .../src/wox_plugin/exceptions.py | 22 + .../src/wox_plugin/models/context.py | 27 + .../src/wox_plugin/models/query.py | 48 + .../src/wox_plugin/models/result.py | 91 ++ .../src/wox_plugin/models/settings.py | 48 + wox.plugin.python/src/wox_plugin/plugin.py | 42 + wox.plugin.python/src/wox_plugin/py.typed | 1 + wox.plugin.python/src/wox_plugin/types.py | 70 ++ .../src/wox_plugin/utils/helpers.py | 7 + wox.plugin.python/uv.lock | 857 ++++++++++++++++++ .../wox/.gitignore | 0 .../wox/.metadata | 0 wox.ui.flutter/wox/Makefile | 39 + .../wox/README.md | 0 .../wox/analysis_options.yaml | 0 .../assets/fonts/SF-Pro-Display-Regular.otf | Bin .../wox/lib/api/wox_api.dart | 0 .../wox_setting_plugin_checkbox_view.dart | 0 .../plugin/wox_setting_plugin_head_view.dart | 0 .../plugin/wox_setting_plugin_item_view.dart | 0 .../plugin/wox_setting_plugin_label_view.dart | 0 .../wox_setting_plugin_newline_view.dart | 0 ...x_setting_plugin_select_ai_model_view.dart | 0 .../wox_setting_plugin_select_view.dart | 0 .../wox_setting_plugin_table_update_view.dart | 0 .../plugin/wox_setting_plugin_table_view.dart | 0 .../wox_setting_plugin_textbox_view.dart | 0 .../components/wox_hotkey_recorder_view.dart | 0 .../wox/lib/components/wox_hotkey_view.dart | 0 .../wox/lib/components/wox_image_view.dart | 0 .../lib/components/wox_list_item_view.dart | 0 .../wox/lib/components/wox_preview_view.dart | 0 .../lib/components/wox_theme_icon_view.dart | 0 .../wox/lib/components/wox_theme_preview.dart | 0 .../wox/lib/components/wox_tooltip_view.dart | 0 .../setting/wox_plugin_setting_checkbox.dart | 0 .../setting/wox_plugin_setting_head.dart | 0 .../setting/wox_plugin_setting_label.dart | 0 .../setting/wox_plugin_setting_newline.dart | 0 .../setting/wox_plugin_setting_select.dart | 0 .../wox_plugin_setting_select_ai_model.dart | 0 .../setting/wox_plugin_setting_table.dart | 0 .../setting/wox_plugin_setting_textbox.dart | 0 .../validator/wox_setting_validator.dart | 0 .../wox_setting_validator_is_number.dart | 0 .../wox_setting_validator_not_empty.dart | 0 .../wox/lib/entity/wox_ai.dart | 0 .../wox/lib/entity/wox_hotkey.dart | 0 .../wox/lib/entity/wox_image.dart | 0 .../wox/lib/entity/wox_lang.dart | 0 .../wox/lib/entity/wox_plugin.dart | 0 .../wox/lib/entity/wox_plugin_setting.dart | 0 .../wox/lib/entity/wox_preview.dart | 0 .../wox/lib/entity/wox_query.dart | 0 .../wox/lib/entity/wox_response.dart | 0 .../wox/lib/entity/wox_setting.dart | 0 .../wox/lib/entity/wox_theme.dart | 0 .../wox/lib/entity/wox_toolbar.dart | 0 .../wox/lib/entity/wox_websocket_msg.dart | 0 .../wox/lib/enums/wox_direction_enum.dart | 0 .../lib/enums/wox_event_device_type_enum.dart | 0 .../wox/lib/enums/wox_image_type_enum.dart | 0 .../lib/enums/wox_last_query_mode_enum.dart | 0 .../lib/enums/wox_list_view_type_enum.dart | 0 .../wox/lib/enums/wox_msg_method_enum.dart | 0 .../wox/lib/enums/wox_msg_type_enum.dart | 0 .../wox/lib/enums/wox_position_type_enum.dart | 0 .../wox_preview_scroll_position_enum.dart | 0 .../wox/lib/enums/wox_preview_type_enum.dart | 0 .../wox/lib/enums/wox_query_type_enum.dart | 0 .../lib/enums/wox_result_tail_type_enum.dart | 0 .../lib/enums/wox_selection_type_enum.dart | 0 .../wox/lib/main.dart | 0 .../launcher/views/wox_launcher_view.dart | 0 .../launcher/views/wox_query_box_view.dart | 0 .../launcher/views/wox_query_result_view.dart | 0 .../views/wox_query_toolbar_view.dart | 0 .../launcher/wox_launcher_controller.dart | 0 .../setting/views/wox_setting_ai_view.dart | 0 .../views/wox_setting_general_view.dart | 0 .../views/wox_setting_plugin_view.dart | 0 .../setting/views/wox_setting_theme_view.dart | 0 .../setting/views/wox_setting_view.dart | 0 .../setting/wox_setting_controller.dart | 0 .../lib/services/linux_window_manager.dart | 0 .../wox/lib/utils/colors.dart | 0 .../wox/lib/utils/consts.dart | 0 .../wox/lib/utils/entity_factory.dart | 0 .../wox/lib/utils/env.dart | 0 .../wox/lib/utils/heartbeat_checker.dart | 0 .../wox/lib/utils/linux_window_manager.dart | 0 .../wox/lib/utils/log.dart | 0 .../wox/lib/utils/picker.dart | 0 .../wox/lib/utils/wox_http_util.dart | 0 .../wox/lib/utils/wox_setting_util.dart | 0 .../wox/lib/utils/wox_theme_util.dart | 0 .../wox/lib/utils/wox_websocket_msg_util.dart | 0 .../wox/linux/.gitignore | 0 .../wox/linux/CMakeLists.txt | 0 .../wox/linux/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../wox/linux/flutter/generated_plugins.cmake | 0 .../wox/linux/gtk_window.cc | 0 .../wox/linux/gtk_window.h | 0 .../wox/linux/main.cc | 0 .../wox/linux/my_application.cc | 0 .../wox/linux/my_application.h | 0 .../wox/macos/.gitignore | 0 .../wox/macos/Flutter/Flutter-Debug.xcconfig | 0 .../macos/Flutter/Flutter-Release.xcconfig | 0 .../Flutter/GeneratedPluginRegistrant.swift | 0 .../wox/macos/Podfile | 0 .../wox/macos/Podfile.lock | 0 .../macos/Runner.xcodeproj/project.pbxproj | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../wox/macos/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/app_icon_1024.png | Bin .../AppIcon.appiconset/app_icon_128.png | Bin .../AppIcon.appiconset/app_icon_16.png | Bin .../AppIcon.appiconset/app_icon_256.png | Bin .../AppIcon.appiconset/app_icon_32.png | Bin .../AppIcon.appiconset/app_icon_512.png | Bin .../AppIcon.appiconset/app_icon_64.png | Bin .../wox/macos/Runner/Base.lproj/MainMenu.xib | 0 .../wox/macos/Runner/Configs/AppInfo.xcconfig | 0 .../wox/macos/Runner/Configs/Debug.xcconfig | 0 .../wox/macos/Runner/Configs/Release.xcconfig | 0 .../macos/Runner/Configs/Warnings.xcconfig | 0 .../macos/Runner/DebugProfile.entitlements | 0 .../wox/macos/Runner/Info.plist | 0 .../wox/macos/Runner/MainFlutterWindow.swift | 0 .../wox/macos/Runner/Release.entitlements | 0 .../wox/macos/RunnerTests/RunnerTests.swift | 0 .../wox/pubspec.lock | 4 +- .../wox/pubspec.yaml | 0 .../wox/windows/.gitignore | 0 .../wox/windows/CMakeLists.txt | 0 .../wox/windows/flutter/CMakeLists.txt | 0 .../flutter/generated_plugin_registrant.cc | 0 .../flutter/generated_plugin_registrant.h | 0 .../windows/flutter/generated_plugins.cmake | 0 .../wox/windows/runner/CMakeLists.txt | 0 .../wox/windows/runner/Runner.rc | 0 .../wox/windows/runner/flutter_window.cpp | 0 .../wox/windows/runner/flutter_window.h | 0 .../wox/windows/runner/main.cpp | 0 .../wox/windows/runner/resource.h | 0 .../wox/windows/runner/resources/app_icon.ico | Bin .../wox/windows/runner/runner.exe.manifest | 0 .../wox/windows/runner/utils.cpp | 0 .../wox/windows/runner/utils.h | 0 .../wox/windows/runner/win32_window.cpp | 0 .../wox/windows/runner/win32_window.h | 0 441 files changed, 2413 insertions(+), 1605 deletions(-) create mode 100644 Makefile delete mode 100644 Wox.Plugin.Host.Python/Makefile delete mode 100644 Wox.Plugin.Host.Python/pyproject.toml delete mode 100644 Wox.Plugin.Host.Python/uv.lock delete mode 100644 Wox.Plugin.Python/Makefile delete mode 100644 Wox.Plugin.Python/README.md delete mode 100644 Wox.Plugin.Python/publish.py delete mode 100644 Wox.Plugin.Python/pyproject.toml delete mode 100644 Wox.Plugin.Python/setup.py delete mode 100644 Wox.Plugin.Python/uv.lock delete mode 100644 Wox.Plugin.Python/wox_plugin/__init__.py delete mode 100644 Wox.Plugin.Python/wox_plugin/types.py create mode 100644 Wox.code-workspace rename {Assets => assets}/app.ico (100%) rename {Assets => assets}/app.png (100%) rename {Assets => assets}/app.psd (100%) rename {Assets => assets}/mac/Info.plist (100%) rename {Assets => assets}/mac/app.icns (100%) rename {CI => ci}/go.mod (100%) rename {CI => ci}/go.sum (100%) rename {CI => ci}/plugin.go (100%) delete mode 100644 justfile create mode 100644 wox.core/Makefile rename {Wox => wox.core}/ai/conversation.go (100%) rename {Wox => wox.core}/ai/model.go (100%) rename {Wox => wox.core}/ai/provider.go (100%) rename {Wox => wox.core}/ai/provider_google.go (100%) rename {Wox => wox.core}/ai/provider_groq.go (100%) rename {Wox => wox.core}/ai/provider_ollama.go (100%) rename {Wox => wox.core}/ai/provider_openai.go (100%) rename {Wox => wox.core}/go.mod (100%) rename {Wox => wox.core}/go.sum (100%) rename {Wox => wox.core}/i18n/lang.go (100%) rename {Wox => wox.core}/i18n/manager.go (100%) rename {Wox => wox.core}/main.go (100%) rename {Wox => wox.core}/plugin/api.go (100%) create mode 100644 wox.core/plugin/cache/images/emoji_1f6ab.png rename {Wox => wox.core}/plugin/doctor.go (100%) rename {Wox => wox.core}/plugin/host.go (100%) rename {Wox => wox.core}/plugin/host/host_nodejs.go (100%) rename {Wox => wox.core}/plugin/host/host_python.go (100%) rename {Wox => wox.core}/plugin/host/host_websocket.go (100%) rename {Wox => wox.core}/plugin/host/host_websocket_plugin.go (100%) rename {Wox => wox.core}/plugin/host/jsonrpc.go (100%) rename {Wox => wox.core}/plugin/icons.go (100%) rename {Wox => wox.core}/plugin/image.go (100%) rename {Wox => wox.core}/plugin/image_test.go (100%) rename {Wox => wox.core}/plugin/instance.go (100%) rename {Wox => wox.core}/plugin/manager.go (100%) rename {Wox => wox.core}/plugin/manager_test.go (100%) rename {Wox => wox.core}/plugin/metadata.go (100%) rename {Wox => wox.core}/plugin/os.go (100%) rename {Wox => wox.core}/plugin/platform.go (100%) rename {Wox => wox.core}/plugin/plugin.go (100%) rename {Wox => wox.core}/plugin/preview.go (100%) rename {Wox => wox.core}/plugin/query.go (100%) rename {Wox => wox.core}/plugin/query_test.go (100%) rename {Wox => wox.core}/plugin/refresh.go (100%) rename {Wox => wox.core}/plugin/runtime.go (100%) rename {Wox => wox.core}/plugin/store.go (100%) rename {Wox => wox.core}/plugin/system/ai_command.go (100%) rename {Wox => wox.core}/plugin/system/app/app.go (100%) rename {Wox => wox.core}/plugin/system/app/app_darwin.go (100%) rename {Wox => wox.core}/plugin/system/app/app_darwin.m (100%) rename {Wox => wox.core}/plugin/system/app/app_darwin_test.go (100%) rename {Wox => wox.core}/plugin/system/app/app_icons_darwin.go (100%) rename {Wox => wox.core}/plugin/system/app/app_linux.go (100%) rename {Wox => wox.core}/plugin/system/app/app_windows.go (100%) rename {Wox => wox.core}/plugin/system/app/retriever.go (100%) rename {Wox => wox.core}/plugin/system/backup.go (100%) rename {Wox => wox.core}/plugin/system/browser.go (100%) rename {Wox => wox.core}/plugin/system/browser_bookmark.go (100%) rename {Wox => wox.core}/plugin/system/calculator/README.md (100%) rename {Wox => wox.core}/plugin/system/calculator/calculator.go (100%) rename {Wox => wox.core}/plugin/system/calculator/calculator_plugin.go (100%) rename {Wox => wox.core}/plugin/system/calculator/parser.go (100%) rename {Wox => wox.core}/plugin/system/calculator/tokenizer.go (100%) rename {Wox => wox.core}/plugin/system/clipboard.go (100%) rename {Wox => wox.core}/plugin/system/doctor.go (100%) rename {Wox => wox.core}/plugin/system/file/plugin.go (100%) rename {Wox => wox.core}/plugin/system/file/searcher.go (100%) rename {Wox => wox.core}/plugin/system/file/searcher_darwin.go (100%) rename {Wox => wox.core}/plugin/system/file/searcher_linux.go (100%) rename {Wox => wox.core}/plugin/system/file/searcher_windows.go (100%) rename {Wox => wox.core}/plugin/system/indicator.go (100%) rename {Wox => wox.core}/plugin/system/menus_darwin.go (100%) rename {Wox => wox.core}/plugin/system/plugin_installer.go (100%) rename {Wox => wox.core}/plugin/system/query_history.go (100%) rename {Wox => wox.core}/plugin/system/selection.go (100%) rename {Wox => wox.core}/plugin/system/sys.go (100%) rename {Wox => wox.core}/plugin/system/theme.go (100%) rename {Wox => wox.core}/plugin/system/url.go (100%) rename {Wox => wox.core}/plugin/system/url_test.go (100%) rename {Wox => wox.core}/plugin/system/util.go (100%) rename {Wox => wox.core}/plugin/system/websearch.go (100%) rename {Wox => wox.core}/plugin/system/wpm.go (100%) rename {Wox => wox.core}/resource/app.ico (100%) rename {Wox => wox.core}/resource/app.png (100%) rename {Wox => wox.core}/resource/lang/en_US.json (100%) rename {Wox => wox.core}/resource/lang/zh_CN.json (100%) rename {Wox => wox.core}/resource/resource.go (100%) rename {Wox => wox.core}/resource/ui/themes/dark.json (100%) rename {Wox => wox.core}/resource/ui/themes/light.json (100%) rename {Wox => wox.core}/resource/ui/themes/macaroon delight.json (100%) rename {Wox => wox.core}/resource/ui/themes/morandi dream.json (100%) rename {Wox => wox.core}/resource/ui/themes/rococo dream.json (100%) rename {Wox => wox.core}/rsrc_windows.syso (100%) rename {Wox => wox.core}/setting/backup_restore.go (100%) rename {Wox => wox.core}/setting/definition/definition.go (100%) rename {Wox => wox.core}/setting/definition/definition_checkbox.go (100%) rename {Wox => wox.core}/setting/definition/definition_dynamic.go (100%) rename {Wox => wox.core}/setting/definition/definition_head.go (100%) rename {Wox => wox.core}/setting/definition/definition_label.go (100%) rename {Wox => wox.core}/setting/definition/definition_newline.go (100%) rename {Wox => wox.core}/setting/definition/definition_select.go (100%) rename {Wox => wox.core}/setting/definition/definition_select_ai_model.go (100%) rename {Wox => wox.core}/setting/definition/definition_table.go (100%) rename {Wox => wox.core}/setting/definition/definition_textbox.go (100%) rename {Wox => wox.core}/setting/manager.go (100%) rename {Wox => wox.core}/setting/platform_setting_value.go (100%) rename {Wox => wox.core}/setting/plugin_setting.go (100%) rename {Wox => wox.core}/setting/plugin_setting_test.go (100%) rename {Wox => wox.core}/setting/validator/validator.go (100%) rename {Wox => wox.core}/setting/validator/validator_is_number.go (100%) rename {Wox => wox.core}/setting/validator/validator_not_empty.go (100%) rename {Wox => wox.core}/setting/wox_app_data.go (100%) rename {Wox => wox.core}/setting/wox_setting.go (100%) rename {Wox => wox.core}/share/theme.go (100%) rename {Wox => wox.core}/share/ui.go (100%) rename {Wox => wox.core}/ui/dto/plugin_dto.go (100%) rename {Wox => wox.core}/ui/dto/setting_dto.go (100%) rename {Wox => wox.core}/ui/dto/theme_dto.go (100%) rename {Wox => wox.core}/ui/http.go (100%) rename {Wox => wox.core}/ui/manager.go (100%) rename {Wox => wox.core}/ui/position.go (100%) rename {Wox => wox.core}/ui/router.go (100%) rename {Wox => wox.core}/ui/store.go (100%) rename {Wox => wox.core}/ui/ui_impl.go (100%) rename {Wox => wox.core}/updater/updater.go (100%) rename {Wox => wox.core}/updater/version.go (100%) rename {Wox => wox.core}/util/airdrop/airdrop.go (100%) rename {Wox => wox.core}/util/airdrop/airdrop_darwin.go (100%) rename {Wox => wox.core}/util/airdrop/airdrop_darwin.m (100%) rename {Wox => wox.core}/util/autostart/autostart.go (100%) rename {Wox => wox.core}/util/autostart/autostart_darwin.go (100%) rename {Wox => wox.core}/util/autostart/autostart_linux.go (100%) rename {Wox => wox.core}/util/autostart/autostart_windows.go (100%) rename {Wox => wox.core}/util/clipboard/clipboad_test.go (100%) rename {Wox => wox.core}/util/clipboard/clipboard.go (100%) rename {Wox => wox.core}/util/clipboard/clipboard_darwin.go (100%) rename {Wox => wox.core}/util/clipboard/clipboard_darwin.m (100%) rename {Wox => wox.core}/util/clipboard/clipboard_linux.go (100%) rename {Wox => wox.core}/util/clipboard/clipboard_windows.go (100%) rename {Wox => wox.core}/util/context.go (100%) rename {Wox => wox.core}/util/debounce.go (100%) rename {Wox => wox.core}/util/debounce_test.go (100%) rename {Wox => wox.core}/util/dev.go (100%) rename {Wox => wox.core}/util/directory.go (100%) rename {Wox => wox.core}/util/file.go (100%) rename {Wox => wox.core}/util/file_darwin.go (100%) rename {Wox => wox.core}/util/file_linux.go (100%) rename {Wox => wox.core}/util/file_watcher.go (100%) rename {Wox => wox.core}/util/file_windows.go (100%) rename {Wox => wox.core}/util/goid.go (100%) rename {Wox => wox.core}/util/goroutine.go (100%) rename {Wox => wox.core}/util/hashmap.go (100%) rename {Wox => wox.core}/util/hotkey/hotkey.go (100%) rename {Wox => wox.core}/util/hotkey/hotkey_darwin.go (100%) rename {Wox => wox.core}/util/hotkey/hotkey_double.go (100%) rename {Wox => wox.core}/util/hotkey/hotkey_linux.go (100%) rename {Wox => wox.core}/util/hotkey/hotkey_windows.go (100%) rename {Wox => wox.core}/util/http.go (100%) rename {Wox => wox.core}/util/ime/ime_darwin.go (100%) rename {Wox => wox.core}/util/ime/ime_darwin.m (100%) rename {Wox => wox.core}/util/ime/ime_linux.go (100%) rename {Wox => wox.core}/util/ime/ime_windows.go (100%) rename {Wox => wox.core}/util/keyboard/keyboard.go (100%) rename {Wox => wox.core}/util/keyboard/keyboard_darwin.go (100%) rename {Wox => wox.core}/util/keyboard/keyboard_linux.go (100%) rename {Wox => wox.core}/util/keyboard/keyboard_windows.go (100%) rename {Wox => wox.core}/util/location.go (100%) rename {Wox => wox.core}/util/log.go (100%) rename {Wox => wox.core}/util/lumberjack.go (100%) rename {Wox => wox.core}/util/math.go (100%) rename {Wox => wox.core}/util/md5.go (100%) rename {Wox => wox.core}/util/menus/menus_darwin.go (100%) rename {Wox => wox.core}/util/menus/menus_darwin.m (100%) rename {Wox => wox.core}/util/net.go (100%) rename {Wox => wox.core}/util/notifier/notify.go (100%) rename {Wox => wox.core}/util/notifier/notify_darwin.go (100%) rename {Wox => wox.core}/util/notifier/notify_darwin.m (100%) rename {Wox => wox.core}/util/notifier/notify_linux.go (100%) rename {Wox => wox.core}/util/notifier/notify_windows.c (100%) rename {Wox => wox.core}/util/notifier/notify_windows.go (100%) rename {Wox => wox.core}/util/open_darwin.go (100%) rename {Wox => wox.core}/util/open_darwin_test.go (100%) rename {Wox => wox.core}/util/open_linux.go (100%) rename {Wox => wox.core}/util/open_windows.go (100%) rename {Wox => wox.core}/util/os.go (100%) rename {Wox => wox.core}/util/permission/permission_darwin.go (100%) rename {Wox => wox.core}/util/permission/permission_linux.go (100%) rename {Wox => wox.core}/util/permission/permission_windows.go (100%) rename {Wox => wox.core}/util/pinyin.go (100%) rename {Wox => wox.core}/util/pinyin_dict.go (100%) rename {Wox => wox.core}/util/regex.go (100%) rename {Wox => wox.core}/util/screen/screen.go (100%) rename {Wox => wox.core}/util/screen/screen_darwin.go (100%) rename {Wox => wox.core}/util/screen/screen_darwin.m (100%) rename {Wox => wox.core}/util/screen/screen_linux.go (100%) rename {Wox => wox.core}/util/screen/screen_windows.go (100%) rename {Wox => wox.core}/util/selection.go (100%) rename {Wox => wox.core}/util/strings.go (100%) rename {Wox => wox.core}/util/strings_test.go (100%) rename {Wox => wox.core}/util/time.go (100%) rename {Wox => wox.core}/util/tray/tray.go (100%) rename {Wox => wox.core}/util/tray/tray_darwin.go (100%) rename {Wox => wox.core}/util/tray/tray_darwin.m (100%) rename {Wox => wox.core}/util/tray/tray_linux.c (100%) rename {Wox => wox.core}/util/tray/tray_linux.go (100%) rename {Wox => wox.core}/util/tray/tray_windows.c (100%) rename {Wox => wox.core}/util/tray/tray_windows.go (100%) rename {Wox => wox.core}/util/websocket_client.go (100%) rename {Wox => wox.core}/util/window/window.go (100%) rename {Wox => wox.core}/util/window/window_darwin.go (100%) rename {Wox => wox.core}/util/window/window_darwin.m (100%) rename {Wox => wox.core}/util/window/window_linux.go (100%) rename {Wox => wox.core}/util/window/window_windows.c (100%) rename {Wox => wox.core}/util/window/window_windows.go (100%) rename {Wox => wox.core}/util/zip.go (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/.babelrc (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/.eslintignore (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/.eslintrc (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/.gitignore (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/.prettierrc.json (100%) create mode 100644 wox.plugin.host.nodejs/Makefile rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/README.md (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/package.json (93%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/pnpm-lock.yaml (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/src/index.ts (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/src/jsonrpc.ts (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/src/logger.ts (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/src/pluginAPI.ts (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/src/trace.ts (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/src/types.ts (100%) rename {Wox.Plugin.Host.Nodejs => wox.plugin.host.nodejs}/tsconfig.json (100%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python}/.python-version (100%) create mode 100644 wox.plugin.host.python/Makefile rename {Wox.Plugin.Host.Python => wox.plugin.host.python}/README.md (100%) create mode 100644 wox.plugin.host.python/pyproject.toml rename Wox.Plugin.Python/wox_plugin/py.typed => wox.plugin.host.python/src/wox_plugin_host/__init__.py (100%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/__main__.py (100%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/constants.py (100%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/host.py (100%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/jsonrpc.py (62%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/logger.py (100%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/plugin_api.py (63%) rename {Wox.Plugin.Host.Python => wox.plugin.host.python/src/wox_plugin_host}/plugin_manager.py (100%) create mode 100644 wox.plugin.host.python/uv.lock rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/.eslintignore (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/.eslintrc (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/.gitignore (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/.prettierrc.json (100%) create mode 100644 wox.plugin.nodejs/Makefile rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/README.md (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/package.json (97%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/pnpm-lock.yaml (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/src/context.ts (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/src/image.ts (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/src/index.ts (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/tsconfig.json (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/types/ai.d.ts (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/types/index.d.ts (100%) rename {Wox.Plugin.Nodejs => wox.plugin.nodejs}/types/setting.d.ts (100%) rename {Wox.Plugin.Python => wox.plugin.python}/.python-version (100%) create mode 100644 wox.plugin.python/Makefile create mode 100644 wox.plugin.python/README.md create mode 100644 wox.plugin.python/pyproject.toml create mode 100644 wox.plugin.python/src/wox_plugin/__init__.py create mode 100644 wox.plugin.python/src/wox_plugin/api.py create mode 100644 wox.plugin.python/src/wox_plugin/exceptions.py create mode 100644 wox.plugin.python/src/wox_plugin/models/context.py create mode 100644 wox.plugin.python/src/wox_plugin/models/query.py create mode 100644 wox.plugin.python/src/wox_plugin/models/result.py create mode 100644 wox.plugin.python/src/wox_plugin/models/settings.py create mode 100644 wox.plugin.python/src/wox_plugin/plugin.py create mode 100644 wox.plugin.python/src/wox_plugin/py.typed create mode 100644 wox.plugin.python/src/wox_plugin/types.py create mode 100644 wox.plugin.python/src/wox_plugin/utils/helpers.py create mode 100644 wox.plugin.python/uv.lock rename {Wox.UI.Flutter => wox.ui.flutter}/wox/.gitignore (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/.metadata (100%) create mode 100644 wox.ui.flutter/wox/Makefile rename {Wox.UI.Flutter => wox.ui.flutter}/wox/README.md (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/analysis_options.yaml (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/assets/fonts/SF-Pro-Display-Regular.otf (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/api/wox_api.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_checkbox_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_head_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_item_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_label_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_newline_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_select_ai_model_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_select_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_table_update_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_table_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/plugin/wox_setting_plugin_textbox_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_hotkey_recorder_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_hotkey_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_image_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_list_item_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_preview_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_theme_icon_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_theme_preview.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/components/wox_tooltip_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_checkbox.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_head.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_label.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_newline.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_select.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_select_ai_model.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_table.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/setting/wox_plugin_setting_textbox.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/validator/wox_setting_validator.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/validator/wox_setting_validator_is_number.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/validator/wox_setting_validator_not_empty.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_ai.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_hotkey.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_image.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_lang.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_plugin.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_plugin_setting.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_preview.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_query.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_response.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_setting.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_theme.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_toolbar.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/entity/wox_websocket_msg.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_direction_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_event_device_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_image_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_last_query_mode_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_list_view_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_msg_method_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_msg_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_position_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_preview_scroll_position_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_preview_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_query_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_result_tail_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/enums/wox_selection_type_enum.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/main.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/launcher/views/wox_launcher_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/launcher/views/wox_query_box_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/launcher/views/wox_query_result_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/launcher/views/wox_query_toolbar_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/launcher/wox_launcher_controller.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/setting/views/wox_setting_ai_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/setting/views/wox_setting_general_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/setting/views/wox_setting_plugin_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/setting/views/wox_setting_theme_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/setting/views/wox_setting_view.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/modules/setting/wox_setting_controller.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/services/linux_window_manager.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/colors.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/consts.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/entity_factory.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/env.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/heartbeat_checker.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/linux_window_manager.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/log.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/picker.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/wox_http_util.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/wox_setting_util.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/wox_theme_util.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/lib/utils/wox_websocket_msg_util.dart (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/.gitignore (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/CMakeLists.txt (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/flutter/CMakeLists.txt (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/flutter/generated_plugin_registrant.cc (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/flutter/generated_plugin_registrant.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/flutter/generated_plugins.cmake (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/gtk_window.cc (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/gtk_window.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/main.cc (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/my_application.cc (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/linux/my_application.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/.gitignore (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Flutter/Flutter-Debug.xcconfig (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Flutter/Flutter-Release.xcconfig (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Flutter/GeneratedPluginRegistrant.swift (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Podfile (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Podfile.lock (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner.xcodeproj/project.pbxproj (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/AppDelegate.swift (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Base.lproj/MainMenu.xib (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Configs/AppInfo.xcconfig (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Configs/Debug.xcconfig (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Configs/Release.xcconfig (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Configs/Warnings.xcconfig (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/DebugProfile.entitlements (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Info.plist (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/MainFlutterWindow.swift (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/Runner/Release.entitlements (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/macos/RunnerTests/RunnerTests.swift (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/pubspec.lock (99%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/pubspec.yaml (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/.gitignore (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/CMakeLists.txt (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/flutter/CMakeLists.txt (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/flutter/generated_plugin_registrant.cc (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/flutter/generated_plugin_registrant.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/flutter/generated_plugins.cmake (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/CMakeLists.txt (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/Runner.rc (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/flutter_window.cpp (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/flutter_window.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/main.cpp (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/resource.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/resources/app_icon.ico (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/runner.exe.manifest (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/utils.cpp (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/utils.h (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/win32_window.cpp (100%) rename {Wox.UI.Flutter => wox.ui.flutter}/wox/windows/runner/win32_window.h (100%) diff --git a/.github/workflows/plugin.yml b/.github/workflows/plugin.yml index d28c859f4..1fd5d66bc 100644 --- a/.github/workflows/plugin.yml +++ b/.github/workflows/plugin.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Check plugin updates - run: just ci_plugin + run: make plugins - name: Create Pull Request uses: peter-evans/create-pull-request@v6 with: diff --git a/.gitignore b/.gitignore index 3e3fd3ed2..58c886eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,18 @@ *.diagsession -Output-Performance.txt *.diff .idea .DS_Store publish -Wox/resource/hosts/ -Wox.Plugin.Host.Python/python-host/ -Wox.Plugin.Host.Python/python-host.pyz -Wox.Plugin.Host.Python/venv/ +wox.core/resource/hosts/ +wox.plugin.host.python/python-host/ +wox.plugin.host.python/python-host.pyz *.pyz -Wox/resource/ui/wox -Plugins/Wox.Plugin.Chatgpt/dist/ -Wox/resource/ui/react/ -Wox/resource/ui/electron/ -Wox/resource/ui/flutter/ -Wox.UI.React/dist/ +wox.core/resource/ui/flutter/ node_modules/ __pycache__/ Release/ __debug_bin* -Wox/log/ -Wox.Plugin.Python/dist/ -Wox.Plugin.Python/wox_plugin.egg-info/ \ No newline at end of file +wox.core/log/ +wox.plugin.python/dist/ +wox.plugin.python/wox_plugin.egg-info/ +.venv/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 23e31e59e..52f75b984 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,32 @@ { "dart.lineLength": 200, + "python.languageServer": "Pylance", + "python.analysis.typeCheckingMode": "strict", + "python.analysis.diagnosticMode": "workspace", + "python.analysis.inlayHints.functionReturnTypes": true, + "python.analysis.inlayHints.variableTypes": true, + "python.analysis.autoFormatStrings": true, + "python.analysis.autoImportCompletions": true, + "python.analysis.diagnosticSeverityOverrides": { + "reportUnknownMemberType": "error", + "reportUnknownVariableType": "error", + "reportUnknownArgumentType": "error", + "reportUnknownParameterType": "error", + "reportMissingTypeStubs": "error", + "reportUnknownLambdaType": "error", + "reportOptionalCall": "error", + "reportOptionalMemberAccess": "error", + "reportOptionalSubscript": "error", + "reportOptionalIterable": "error", + "reportOptionalContextManager": "error", + "reportOptionalOperand": "error" + }, + "files.exclude": { + "wox.plugin.host.nodejs": true, + "wox.plugin.host.python": true, + "wox.plugin.nodejs": true, + "wox.plugin.python": true, + "wox.ui.flutter": true, + "wox.core": true + } } \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..f379b1215 --- /dev/null +++ b/Makefile @@ -0,0 +1,104 @@ +.PHONY: publish clean _bundle_mac_app plugins help dev test check_deps + +# Determine the current platform +ifeq ($(OS),Windows_NT) + PLATFORM := windows + ARCH := amd64 +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Linux) + PLATFORM := linux + ARCH := amd64 + endif + ifeq ($(UNAME_S),Darwin) + PLATFORM := macos + UNAME_M := $(shell uname -m) + ifeq ($(UNAME_M),arm64) + ARCH := arm64 + else + ARCH := amd64 + endif + endif +endif + +RELEASE_DIR := release + +help: + @echo "Usage: make [target]" + @echo "" + @echo "Targets:" + @echo " help Show this help message" + @echo " dev Setup development environment" + @echo " test Run tests" + @echo " publish Build and publish all components" + @echo " plugins Update plugin store" + @echo " clean Clean release directory" + +_check_deps: + @echo "Checking required dependencies..." + @command -v go >/dev/null 2>&1 || { echo "❌ go is required but not installed. Visit https://golang.org/doc/install" >&2; exit 1; } + @command -v flutter >/dev/null 2>&1 || { echo "❌ flutter is required but not installed. Visit https://flutter.dev/docs/get-started/install" >&2; exit 1; } + @command -v node >/dev/null 2>&1 || { echo "❌ nodejs is required but not installed. Visit https://nodejs.org/" >&2; exit 1; } + @command -v pnpm >/dev/null 2>&1 || { echo "❌ pnpm is required but not installed. Run: npm install -g pnpm" >&2; exit 1; } + @command -v uv >/dev/null 2>&1 || { echo "❌ uv is required but not installed. Visit https://github.com/astral-sh/uv" >&2; exit 1; } +ifeq ($(PLATFORM),macos) + @command -v create-dmg >/dev/null 2>&1 || { echo "❌ create-dmg is required but not installed. Visit https://github.com/create-dmg/create-dmg" >&2; exit 1; } +else + @command -v upx >/dev/null 2>&1 || { echo "❌ upx is required but not installed. Visit https://upx.github.io/" >&2; exit 1; } +endif + +clean: + rm -rf $(RELEASE_DIR) + +plugins: + cd ci && go run plugin.go + +dev: _check_deps + # Install lefthook + go install github.com/evilmartians/lefthook@latest + lefthook install -f + + # Build hosts and flutter + $(MAKE) -C wox.plugin.host.nodejs build + $(MAKE) -C wox.plugin.host.python build + $(MAKE) -C wox.ui.flutter/wox build + +test: dev + cd wox.core && go test ./... + +publish: clean dev + $(MAKE) -C wox.core build + +ifeq ($(PLATFORM),windows) + upx $(RELEASE_DIR)/wox-windows-amd64.exe +else ifeq ($(PLATFORM),linux) + upx $(RELEASE_DIR)/wox-linux-amd64 +else ifeq ($(PLATFORM),macos) + # to make sure the working directory is the release directory + cd $(RELEASE_DIR) && $(MAKE) -f ../Makefile _bundle_mac_app APP_NAME=wox-mac-$(ARCH) +endif + +_bundle_mac_app: + chmod +x $(APP_NAME) + rm -rf $(APP_NAME).app Wox.app + mkdir -p $(APP_NAME).app/Contents/MacOS + mkdir -p $(APP_NAME).app/Contents/Resources + cp $(APP_NAME) $(APP_NAME).app/Contents/MacOS/wox + cp ../assets/mac/Info.plist $(APP_NAME).app/Contents/Info.plist + cp ../assets/mac/app.icns $(APP_NAME).app/Contents/Resources/app.icns + mv $(APP_NAME).app Wox.app + security unlock-keychain -p $(KEYCHAINPWD) login.keychain + codesign --options=runtime --force --deep --sign "Developer ID Application: jiajuan mao (AGYCFD2ZGN)" Wox.app/Contents/MacOS/wox + create-dmg \ + --codesign "Developer ID Application: jiajuan mao (AGYCFD2ZGN)" \ + --notarize "wox" \ + --volname "Wox Installer" \ + --volicon "../assets/mac/app.icns" \ + --window-pos 200 120 \ + --window-size 800 400 \ + --icon-size 100 \ + --icon "Wox.app" 200 190 \ + --hide-extension "Wox.app" \ + --app-drop-link 600 185 \ + Wox.dmg Wox.app + mv "Wox.dmg" $(APP_NAME).dmg \ No newline at end of file diff --git a/Wox.Plugin.Host.Python/Makefile b/Wox.Plugin.Host.Python/Makefile deleted file mode 100644 index 00733ee06..000000000 --- a/Wox.Plugin.Host.Python/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -sync: - uv cache clean && uv sync - -build: sync - just _build_python_host Wox/resource/hosts diff --git a/Wox.Plugin.Host.Python/pyproject.toml b/Wox.Plugin.Host.Python/pyproject.toml deleted file mode 100644 index 39ddae019..000000000 --- a/Wox.Plugin.Host.Python/pyproject.toml +++ /dev/null @@ -1,11 +0,0 @@ -[project] -name = "wox-plugin-host" -version = "0.0.1" -description = "Python host for Wox plugins" -readme = "README.md" -requires-python = ">=3.10" -dependencies = [ - "loguru", - "websockets", - "wox-plugin==0.0.28", -] diff --git a/Wox.Plugin.Host.Python/uv.lock b/Wox.Plugin.Host.Python/uv.lock deleted file mode 100644 index cf32fe83d..000000000 --- a/Wox.Plugin.Host.Python/uv.lock +++ /dev/null @@ -1,118 +0,0 @@ -version = 1 -requires-python = ">=3.10" - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "loguru" -version = "0.7.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "win32-setctime", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 }, -] - -[[package]] -name = "websockets" -version = "14.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f4/1b/380b883ce05bb5f45a905b61790319a28958a9ab1e4b6b95ff5464b60ca1/websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8", size = 162840 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/91/b1b375dbd856fd5fff3f117de0e520542343ecaf4e8fc60f1ac1e9f5822c/websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29", size = 161950 }, - { url = "https://files.pythonhosted.org/packages/61/8f/4d52f272d3ebcd35e1325c646e98936099a348374d4a6b83b524bded8116/websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179", size = 159601 }, - { url = "https://files.pythonhosted.org/packages/c4/b1/29e87b53eb1937992cdee094a0988aadc94f25cf0b37e90c75eed7123d75/websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250", size = 159854 }, - { url = "https://files.pythonhosted.org/packages/3f/e6/752a2f5e8321ae2a613062676c08ff2fccfb37dc837a2ee919178a372e8a/websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0", size = 168835 }, - { url = "https://files.pythonhosted.org/packages/60/27/ca62de7877596926321b99071639275e94bb2401397130b7cf33dbf2106a/websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0", size = 167844 }, - { url = "https://files.pythonhosted.org/packages/7e/db/f556a1d06635c680ef376be626c632e3f2bbdb1a0189d1d1bffb061c3b70/websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199", size = 168157 }, - { url = "https://files.pythonhosted.org/packages/b3/bc/99e5f511838c365ac6ecae19674eb5e94201aa4235bd1af3e6fa92c12905/websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58", size = 168561 }, - { url = "https://files.pythonhosted.org/packages/c6/e7/251491585bad61c79e525ac60927d96e4e17b18447cc9c3cfab47b2eb1b8/websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078", size = 167979 }, - { url = "https://files.pythonhosted.org/packages/ac/98/7ac2e4eeada19bdbc7a3a66a58e3ebdf33648b9e1c5b3f08c3224df168cf/websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434", size = 167925 }, - { url = "https://files.pythonhosted.org/packages/ab/3d/09e65c47ee2396b7482968068f6e9b516221e1032b12dcf843b9412a5dfb/websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10", size = 162831 }, - { url = "https://files.pythonhosted.org/packages/8a/67/59828a3d09740e6a485acccfbb66600632f2178b6ed1b61388ee96f17d5a/websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e", size = 163266 }, - { url = "https://files.pythonhosted.org/packages/97/ed/c0d03cb607b7fe1f7ff45e2cd4bb5cd0f9e3299ced79c2c303a6fff44524/websockets-14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512", size = 161949 }, - { url = "https://files.pythonhosted.org/packages/06/91/bf0a44e238660d37a2dda1b4896235d20c29a2d0450f3a46cd688f43b239/websockets-14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac", size = 159606 }, - { url = "https://files.pythonhosted.org/packages/ff/b8/7185212adad274c2b42b6a24e1ee6b916b7809ed611cbebc33b227e5c215/websockets-14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280", size = 159854 }, - { url = "https://files.pythonhosted.org/packages/5a/8a/0849968d83474be89c183d8ae8dcb7f7ada1a3c24f4d2a0d7333c231a2c3/websockets-14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1", size = 169402 }, - { url = "https://files.pythonhosted.org/packages/bd/4f/ef886e37245ff6b4a736a09b8468dae05d5d5c99de1357f840d54c6f297d/websockets-14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3", size = 168406 }, - { url = "https://files.pythonhosted.org/packages/11/43/e2dbd4401a63e409cebddedc1b63b9834de42f51b3c84db885469e9bdcef/websockets-14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6", size = 168776 }, - { url = "https://files.pythonhosted.org/packages/6d/d6/7063e3f5c1b612e9f70faae20ebaeb2e684ffa36cb959eb0862ee2809b32/websockets-14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0", size = 169083 }, - { url = "https://files.pythonhosted.org/packages/49/69/e6f3d953f2fa0f8a723cf18cd011d52733bd7f6e045122b24e0e7f49f9b0/websockets-14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89", size = 168529 }, - { url = "https://files.pythonhosted.org/packages/70/ff/f31fa14561fc1d7b8663b0ed719996cf1f581abee32c8fb2f295a472f268/websockets-14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23", size = 168475 }, - { url = "https://files.pythonhosted.org/packages/f1/15/b72be0e4bf32ff373aa5baef46a4c7521b8ea93ad8b49ca8c6e8e764c083/websockets-14.1-cp311-cp311-win32.whl", hash = "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e", size = 162833 }, - { url = "https://files.pythonhosted.org/packages/bc/ef/2d81679acbe7057ffe2308d422f744497b52009ea8bab34b6d74a2657d1d/websockets-14.1-cp311-cp311-win_amd64.whl", hash = "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09", size = 163263 }, - { url = "https://files.pythonhosted.org/packages/55/64/55698544ce29e877c9188f1aee9093712411a8fc9732cca14985e49a8e9c/websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed", size = 161957 }, - { url = "https://files.pythonhosted.org/packages/a2/b1/b088f67c2b365f2c86c7b48edb8848ac27e508caf910a9d9d831b2f343cb/websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d", size = 159620 }, - { url = "https://files.pythonhosted.org/packages/c1/89/2a09db1bbb40ba967a1b8225b07b7df89fea44f06de9365f17f684d0f7e6/websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707", size = 159852 }, - { url = "https://files.pythonhosted.org/packages/ca/c1/f983138cd56e7d3079f1966e81f77ce6643f230cd309f73aa156bb181749/websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a", size = 169675 }, - { url = "https://files.pythonhosted.org/packages/c1/c8/84191455d8660e2a0bdb33878d4ee5dfa4a2cedbcdc88bbd097303b65bfa/websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45", size = 168619 }, - { url = "https://files.pythonhosted.org/packages/8d/a7/62e551fdcd7d44ea74a006dc193aba370505278ad76efd938664531ce9d6/websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58", size = 169042 }, - { url = "https://files.pythonhosted.org/packages/ad/ed/1532786f55922c1e9c4d329608e36a15fdab186def3ca9eb10d7465bc1cc/websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058", size = 169345 }, - { url = "https://files.pythonhosted.org/packages/ea/fb/160f66960d495df3de63d9bcff78e1b42545b2a123cc611950ffe6468016/websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4", size = 168725 }, - { url = "https://files.pythonhosted.org/packages/cf/53/1bf0c06618b5ac35f1d7906444b9958f8485682ab0ea40dee7b17a32da1e/websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05", size = 168712 }, - { url = "https://files.pythonhosted.org/packages/e5/22/5ec2f39fff75f44aa626f86fa7f20594524a447d9c3be94d8482cd5572ef/websockets-14.1-cp312-cp312-win32.whl", hash = "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0", size = 162838 }, - { url = "https://files.pythonhosted.org/packages/74/27/28f07df09f2983178db7bf6c9cccc847205d2b92ced986cd79565d68af4f/websockets-14.1-cp312-cp312-win_amd64.whl", hash = "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f", size = 163277 }, - { url = "https://files.pythonhosted.org/packages/34/77/812b3ba5110ed8726eddf9257ab55ce9e85d97d4aa016805fdbecc5e5d48/websockets-14.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9", size = 161966 }, - { url = "https://files.pythonhosted.org/packages/8d/24/4fcb7aa6986ae7d9f6d083d9d53d580af1483c5ec24bdec0978307a0f6ac/websockets-14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b", size = 159625 }, - { url = "https://files.pythonhosted.org/packages/f8/47/2a0a3a2fc4965ff5b9ce9324d63220156bd8bedf7f90824ab92a822e65fd/websockets-14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3", size = 159857 }, - { url = "https://files.pythonhosted.org/packages/dd/c8/d7b425011a15e35e17757e4df75b25e1d0df64c0c315a44550454eaf88fc/websockets-14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59", size = 169635 }, - { url = "https://files.pythonhosted.org/packages/93/39/6e3b5cffa11036c40bd2f13aba2e8e691ab2e01595532c46437b56575678/websockets-14.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2", size = 168578 }, - { url = "https://files.pythonhosted.org/packages/cf/03/8faa5c9576299b2adf34dcccf278fc6bbbcda8a3efcc4d817369026be421/websockets-14.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da", size = 169018 }, - { url = "https://files.pythonhosted.org/packages/8c/05/ea1fec05cc3a60defcdf0bb9f760c3c6bd2dd2710eff7ac7f891864a22ba/websockets-14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9", size = 169383 }, - { url = "https://files.pythonhosted.org/packages/21/1d/eac1d9ed787f80754e51228e78855f879ede1172c8b6185aca8cef494911/websockets-14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7", size = 168773 }, - { url = "https://files.pythonhosted.org/packages/0e/1b/e808685530185915299740d82b3a4af3f2b44e56ccf4389397c7a5d95d39/websockets-14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a", size = 168757 }, - { url = "https://files.pythonhosted.org/packages/b6/19/6ab716d02a3b068fbbeb6face8a7423156e12c446975312f1c7c0f4badab/websockets-14.1-cp313-cp313-win32.whl", hash = "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6", size = 162834 }, - { url = "https://files.pythonhosted.org/packages/6c/fd/ab6b7676ba712f2fc89d1347a4b5bdc6aa130de10404071f2b2606450209/websockets-14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0", size = 163277 }, - { url = "https://files.pythonhosted.org/packages/fb/cd/382a05a1ba2a93bd9fb807716a660751295df72e77204fb130a102fcdd36/websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8", size = 159633 }, - { url = "https://files.pythonhosted.org/packages/b7/a0/fa7c62e2952ef028b422fbf420f9353d9dd4dfaa425de3deae36e98c0784/websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e", size = 159867 }, - { url = "https://files.pythonhosted.org/packages/c1/94/954b4924f868db31d5f0935893c7a8446515ee4b36bb8ad75a929469e453/websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098", size = 161121 }, - { url = "https://files.pythonhosted.org/packages/7a/2e/f12bbb41a8f2abb76428ba4fdcd9e67b5b364a3e7fa97c88f4d6950aa2d4/websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb", size = 160731 }, - { url = "https://files.pythonhosted.org/packages/13/97/b76979401f2373af1fe3e08f960b265cecab112e7dac803446fb98351a52/websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7", size = 160681 }, - { url = "https://files.pythonhosted.org/packages/39/9c/16916d9a436c109a1d7ba78817e8fee357b78968be3f6e6f517f43afa43d/websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d", size = 163316 }, - { url = "https://files.pythonhosted.org/packages/b0/0b/c7e5d11020242984d9d37990310520ed663b942333b83a033c2f20191113/websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e", size = 156277 }, -] - -[[package]] -name = "win32-setctime" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/dd/f95a13d2b235a28d613ba23ebad55191514550debb968b46aab99f2e3a30/win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2", size = 3676 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/e6/a7d828fef907843b2a5773ebff47fb79ac0c1c88d60c0ca9530ee941e248/win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad", size = 3604 }, -] - -[[package]] -name = "wox-plugin" -version = "0.0.28" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/64/27/e7b8b95bf35becb61638e312cfcc7dabbb273c9fe0baa9090ade013f484b/wox_plugin-0.0.28.tar.gz", hash = "sha256:2d8c906f0f591a5f637f7e271e42c28e50c332133c96fc56482417bf98ab25b6", size = 5696 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/66/bb/5148df5df2d11a38a50b35aaea7fcf30ce07f97ac7a8982b0b26f05eb60a/wox_plugin-0.0.28-py3-none-any.whl", hash = "sha256:e9afaed305b8549f7f183174992aea54bffc0e907e804da2fe9b735d5ec8e7c0", size = 5552 }, -] - -[[package]] -name = "wox-plugin-host" -version = "0.0.1" -source = { virtual = "." } -dependencies = [ - { name = "loguru" }, - { name = "websockets" }, - { name = "wox-plugin" }, -] - -[package.metadata] -requires-dist = [ - { name = "loguru" }, - { name = "websockets" }, - { name = "wox-plugin", specifier = "==0.0.28" }, -] diff --git a/Wox.Plugin.Python/Makefile b/Wox.Plugin.Python/Makefile deleted file mode 100644 index 796706b4f..000000000 --- a/Wox.Plugin.Python/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -release: - python publish.py patch \ No newline at end of file diff --git a/Wox.Plugin.Python/README.md b/Wox.Plugin.Python/README.md deleted file mode 100644 index 1921243f3..000000000 --- a/Wox.Plugin.Python/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Wox Plugin Python - -This package provides type definitions for developing Wox plugins in Python. - -## Installation - -```bash -pip install wox-plugin -``` - -## Usage - -```python -from wox_plugin import Plugin, Query, Result, Context, PluginInitParams - -class MyPlugin(Plugin): - async def init(self, ctx: Context, params: PluginInitParams) -> None: - self.api = params.API - - async def query(self, ctx: Context, query: Query) -> list[Result]: - # Your plugin logic here - return [] -``` - -## License - -MIT \ No newline at end of file diff --git a/Wox.Plugin.Python/publish.py b/Wox.Plugin.Python/publish.py deleted file mode 100644 index dbf5fbdfd..000000000 --- a/Wox.Plugin.Python/publish.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env python -import os -import sys -import subprocess -import re -from pathlib import Path - -def run_command(command: str) -> int: - """Run command and return exit code""" - print(f"\n>>> Running: {command}") - return subprocess.call(command, shell=True) - -def update_version(version_type: str) -> str: - """Update version number in setup.py, pyproject.toml and __init__.py - version_type: major, minor, or patch - """ - # Read setup.py - setup_path = Path("setup.py") - content = setup_path.read_text() - - # Find current version - version_match = re.search(r'version="(\d+)\.(\d+)\.(\d+)"', content) - if not version_match: - print("Error: Could not find version in setup.py") - sys.exit(1) - - major, minor, patch = map(int, version_match.groups()) - - # Update version number - if version_type == "major": - major += 1 - minor = 0 - patch = 0 - elif version_type == "minor": - minor += 1 - patch = 0 - else: # patch - patch += 1 - - new_version = f"{major}.{minor}.{patch}" - - # Update setup.py - new_content = re.sub( - r'version="(\d+)\.(\d+)\.(\d+)"', - f'version="{new_version}"', - content - ) - setup_path.write_text(new_content) - - # Update pyproject.toml - pyproject_path = Path("pyproject.toml") - pyproject_content = pyproject_path.read_text() - new_pyproject_content = re.sub( - r'version = "(\d+)\.(\d+)\.(\d+)"', - f'version = "{new_version}"', - pyproject_content - ) - pyproject_path.write_text(new_pyproject_content) - - # Update __init__.py - init_path = Path("wox_plugin/__init__.py") - init_content = init_path.read_text() - new_init_content = re.sub( - r'__version__ = "(\d+)\.(\d+)\.(\d+)"', - f'__version__ = "{new_version}"', - init_content - ) - init_path.write_text(new_init_content) - - return new_version - -def main(): - # Check command line arguments - if len(sys.argv) != 2 or sys.argv[1] not in ["major", "minor", "patch"]: - print("Usage: python publish.py [major|minor|patch]") - sys.exit(1) - - version_type = sys.argv[1] - - # Clean previous build files - if run_command("rm -rf dist/ build/ *.egg-info"): - print("Error: Failed to clean old build files") - sys.exit(1) - - # Update version number - new_version = update_version(version_type) - print(f"Updated version to {new_version}") - - # Build package - if run_command("python -m build"): - print("Error: Build failed") - sys.exit(1) - - # Upload to PyPI - if run_command("python -m twine upload dist/*"): - print("Error: Upload to PyPI failed") - sys.exit(1) - - print(f"\nSuccessfully published version {new_version} to PyPI!") - print("Package can be installed with:") - print(f"pip install wox-plugin=={new_version}") - - # remove build directory - if run_command("rm -rf dist wox_plugin_python.egg-info"): - print("Error: Failed to remove build directory") - sys.exit(1) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/Wox.Plugin.Python/pyproject.toml b/Wox.Plugin.Python/pyproject.toml deleted file mode 100644 index 1f922a437..000000000 --- a/Wox.Plugin.Python/pyproject.toml +++ /dev/null @@ -1,12 +0,0 @@ -[project] -name = "wox-plugin" -version = "0.0.28" -description = "Python types for Wox plugins" -readme = "README.md" -requires-python = ">=3.12" - -[project.optional-dependencies] -dev = [ - "build>=1.2.2.post1", - "twine>=6.0.1", -] \ No newline at end of file diff --git a/Wox.Plugin.Python/setup.py b/Wox.Plugin.Python/setup.py deleted file mode 100644 index dd33487a8..000000000 --- a/Wox.Plugin.Python/setup.py +++ /dev/null @@ -1,35 +0,0 @@ -from setuptools import setup, find_packages - -setup( - name="wox-plugin", - version="0.0.28", - description="All Python plugins for Wox should use types in this package", - long_description=open("README.md").read(), - long_description_content_type="text/markdown", - author="Wox-launcher", - author_email="", - url="https://github.com/Wox-launcher/Wox", - packages=find_packages(), - package_data={"wox_plugin": ["py.typed"]}, - install_requires=[ - "typing_extensions>=4.0.0; python_version < '3.8'" - ], - python_requires=">=3.8", - classifiers=[ - "Development Status :: 3 - Alpha", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Operating System :: OS Independent", - "Typing :: Typed", - ], - keywords="wox launcher plugin types", - project_urls={ - "Bug Reports": "https://github.com/Wox-launcher/Wox/issues", - "Source": "https://github.com/Wox-launcher/Wox", - }, -) \ No newline at end of file diff --git a/Wox.Plugin.Python/uv.lock b/Wox.Plugin.Python/uv.lock deleted file mode 100644 index 4704a89bf..000000000 --- a/Wox.Plugin.Python/uv.lock +++ /dev/null @@ -1,439 +0,0 @@ -version = 1 -requires-python = ">=3.12" - -[[package]] -name = "build" -version = "1.2.2.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "os_name == 'nt'" }, - { name = "packaging" }, - { name = "pyproject-hooks" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", size = 22950 }, -] - -[[package]] -name = "certifi" -version = "2024.8.30" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, - { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, - { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, - { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, - { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, - { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, - { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, - { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, - { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, - { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, - { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, - { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, - { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, - { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, - { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, - { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, - { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, - { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, - { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, - { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, - { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, - { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, - { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, - { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, - { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, - { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, - { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, - { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, - { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, - { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, - { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "cryptography" -version = "44.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/91/4c/45dfa6829acffa344e3967d6006ee4ae8be57af746ae2eba1c431949b32c/cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", size = 710657 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/5b/3759e30a103144e29632e7cb72aec28cedc79e514b2ea8896bb17163c19b/cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", size = 3922710 }, - { url = "https://files.pythonhosted.org/packages/5f/58/3b14bf39f1a0cfd679e753e8647ada56cddbf5acebffe7db90e184c76168/cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", size = 4137546 }, - { url = "https://files.pythonhosted.org/packages/98/65/13d9e76ca19b0ba5603d71ac8424b5694415b348e719db277b5edc985ff5/cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", size = 3915420 }, - { url = "https://files.pythonhosted.org/packages/b1/07/40fe09ce96b91fc9276a9ad272832ead0fddedcba87f1190372af8e3039c/cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", size = 4154498 }, - { url = "https://files.pythonhosted.org/packages/75/ea/af65619c800ec0a7e4034207aec543acdf248d9bffba0533342d1bd435e1/cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", size = 3932569 }, - { url = "https://files.pythonhosted.org/packages/4e/d5/9cc182bf24c86f542129565976c21301d4ac397e74bf5a16e48241aab8a6/cryptography-44.0.0-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385", size = 4164756 }, - { url = "https://files.pythonhosted.org/packages/c7/af/d1deb0c04d59612e3d5e54203159e284d3e7a6921e565bb0eeb6269bdd8a/cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", size = 4016721 }, - { url = "https://files.pythonhosted.org/packages/bd/69/7ca326c55698d0688db867795134bdfac87136b80ef373aaa42b225d6dd5/cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", size = 4240915 }, - { url = "https://files.pythonhosted.org/packages/1a/07/5f165b6c65696ef75601b781a280fc3b33f1e0cd6aa5a92d9fb96c410e97/cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", size = 3922613 }, - { url = "https://files.pythonhosted.org/packages/28/34/6b3ac1d80fc174812486561cf25194338151780f27e438526f9c64e16869/cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", size = 4137925 }, - { url = "https://files.pythonhosted.org/packages/d0/c7/c656eb08fd22255d21bc3129625ed9cd5ee305f33752ef2278711b3fa98b/cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", size = 3915417 }, - { url = "https://files.pythonhosted.org/packages/ef/82/72403624f197af0db6bac4e58153bc9ac0e6020e57234115db9596eee85d/cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", size = 4155160 }, - { url = "https://files.pythonhosted.org/packages/a2/cd/2f3c440913d4329ade49b146d74f2e9766422e1732613f57097fea61f344/cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", size = 3932331 }, - { url = "https://files.pythonhosted.org/packages/31/d9/90409720277f88eb3ab72f9a32bfa54acdd97e94225df699e7713e850bd4/cryptography-44.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba", size = 4165207 }, - { url = "https://files.pythonhosted.org/packages/7f/df/8be88797f0a1cca6e255189a57bb49237402b1880d6e8721690c5603ac23/cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", size = 4017372 }, - { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 }, -] - -[[package]] -name = "docutils" -version = "0.21.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, -] - -[[package]] -name = "jaraco-classes" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "more-itertools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777 }, -] - -[[package]] -name = "jaraco-context" -version = "6.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", size = 13912 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", size = 6825 }, -] - -[[package]] -name = "jaraco-functools" -version = "4.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "more-itertools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz", hash = "sha256:70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", size = 19159 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl", hash = "sha256:ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", size = 10187 }, -] - -[[package]] -name = "jeepney" -version = "0.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", size = 106005 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", size = 48435 }, -] - -[[package]] -name = "keyring" -version = "25.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jaraco-classes" }, - { name = "jaraco-context" }, - { name = "jaraco-functools" }, - { name = "jeepney", marker = "sys_platform == 'linux'" }, - { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, - { name = "secretstorage", marker = "sys_platform == 'linux'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f6/24/64447b13df6a0e2797b586dad715766d756c932ce8ace7f67bd384d76ae0/keyring-25.5.0.tar.gz", hash = "sha256:4c753b3ec91717fe713c4edd522d625889d8973a349b0e582622f49766de58e6", size = 62675 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/c9/353c156fa2f057e669106e5d6bcdecf85ef8d3536ce68ca96f18dc7b6d6f/keyring-25.5.0-py3-none-any.whl", hash = "sha256:e67f8ac32b04be4714b42fe84ce7dad9c40985b9ca827c592cc303e7c26d9741", size = 39096 }, -] - -[[package]] -name = "markdown-it-py" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mdurl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, -] - -[[package]] -name = "mdurl" -version = "0.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, -] - -[[package]] -name = "more-itertools" -version = "10.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", size = 121020 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", size = 60952 }, -] - -[[package]] -name = "nh3" -version = "0.2.19" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/32/3b8d8471d006333bac3175ad37402414d985ed3f8650a01a33e0e86b9824/nh3-0.2.19.tar.gz", hash = "sha256:790056b54c068ff8dceb443eaefb696b84beff58cca6c07afd754d17692a4804", size = 17327 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/1d/cbd75a2313d96cd3903111667d3d07548fb45c8ecf5c315f37a8f6c202fa/nh3-0.2.19-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:ec9c8bf86e397cb88c560361f60fdce478b5edb8b93f04ead419b72fbe937ea6", size = 1205181 }, - { url = "https://files.pythonhosted.org/packages/f0/30/8e9ec472ce575fa6b98935920c91df637bf9342862bd943745441aec99eb/nh3-0.2.19-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0adf00e2b2026fa10a42537b60d161e516f206781c7515e4e97e09f72a8c5d0", size = 739174 }, - { url = "https://files.pythonhosted.org/packages/5c/b5/d1f81c5ec5695464b69d8aa4529ecb5fd872cbfb29f879b4063bb9397da8/nh3-0.2.19-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3805161c4e12088bd74752ba69630e915bc30fe666034f47217a2f16b16efc37", size = 758660 }, - { url = "https://files.pythonhosted.org/packages/a0/5e/295a3a069f3b9dc35527eedd7b212f31311ef1f66a0e5f5f0acad6db9456/nh3-0.2.19-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3dedd7858a21312f7675841529941035a2ac91057db13402c8fe907aa19205a", size = 924377 }, - { url = "https://files.pythonhosted.org/packages/71/e2/0f189d5054f22cdfdb16d16a2a41282f411a4c03f8418be47e0480bd5bfd/nh3-0.2.19-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:0b6820fc64f2ff7ef3e7253a093c946a87865c877b3889149a6d21d322ed8dbd", size = 992124 }, - { url = "https://files.pythonhosted.org/packages/0d/87/2907edd61a2172527c5322036aa95ce6c18432ff280fc5cf78fe0f934c65/nh3-0.2.19-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:833b3b5f1783ce95834a13030300cea00cbdfd64ea29260d01af9c4821da0aa9", size = 913939 }, - { url = "https://files.pythonhosted.org/packages/c7/a2/e0d3ea0175f28032d7d2bab765250f4e94ef131a7b3293e3df4cb254a5b2/nh3-0.2.19-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5d4f5e2189861b352b73acb803b5f4bb409c2f36275d22717e27d4e0c217ae55", size = 909051 }, - { url = "https://files.pythonhosted.org/packages/5e/e1/f52cb1d54ba965b7d8bb1c884ca982be31d7f75ad9e7e5817f4af20002b3/nh3-0.2.19-cp313-cp313t-win32.whl", hash = "sha256:2b926f179eb4bce72b651bfdf76f8aa05d167b2b72bc2f3657fd319f40232adc", size = 540566 }, - { url = "https://files.pythonhosted.org/packages/70/85/91a66edfab0adbf22468973d8abd4b93c951bbcbbe2121675ee468b912a2/nh3-0.2.19-cp313-cp313t-win_amd64.whl", hash = "sha256:ac536a4b5c073fdadd8f5f4889adabe1cbdae55305366fb870723c96ca7f49c3", size = 542368 }, - { url = "https://files.pythonhosted.org/packages/32/9c/f8808cf6683d4852ba8862e25b98aa9116067ddec517938a1b6e8faadb43/nh3-0.2.19-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:c2e3f0d18cc101132fe10ab7ef5c4f41411297e639e23b64b5e888ccaad63f41", size = 1205140 }, - { url = "https://files.pythonhosted.org/packages/04/0e/268401d9244a84935342d9f3ba5d22bd7d2fc10cfc7a8f59bde8f6721466/nh3-0.2.19-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11270b16c1b012677e3e2dd166c1aa273388776bf99a3e3677179db5097ee16a", size = 763571 }, - { url = "https://files.pythonhosted.org/packages/6f/0d/8be706feb6637d6e5db0eed09fd3f4e1008aee3d5d7161c9973d7aae1d13/nh3-0.2.19-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc483dd8d20f8f8c010783a25a84db3bebeadced92d24d34b40d687f8043ac69", size = 750319 }, - { url = "https://files.pythonhosted.org/packages/a8/ce/1f5f9ba0194f6a882e4bda89ae831678e4b68aa3de91e11e2629a1e6a613/nh3-0.2.19-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d53a4577b6123ca1d7e8483fad3e13cb7eda28913d516bd0a648c1a473aa21a9", size = 857636 }, - { url = "https://files.pythonhosted.org/packages/e9/5d/5661a66f2950879a81fde5fbb6beb650c5647776aaec1a676e6b3ff4b6e5/nh3-0.2.19-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdb20740d24ab9f2a1341458a00a11205294e97e905de060eeab1ceca020c09c", size = 821081 }, - { url = "https://files.pythonhosted.org/packages/22/f8/454828f6f21516bf0c8c578e8bc2ab4f045e6b6fe5179602fe4dc2479da6/nh3-0.2.19-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d8325d51e47cb5b11f649d55e626d56c76041ba508cd59e0cb1cf687cc7612f1", size = 894452 }, - { url = "https://files.pythonhosted.org/packages/2e/5d/36f5b78cbc631cac1c993bdc4608a0fe3148214bdb6d2c1266e228a2686a/nh3-0.2.19-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8eb7affc590e542fa7981ef508cd1644f62176bcd10d4429890fc629b47f0bc", size = 748281 }, - { url = "https://files.pythonhosted.org/packages/98/da/d04f5f0e7ee8edab8ceecdbba9f1c614dc8cf07374141ff6ea3b615b3479/nh3-0.2.19-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2eb021804e9df1761abeb844bb86648d77aa118a663c82f50ea04110d87ed707", size = 767109 }, - { url = "https://files.pythonhosted.org/packages/0e/5b/1232fb35c7d1182adb7d513fede644a81b5361259749781e6075c40a9125/nh3-0.2.19-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:a7b928862daddb29805a1010a0282f77f4b8b238a37b5f76bc6c0d16d930fd22", size = 924295 }, - { url = "https://files.pythonhosted.org/packages/3c/fd/ae622d08518fd31360fd87a515700bc09913f2e57e7f010063f2193ea610/nh3-0.2.19-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:ed06ed78f6b69d57463b46a04f68f270605301e69d80756a8adf7519002de57d", size = 992038 }, - { url = "https://files.pythonhosted.org/packages/56/78/226577c5e3fe379cb95265aa77736e191d859032c974169e6879c51c156f/nh3-0.2.19-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:df8eac98fec80bd6f5fd0ae27a65de14f1e1a65a76d8e2237eb695f9cd1121d9", size = 913866 }, - { url = "https://files.pythonhosted.org/packages/a8/ca/bbd2b2dab31ceae38cfa673861cab81df5ed5be1fe47b6c4f5aa41729aa2/nh3-0.2.19-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00810cd5275f5c3f44b9eb0e521d1a841ee2f8023622de39ffc7d88bd533d8e0", size = 908976 }, - { url = "https://files.pythonhosted.org/packages/4c/8f/6452eb1184ad87cdd2cac7ee3ebd67a2aadb554d25572c1778efdf807e1e/nh3-0.2.19-cp38-abi3-win32.whl", hash = "sha256:7e98621856b0a911c21faa5eef8f8ea3e691526c2433f9afc2be713cb6fbdb48", size = 540528 }, - { url = "https://files.pythonhosted.org/packages/58/d6/285df10307f16fcce9afbd133b04b4bc7d7f9b84b02f0f724bab30dacdd9/nh3-0.2.19-cp38-abi3-win_amd64.whl", hash = "sha256:75c7cafb840f24430b009f7368945cb5ca88b2b54bb384ebfba495f16bc9c121", size = 542316 }, -] - -[[package]] -name = "packaging" -version = "24.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, -] - -[[package]] -name = "pkginfo" -version = "1.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c9/a5/fa2432da887652e3a0c07661ebe4aabe7f4692936c742da489178acd34de/pkginfo-1.12.0.tar.gz", hash = "sha256:8ad91a0445a036782b9366ef8b8c2c50291f83a553478ba8580c73d3215700cf", size = 451375 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/11/4af184fbd8ae13daa13953212b27a212f4e63772ca8a0dd84d08b60ed206/pkginfo-1.12.0-py3-none-any.whl", hash = "sha256:dcd589c9be4da8973eceffa247733c144812759aa67eaf4bbf97016a02f39088", size = 32322 }, -] - -[[package]] -name = "pycparser" -version = "2.22" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, -] - -[[package]] -name = "pygments" -version = "2.18.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, -] - -[[package]] -name = "pyproject-hooks" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", size = 19228 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216 }, -] - -[[package]] -name = "pywin32-ctypes" -version = "0.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756 }, -] - -[[package]] -name = "readme-renderer" -version = "44.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docutils" }, - { name = "nh3" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", size = 32056 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", size = 13310 }, -] - -[[package]] -name = "requests" -version = "2.32.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, -] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, -] - -[[package]] -name = "rfc3986" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, -] - -[[package]] -name = "rich" -version = "13.9.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, -] - -[[package]] -name = "secretstorage" -version = "3.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cryptography" }, - { name = "jeepney" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", size = 19739 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", size = 15221 }, -] - -[[package]] -name = "twine" -version = "6.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "keyring", marker = "platform_machine != 'ppc64le' and platform_machine != 's390x'" }, - { name = "packaging" }, - { name = "pkginfo" }, - { name = "readme-renderer" }, - { name = "requests" }, - { name = "requests-toolbelt" }, - { name = "rfc3986" }, - { name = "rich" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2c/33/88b80116504b61759fa2db05e13f2296b0d2e73568f5e731d020c13843b8/twine-6.0.1.tar.gz", hash = "sha256:36158b09df5406e1c9c1fb8edb24fc2be387709443e7376689b938531582ee27", size = 227175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/df/dda5f85131ecc0d31e10f6dc6be98440ef9f685947917b86f462eed6864b/twine-6.0.1-py3-none-any.whl", hash = "sha256:9c6025b203b51521d53e200f4a08b116dee7500a38591668c6a6033117bdc218", size = 39398 }, -] - -[[package]] -name = "urllib3" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, -] - -[[package]] -name = "wox-plugin" -version = "0.0.20" -source = { virtual = "." } - -[package.optional-dependencies] -dev = [ - { name = "build" }, - { name = "twine" }, -] - -[package.metadata] -requires-dist = [ - { name = "build", marker = "extra == 'dev'", specifier = ">=1.2.2.post1" }, - { name = "twine", marker = "extra == 'dev'", specifier = ">=6.0.1" }, -] diff --git a/Wox.Plugin.Python/wox_plugin/__init__.py b/Wox.Plugin.Python/wox_plugin/__init__.py deleted file mode 100644 index 4eab8c6d5..000000000 --- a/Wox.Plugin.Python/wox_plugin/__init__.py +++ /dev/null @@ -1,55 +0,0 @@ -from .types import ( - # Basic types - MapString, - Platform, - - # Context - Context, - new_context, - new_context_with_value, - - # Selection - SelectionType, - Selection, - - # Query - QueryType, - Query, - QueryEnv, - - # Result - WoxImageType, - WoxImage, - new_base64_wox_image, - WoxPreviewType, - WoxPreview, - ResultTailType, - ResultTail, - ActionContext, - ResultAction, - Result, - RefreshableResult, - - # Plugin API - ChangeQueryParam, - - # AI - ConversationRole, - ChatStreamDataType, - Conversation, - ChatStreamFunc, - - # Settings - PluginSettingDefinitionType, - PluginSettingValueStyle, - PluginSettingDefinitionValue, - PluginSettingDefinitionItem, - MetadataCommand, - - # Plugin Interface - Plugin, - PublicAPI, - PluginInitParams, -) - -__version__ = "0.0.28" \ No newline at end of file diff --git a/Wox.Plugin.Python/wox_plugin/types.py b/Wox.Plugin.Python/wox_plugin/types.py deleted file mode 100644 index f8879a2e8..000000000 --- a/Wox.Plugin.Python/wox_plugin/types.py +++ /dev/null @@ -1,535 +0,0 @@ -from dataclasses import dataclass -from enum import Enum -from typing import Dict, List, Optional, Protocol, Union, Callable, Any, TypedDict, Literal, Awaitable -import uuid - -# Basic types -MapString = Dict[str, str] -Platform = Literal["windows", "darwin", "linux"] - -# Context -class Context(TypedDict): - Values: Dict[str, str] - - # get traceId from context - def get_trace_id(self) -> str: - return self["Values"]["traceId"] - -def new_context() -> Context: - return {"Values": {"traceId": str(uuid.uuid4())}} - -def new_context_with_value(key: str, value: str) -> Context: - ctx = new_context() - ctx["Values"][key] = value - return ctx - -# Selection -class SelectionType(str, Enum): - TEXT = "text" - FILE = "file" - -@dataclass -class Selection: - Type: SelectionType - Text: Optional[str] = None - FilePaths: Optional[List[str]] = None - - def to_dict(self): - return { - "Type": self.Type, - "Text": self.Text, - "FilePaths": self.FilePaths - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "Selection": - return Selection( - Type=data["Type"], - Text=data.get("Text"), - FilePaths=data.get("FilePaths") - ) - -# Query Environment -@dataclass -class QueryEnv: - """ - Active window title when user query - """ - ActiveWindowTitle: str - - """ - Active window pid when user query, 0 if not available - """ - ActiveWindowPid: int - - """ - active browser url when user query - Only available when active window is browser and https://github.com/Wox-launcher/Wox.Chrome.Extension is installed - """ - ActiveBrowserUrl: str - - def to_dict(self): - return { - "ActiveWindowTitle": self.ActiveWindowTitle, - "ActiveWindowPid": self.ActiveWindowPid, - "ActiveBrowserUrl": self.ActiveBrowserUrl - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "QueryEnv": - return QueryEnv( - ActiveWindowTitle=data["ActiveWindowTitle"], - ActiveWindowPid=data["ActiveWindowPid"], - ActiveBrowserUrl=data["ActiveBrowserUrl"] - ) - -# Query -class QueryType(str, Enum): - INPUT = "input" - SELECTION = "selection" - -@dataclass -class Query: - Type: QueryType - RawQuery: str - TriggerKeyword: Optional[str] - Command: Optional[str] - Search: str - Selection: Selection - Env: QueryEnv - - def to_dict(self): - return { - "Type": self.Type, - "RawQuery": self.RawQuery, - "TriggerKeyword": self.TriggerKeyword, - "Command": self.Command, - "Search": self.Search, - "Selection": self.Selection.to_dict(), - "Env": self.Env.to_dict() - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "Query": - return Query( - Type=data["Type"], - RawQuery=data["RawQuery"], - TriggerKeyword=data.get("TriggerKeyword"), - Command=data.get("Command"), - Search=data["Search"], - Selection=Selection.from_dict(data["Selection"]), - Env=QueryEnv.from_dict(data["Env"]) - ) - - def is_global_query(self) -> bool: - return self.Type == QueryType.INPUT and not self.TriggerKeyword - -# Result -class WoxImageType(str, Enum): - ABSOLUTE = "absolute" - RELATIVE = "relative" - BASE64 = "base64" - SVG = "svg" - URL = "url" - EMOJI = "emoji" - LOTTIE = "lottie" - -@dataclass -class WoxImage: - ImageType: WoxImageType - ImageData: str - - def to_dict(self): - return { - "ImageType": self.ImageType, - "ImageData": self.ImageData - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "WoxImage": - return WoxImage( - ImageType=data["ImageType"], - ImageData=data["ImageData"] - ) - -def new_base64_wox_image(image_data: str) -> WoxImage: - return WoxImage(ImageType=WoxImageType.BASE64, ImageData=image_data) - -class WoxPreviewType(str, Enum): - MARKDOWN = "markdown" - TEXT = "text" - IMAGE = "image" - URL = "url" - FILE = "file" - -@dataclass -class WoxPreview: - PreviewType: WoxPreviewType - PreviewData: str - PreviewProperties: Dict[str, str] - - def to_dict(self): - return { - "PreviewType": self.PreviewType, - "PreviewData": self.PreviewData, - "PreviewProperties": self.PreviewProperties - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "WoxPreview": - return WoxPreview( - PreviewType=data["PreviewType"], - PreviewData=data["PreviewData"], - PreviewProperties=data["PreviewProperties"] - ) - -class ResultTailType(str, Enum): - TEXT = "text" - IMAGE = "image" - -@dataclass -class ResultTail: - Type: ResultTailType - Text: Optional[str] = None - Image: Optional[WoxImage] = None - - def to_dict(self): - return { - "Type": self.Type, - "Text": self.Text, - "Image": self.Image.to_dict() if self.Image else None - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "ResultTail": - return ResultTail( - Type=data["Type"], - Text=data.get("Text"), - Image=WoxImage.from_dict(data["Image"]) if data.get("Image") else None - ) - -@dataclass -class ActionContext: - ContextData: str - -@dataclass -class ResultAction: - Name: str - Action: Callable[[ActionContext], Awaitable[None]] - Id: Optional[str] = None - Icon: Optional[WoxImage] = None - IsDefault: Optional[bool] = None - PreventHideAfterAction: Optional[bool] = None - Hotkey: Optional[str] = None - - def to_dict(self): - return { - "Name": self.Name, - "Id": self.Id, - "Icon": self.Icon.to_dict() if self.Icon else None, - "IsDefault": self.IsDefault, - "PreventHideAfterAction": self.PreventHideAfterAction, - "Hotkey": self.Hotkey - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "ResultAction": - # Action is a callable and cannot be serialized/deserialized - # We create a dummy async function as a placeholder - async def dummy_action(ctx: ActionContext) -> None: - pass - - return ResultAction( - Name=data["Name"], - Action=dummy_action, # Use dummy action as placeholder - Id=data.get("Id"), - Icon=WoxImage.from_dict(data["Icon"]) if data.get("Icon") else None, - IsDefault=data.get("IsDefault"), - PreventHideAfterAction=data.get("PreventHideAfterAction"), - Hotkey=data.get("Hotkey") - ) - -@dataclass -class Result: - Title: str - Icon: WoxImage - Id: Optional[str] = None - SubTitle: Optional[str] = None - Preview: Optional[WoxPreview] = None - Score: Optional[float] = None - Group: Optional[str] = None - GroupScore: Optional[float] = None - Tails: Optional[List[ResultTail]] = None - ContextData: Optional[str] = None - Actions: Optional[List[ResultAction]] = None - RefreshInterval: Optional[int] = None - OnRefresh: Optional[Callable[["RefreshableResult"], Awaitable["RefreshableResult"]]] = None - - def to_dict(self): - return { - "Title": self.Title, - "Icon": self.Icon.to_dict(), - "Id": self.Id, - "SubTitle": self.SubTitle, - "Preview": self.Preview.to_dict() if self.Preview else None, - "Score": self.Score, - "Group": self.Group, - "GroupScore": self.GroupScore, - "Tails": [tail.to_dict() for tail in self.Tails] if self.Tails else None, - "ContextData": self.ContextData, - "Actions": [action.to_dict() for action in self.Actions] if self.Actions else None, - "RefreshInterval": self.RefreshInterval - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "Result": - # OnRefresh is a callable and cannot be serialized/deserialized - # We create a dummy async function as a placeholder - async def dummy_refresh(result: "RefreshableResult") -> "RefreshableResult": - return result - - return Result( - Title=data["Title"], - Icon=WoxImage.from_dict(data["Icon"]), - Id=data.get("Id"), - SubTitle=data.get("SubTitle"), - Preview=WoxPreview.from_dict(data["Preview"]) if data.get("Preview") else None, - Score=data.get("Score"), - Group=data.get("Group"), - GroupScore=data.get("GroupScore"), - Tails=[ResultTail.from_dict(t) for t in data["Tails"]] if data.get("Tails") else None, - ContextData=data.get("ContextData"), - Actions=[ResultAction.from_dict(a) for a in data["Actions"]] if data.get("Actions") else None, - RefreshInterval=data.get("RefreshInterval"), - OnRefresh=dummy_refresh if data.get("RefreshInterval") else None # Only set dummy refresh if RefreshInterval is set - ) - -@dataclass -class RefreshableResult: - Title: str - SubTitle: str - Icon: WoxImage - Preview: WoxPreview - Tails: List[ResultTail] - ContextData: str - RefreshInterval: int - Actions: List[ResultAction] - - def to_dict(self): - return { - "Title": self.Title, - "SubTitle": self.SubTitle, - "Icon": self.Icon.to_dict(), - "Preview": self.Preview.to_dict(), - "Tails": [tail.to_dict() for tail in self.Tails], - "ContextData": self.ContextData, - "RefreshInterval": self.RefreshInterval, - "Actions": [action.to_dict() for action in self.Actions] - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "RefreshableResult": - return RefreshableResult( - Title=data["Title"], - SubTitle=data["SubTitle"], - Icon=WoxImage.from_dict(data["Icon"]), - Preview=WoxPreview.from_dict(data["Preview"]), - Tails=[ResultTail.from_dict(t) for t in data["Tails"]], - ContextData=data["ContextData"], - RefreshInterval=data["RefreshInterval"], - Actions=[ResultAction.from_dict(a) for a in data["Actions"]] - ) - - def __await__(self): - # Make RefreshableResult awaitable by returning itself - async def _awaitable(): - return self - return _awaitable().__await__() - -# Plugin API -@dataclass -class ChangeQueryParam: - QueryType: QueryType - QueryText: Optional[str] = None - QuerySelection: Optional[Selection] = None - - def to_dict(self): - return { - "QueryType": self.QueryType, - "QueryText": self.QueryText, - "QuerySelection": self.QuerySelection.to_dict() if self.QuerySelection else None - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "ChangeQueryParam": - return ChangeQueryParam( - QueryType=data["QueryType"], - QueryText=data.get("QueryText"), - QuerySelection=Selection.from_dict(data["QuerySelection"]) if data.get("QuerySelection") else None - ) - -# AI -class ConversationRole(str, Enum): - USER = "user" - SYSTEM = "system" - -class ChatStreamDataType(str, Enum): - STREAMING = "streaming" - FINISHED = "finished" - ERROR = "error" - -@dataclass -class Conversation: - Role: ConversationRole - Text: str - Timestamp: int - - def to_dict(self): - return { - "Role": self.Role, - "Text": self.Text, - "Timestamp": self.Timestamp - } - - def __dict__(self): - return self.to_dict() - - @staticmethod - def from_dict(data: dict) -> "Conversation": - return Conversation( - Role=data["Role"], - Text=data["Text"], - Timestamp=data["Timestamp"] - ) - -ChatStreamFunc = Callable[[ChatStreamDataType, str], None] - -# Settings -class PluginSettingDefinitionType(str, Enum): - HEAD = "head" - TEXTBOX = "textbox" - CHECKBOX = "checkbox" - SELECT = "select" - LABEL = "label" - NEWLINE = "newline" - TABLE = "table" - DYNAMIC = "dynamic" - -@dataclass -class PluginSettingValueStyle: - PaddingLeft: int - PaddingTop: int - PaddingRight: int - PaddingBottom: int - Width: int - LabelWidth: int - -@dataclass -class PluginSettingDefinitionValue: - def get_key(self) -> str: - raise NotImplementedError - - def get_default_value(self) -> str: - raise NotImplementedError - - def translate(self, translator: Callable[[Context, str], str]) -> None: - raise NotImplementedError - -@dataclass -class PluginSettingDefinitionItem: - Type: PluginSettingDefinitionType - Value: PluginSettingDefinitionValue - DisabledInPlatforms: List[Platform] - IsPlatformSpecific: bool - -@dataclass -class MetadataCommand: - Command: str - Description: str - -# Plugin Interface -class Plugin(Protocol): - async def init(self, ctx: Context, init_params: "PluginInitParams") -> None: - ... - - async def query(self, ctx: Context, query: Query) -> List[Result]: - ... - -# Public API Interface -class PublicAPI(Protocol): - async def change_query(self, ctx: Context, query: ChangeQueryParam) -> None: - ... - - async def hide_app(self, ctx: Context) -> None: - ... - - async def show_app(self, ctx: Context) -> None: - ... - - async def notify(self, ctx: Context, message: str) -> None: - ... - - async def log(self, ctx: Context, level: str, msg: str) -> None: - ... - - async def get_translation(self, ctx: Context, key: str) -> str: - ... - - async def get_setting(self, ctx: Context, key: str) -> str: - ... - - async def save_setting(self, ctx: Context, key: str, value: str, is_platform_specific: bool) -> None: - ... - - async def on_setting_changed(self, ctx: Context, callback: Callable[[str, str], None]) -> None: - ... - - async def on_get_dynamic_setting(self, ctx: Context, callback: Callable[[str], PluginSettingDefinitionItem]) -> None: - ... - - async def on_deep_link(self, ctx: Context, callback: Callable[[MapString], None]) -> None: - ... - - async def on_unload(self, ctx: Context, callback: Callable[[], None]) -> None: - ... - - async def register_query_commands(self, ctx: Context, commands: List[MetadataCommand]) -> None: - ... - - async def llm_stream(self, ctx: Context, conversations: List[Conversation], callback: ChatStreamFunc) -> None: - ... - -@dataclass -class PluginInitParams: - API: PublicAPI - PluginDirectory: str \ No newline at end of file diff --git a/Wox.code-workspace b/Wox.code-workspace new file mode 100644 index 000000000..ee001d7ed --- /dev/null +++ b/Wox.code-workspace @@ -0,0 +1,52 @@ +{ + "folders": [ + { + "name": "wox", + "path": "." + }, + { + "name": "wox.core", + "path": "wox.core" + }, + { + "name": "wox.plugin.python", + "path": "wox.plugin.python" + }, + { + "name": "wox.plugin.host.python", + "path": "wox.plugin.host.python" + }, + { + "name": "wox.plugin.nodejs", + "path": "wox.plugin.nodejs" + }, + { + "name": "wox.plugin.host.nodejs", + "path": "wox.plugin.host.nodejs" + }, + { + "name": "wox.ui.flutter", + "path": "wox.ui.flutter/wox" + } + ], + "settings": { + "python.languageServer": "Pylance" + }, + "extensions": { + "recommendations": [ + // for go + "golang.go", + // for python + "ms-python.python", + "ms-python.vscode-pylance", + "ms-python.black-formatter", + // for flutter + "dart-code.flutter", + // for js + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + // others + "ms-vscode.makefile-tools" + ] + } +} \ No newline at end of file diff --git a/Assets/app.ico b/assets/app.ico similarity index 100% rename from Assets/app.ico rename to assets/app.ico diff --git a/Assets/app.png b/assets/app.png similarity index 100% rename from Assets/app.png rename to assets/app.png diff --git a/Assets/app.psd b/assets/app.psd similarity index 100% rename from Assets/app.psd rename to assets/app.psd diff --git a/Assets/mac/Info.plist b/assets/mac/Info.plist similarity index 100% rename from Assets/mac/Info.plist rename to assets/mac/Info.plist diff --git a/Assets/mac/app.icns b/assets/mac/app.icns similarity index 100% rename from Assets/mac/app.icns rename to assets/mac/app.icns diff --git a/CI/go.mod b/ci/go.mod similarity index 100% rename from CI/go.mod rename to ci/go.mod diff --git a/CI/go.sum b/ci/go.sum similarity index 100% rename from CI/go.sum rename to ci/go.sum diff --git a/CI/plugin.go b/ci/plugin.go similarity index 100% rename from CI/plugin.go rename to ci/plugin.go diff --git a/docs/development.md b/docs/development.md index 171c44715..da1a21693 100644 --- a/docs/development.md +++ b/docs/development.md @@ -1,10 +1,19 @@ # Development -- Install [just](https://github.com/casey/just) +Recommended IDE: +- [Visual Studio Code](https://code.visualstudio.com/) - Recommended IDE as the workspace is pre-configured with all necessary settings and extensions. + +Required dependencies: - Install [Golang SDK](https://go.dev/dl/) -- Install [Nodejs](https://nodejs.org) and [pnpm](https://pnpm.io/) -- Install [Python](https://python.org/downloads) and [pip](https://pip.pypa.io/en/stable/installation/) - Install [Flutter](https://docs.flutter.dev/get-started/install) -- For MacOS, you also need to install `cocoapods` via `brew install cocoapods` -- Run `just dev` to build dependencies -- Run `go run main.go` in `Wox` directory and start Wox built in the previous step +- Install [Nodejs](https://nodejs.org) and [pnpm](https://pnpm.io/) +- Install [uv](https://github.com/astral-sh/uv) + +Platform specific dependencies: +- For MacOS: + - Install [create-dmg](https://github.com/create-dmg/create-dmg) +- For Windows/Linux: + - Install [upx](https://upx.github.io/) + +Getting Started: +- Run `make dev` to setup development environment diff --git a/justfile b/justfile deleted file mode 100644 index 7301dd943..000000000 --- a/justfile +++ /dev/null @@ -1,111 +0,0 @@ -current_flutter_target := if os() == "windows" { "windows" } else if os() == "linux" { "linux" } else if os() == "macos" { "macos" } else { "unknown" } -python_command := if os() == "windows" { "python" } else { "python3" } - -default: - @just --list --unsorted - -@dev: - # make sure lefthook installed - go install github.com/evilmartians/lefthook@latest - lefthook install -f - - just _build_hosts - just _build_flutter - -@precommit: - cd Wox.UI.React && pnpm build && cd .. - -@ci_plugin: - cd ci && go run plugin.go - -@release target: - rm -rf Release - just _build_hosts - just _build_flutter - - if [ "{{target}}" = "windows" ]; then \ - cd Wox && CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -ldflags "-H windowsgui -s -w -X 'wox/util.ProdEnv=true'" -o ../Release/wox-windows-amd64.exe && cd ..; \ - upx Release/wox-windows-amd64.exe; \ - elif [ "{{target}}" = "linux" ]; then \ - cd Wox && CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X 'wox/util.ProdEnv=true'" -o ../Release/wox-linux-amd64 && cd ..; \ - upx Release/wox-linux-amd64; \ - chmod +x Release/wox-linux-amd64; \ - elif [ "{{target}}" = "darwin-arm64" ]; then \ - cd Wox && CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 CGO_CFLAGS="-mmacosx-version-min=10.15" CGO_LDFLAGS="-mmacosx-version-min=10.15" go build -ldflags "-s -w -X 'wox/util.ProdEnv=true'" -o ../Release/wox-mac-arm64 && cd ..; \ - just _bundle_mac_app wox-mac-arm64; \ - elif [ "{{target}}" = "darwin-amd64" ]; then \ - cd Wox && CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 CGO_CFLAGS="-mmacosx-version-min=10.15" CGO_LDFLAGS="-mmacosx-version-min=10.15" go build -ldflags "-s -w -X 'wox/util.ProdEnv=true'" -o ../Release/wox-mac-amd64 && cd ..; \ - just _bundle_mac_app wox-mac-amd64; \ - fi - -@_bundle_mac_app name: - chmod +x Release/{{name}} - - # bundle mac app, https://github.com/sindresorhus/create-dmg - cd Release && \ - rm -rf {{name}}.app && \ - rm -rf Wox.app && \ - mkdir -p {{name}}.app/Contents/MacOS && \ - mkdir -p {{name}}.app/Contents/Resources && \ - cp {{name}} {{name}}.app/Contents/MacOS/wox && \ - cp ../Assets/mac/Info.plist {{name}}.app/Contents/Info.plist && \ - cp ../Assets/mac/app.icns {{name}}.app/Contents/Resources/app.icns && \ - mv {{name}}.app Wox.app && \ - security unlock-keychain -p $KEYCHAINPWD login.keychain && \ - codesign --options=runtime --force --deep --sign "Developer ID Application: jiajuan mao (AGYCFD2ZGN)" Wox.app/Contents/MacOS/wox && \ - create-dmg --codesign "Developer ID Application: jiajuan mao (AGYCFD2ZGN)" --notarize "wox" --volname "Wox Installer" \ - --volicon "../Assets/mac/app.icns" \ - --window-pos 200 120 \ - --window-size 800 400 \ - --icon-size 100 \ - --icon "Wox.app" 200 190 \ - --hide-extension "Wox.app" \ - --app-drop-link 600 185 \ - Wox.dmg Wox.app && \ - mv "Wox.dmg" {{name}}.dmg - -@test: - just dev - cd Wox && go test ./... - -@_build_hosts: - # build hosts - rm -rf Wox/resource/hosts - mkdir Wox/resource/hosts - just _build_nodejs_host Wox/resource/hosts - just _build_python_host Wox/resource/hosts - -@_build_flutter: - # flutter - cd Wox.UI.Flutter/wox && flutter clean && flutter build {{current_flutter_target}} && cd .. - rm -rf Wox/resource/ui/flutter - mkdir -p Wox/resource/ui/flutter - - if [ "{{current_flutter_target}}" = "windows" ]; then \ - cp -r Wox.UI.Flutter/wox/build/{{current_flutter_target}}/x64/runner/Release Wox/resource/ui/flutter/wox; \ - elif [ "{{current_flutter_target}}" = "linux" ]; then \ - cp -r Wox.UI.Flutter/wox/build/{{current_flutter_target}}/x64/release/bundle Wox/resource/ui/flutter/wox; \ - elif [ "{{current_flutter_target}}" = "macos" ]; then \ - cp -r Wox.UI.Flutter/wox/build/{{current_flutter_target}}/Build/Products/Release/wox.app Wox/resource/ui/flutter; \ - chmod +x Wox/resource/ui/flutter/wox.app/Contents/MacOS/wox; \ - fi - -@_build_nodejs_host directory: - cd Wox.Plugin.Host.Nodejs && pnpm install && pnpm run build && cd .. - mkdir -p {{directory}} - cp Wox.Plugin.Host.Nodejs/dist/index.js {{directory}}/node-host.js - -@_build_python_host directory: - cd Wox.Plugin.Host.Python && \ - source .venv/bin/activate && \ - rm -rf python-host && \ - rm -rf python-host.pyz && \ - uv pip freeze > requirements.txt && \ - uv pip install -r requirements.txt --target python-host && \ - rm requirements.txt && \ - cp *.py python-host && \ - {{python_command}} -m zipapp -p "interpreter" python-host && \ - rm -rf python-host && \ - cd .. - mkdir -p {{directory}} - cp Wox.Plugin.Host.Python/python-host.pyz {{directory}}/python-host.pyz diff --git a/wox.core/Makefile b/wox.core/Makefile new file mode 100644 index 000000000..70d6c4689 --- /dev/null +++ b/wox.core/Makefile @@ -0,0 +1,38 @@ +.PHONY: clean build help + +# Determine the current platform +ifeq ($(OS),Windows_NT) + PLATFORM := windows + ARCH := amd64 +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Linux) + PLATFORM := linux + ARCH := amd64 + endif + ifeq ($(UNAME_S),Darwin) + PLATFORM := macos + ARCH := $(shell uname -m) + endif +endif + +RELEASE_DIR := ../release + +help: + @echo "Available commands:" + @echo " make clean - Clean build artifacts" + @echo " make build - Build Flutter UI for current platform ($(PLATFORM))" + +clean: + rm -rf $(RELEASE_DIR) + +build: clean +ifeq ($(PLATFORM),windows) + CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -ldflags "-H windowsgui -s -w -X 'wox/util.ProdEnv=true'" -o $(RELEASE_DIR)/wox-windows-amd64.exe +endif +ifeq ($(PLATFORM),linux) + CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X 'wox/util.ProdEnv=true'" -o $(RELEASE_DIR)/wox-linux-amd64 +endif +ifeq ($(PLATFORM),macos) + CGO_ENABLED=1 GOOS=darwin GOARCH=$(ARCH) CGO_CFLAGS="-mmacosx-version-min=10.15" CGO_LDFLAGS="-mmacosx-version-min=10.15" go build -ldflags "-s -w -X 'wox/util.ProdEnv=true'" -o $(RELEASE_DIR)/wox-mac-$(ARCH) +endif \ No newline at end of file diff --git a/Wox/ai/conversation.go b/wox.core/ai/conversation.go similarity index 100% rename from Wox/ai/conversation.go rename to wox.core/ai/conversation.go diff --git a/Wox/ai/model.go b/wox.core/ai/model.go similarity index 100% rename from Wox/ai/model.go rename to wox.core/ai/model.go diff --git a/Wox/ai/provider.go b/wox.core/ai/provider.go similarity index 100% rename from Wox/ai/provider.go rename to wox.core/ai/provider.go diff --git a/Wox/ai/provider_google.go b/wox.core/ai/provider_google.go similarity index 100% rename from Wox/ai/provider_google.go rename to wox.core/ai/provider_google.go diff --git a/Wox/ai/provider_groq.go b/wox.core/ai/provider_groq.go similarity index 100% rename from Wox/ai/provider_groq.go rename to wox.core/ai/provider_groq.go diff --git a/Wox/ai/provider_ollama.go b/wox.core/ai/provider_ollama.go similarity index 100% rename from Wox/ai/provider_ollama.go rename to wox.core/ai/provider_ollama.go diff --git a/Wox/ai/provider_openai.go b/wox.core/ai/provider_openai.go similarity index 100% rename from Wox/ai/provider_openai.go rename to wox.core/ai/provider_openai.go diff --git a/Wox/go.mod b/wox.core/go.mod similarity index 100% rename from Wox/go.mod rename to wox.core/go.mod diff --git a/Wox/go.sum b/wox.core/go.sum similarity index 100% rename from Wox/go.sum rename to wox.core/go.sum diff --git a/Wox/i18n/lang.go b/wox.core/i18n/lang.go similarity index 100% rename from Wox/i18n/lang.go rename to wox.core/i18n/lang.go diff --git a/Wox/i18n/manager.go b/wox.core/i18n/manager.go similarity index 100% rename from Wox/i18n/manager.go rename to wox.core/i18n/manager.go diff --git a/Wox/main.go b/wox.core/main.go similarity index 100% rename from Wox/main.go rename to wox.core/main.go diff --git a/Wox/plugin/api.go b/wox.core/plugin/api.go similarity index 100% rename from Wox/plugin/api.go rename to wox.core/plugin/api.go diff --git a/wox.core/plugin/cache/images/emoji_1f6ab.png b/wox.core/plugin/cache/images/emoji_1f6ab.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6380c28250ae20f2e7fe24f397b37d3993f070 GIT binary patch literal 388 zcmV-~0ek+5P)c;6hfecK_C=T5ln*+2wOh9Xqt4qc-xiwr2F;i_^8)zoTTXQ z_4#rPwV`Y19dr#fdp1S1`e3#Mogq-&V)K6iRR#%z)xQ8`uq7b0Ge?28`BpUQmV<#9 z1{XYs%FzBz#s2F7CN}gR( zD6oxyb_-HM?Gd2Of|O8u_zj7n;y_|30^*|9LUB=J+l!&7?fJtfh2jq*ZyiD?ckA#r z*M|to-CV&o$%x^pt`2BL3Izk2Kf>yv>TibpQ&dye{fD^gaNEwkBi@chuJa0000 {if (existsSync(path.join(__dirname, fPath))) rmdirSync(path.join(__dirname, fPath), { recursive: true })}); process.exit(0);\"", - "clean:all": "npm run clean && (rm -r ./node_modules || true)", - "lint": "eslint --ext .ts --fix src/**/*.ts", - "reinstall": "pnpm clean:all && pnpm install" + "clean:all": "npm run clean && (rm -r ./node_modules || true)" }, "devDependencies": { "@babel/cli": "^7.22.15", diff --git a/Wox.Plugin.Host.Nodejs/pnpm-lock.yaml b/wox.plugin.host.nodejs/pnpm-lock.yaml similarity index 100% rename from Wox.Plugin.Host.Nodejs/pnpm-lock.yaml rename to wox.plugin.host.nodejs/pnpm-lock.yaml diff --git a/Wox.Plugin.Host.Nodejs/src/index.ts b/wox.plugin.host.nodejs/src/index.ts similarity index 100% rename from Wox.Plugin.Host.Nodejs/src/index.ts rename to wox.plugin.host.nodejs/src/index.ts diff --git a/Wox.Plugin.Host.Nodejs/src/jsonrpc.ts b/wox.plugin.host.nodejs/src/jsonrpc.ts similarity index 100% rename from Wox.Plugin.Host.Nodejs/src/jsonrpc.ts rename to wox.plugin.host.nodejs/src/jsonrpc.ts diff --git a/Wox.Plugin.Host.Nodejs/src/logger.ts b/wox.plugin.host.nodejs/src/logger.ts similarity index 100% rename from Wox.Plugin.Host.Nodejs/src/logger.ts rename to wox.plugin.host.nodejs/src/logger.ts diff --git a/Wox.Plugin.Host.Nodejs/src/pluginAPI.ts b/wox.plugin.host.nodejs/src/pluginAPI.ts similarity index 100% rename from Wox.Plugin.Host.Nodejs/src/pluginAPI.ts rename to wox.plugin.host.nodejs/src/pluginAPI.ts diff --git a/Wox.Plugin.Host.Nodejs/src/trace.ts b/wox.plugin.host.nodejs/src/trace.ts similarity index 100% rename from Wox.Plugin.Host.Nodejs/src/trace.ts rename to wox.plugin.host.nodejs/src/trace.ts diff --git a/Wox.Plugin.Host.Nodejs/src/types.ts b/wox.plugin.host.nodejs/src/types.ts similarity index 100% rename from Wox.Plugin.Host.Nodejs/src/types.ts rename to wox.plugin.host.nodejs/src/types.ts diff --git a/Wox.Plugin.Host.Nodejs/tsconfig.json b/wox.plugin.host.nodejs/tsconfig.json similarity index 100% rename from Wox.Plugin.Host.Nodejs/tsconfig.json rename to wox.plugin.host.nodejs/tsconfig.json diff --git a/Wox.Plugin.Host.Python/.python-version b/wox.plugin.host.python/.python-version similarity index 100% rename from Wox.Plugin.Host.Python/.python-version rename to wox.plugin.host.python/.python-version diff --git a/wox.plugin.host.python/Makefile b/wox.plugin.host.python/Makefile new file mode 100644 index 000000000..9d48df21a --- /dev/null +++ b/wox.plugin.host.python/Makefile @@ -0,0 +1,28 @@ +.PHONY: clean build install help + +HOSTS_DIR := ../wox.core/resource/hosts + +help: + @echo "Available commands:" + @echo " make clean - Remove build artifacts and cache files" + @echo " make build - Build Python host" + @echo " make install - Install development dependencies" + +clean: + rm -rf python-host.pyz .venv/ __pycache__/ *.pyc python-host/ + find . -type d -name "__pycache__" -exec rm -rf {} + + find . -type f -name "*.pyc" -delete + +install: + uv cache clean + uv sync --all-extras + +build: install clean + uv pip freeze > requirements.txt + uv pip install -r requirements.txt --target python-host + rm requirements.txt + cp -r src/wox_plugin_host/*.py python-host/ + uv run python -m zipapp -p "interpreter" python-host + rm -rf python-host + mkdir -p $(HOSTS_DIR) + mv python-host.pyz $(HOSTS_DIR)/python-host.pyz \ No newline at end of file diff --git a/Wox.Plugin.Host.Python/README.md b/wox.plugin.host.python/README.md similarity index 100% rename from Wox.Plugin.Host.Python/README.md rename to wox.plugin.host.python/README.md diff --git a/wox.plugin.host.python/pyproject.toml b/wox.plugin.host.python/pyproject.toml new file mode 100644 index 000000000..c3136c3c8 --- /dev/null +++ b/wox.plugin.host.python/pyproject.toml @@ -0,0 +1,20 @@ +[project] +name = "wox-plugin-host" +version = "0.0.1" +description = "Python host for Wox plugins" +readme = "README.md" +requires-python = ">=3.10" +license = "MIT" +authors = [{ name = "Wox Team", email = "qianlifeng@gmail.com" }] +dependencies = ["loguru", "websockets", "wox-plugin==0.0.30"] + +[project.optional-dependencies] +dev = ["black"] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.black] +line-length = 100 +target-version = ["py310"] diff --git a/Wox.Plugin.Python/wox_plugin/py.typed b/wox.plugin.host.python/src/wox_plugin_host/__init__.py similarity index 100% rename from Wox.Plugin.Python/wox_plugin/py.typed rename to wox.plugin.host.python/src/wox_plugin_host/__init__.py diff --git a/Wox.Plugin.Host.Python/__main__.py b/wox.plugin.host.python/src/wox_plugin_host/__main__.py similarity index 100% rename from Wox.Plugin.Host.Python/__main__.py rename to wox.plugin.host.python/src/wox_plugin_host/__main__.py diff --git a/Wox.Plugin.Host.Python/constants.py b/wox.plugin.host.python/src/wox_plugin_host/constants.py similarity index 100% rename from Wox.Plugin.Host.Python/constants.py rename to wox.plugin.host.python/src/wox_plugin_host/constants.py diff --git a/Wox.Plugin.Host.Python/host.py b/wox.plugin.host.python/src/wox_plugin_host/host.py similarity index 100% rename from Wox.Plugin.Host.Python/host.py rename to wox.plugin.host.python/src/wox_plugin_host/host.py diff --git a/Wox.Plugin.Host.Python/jsonrpc.py b/wox.plugin.host.python/src/wox_plugin_host/jsonrpc.py similarity index 62% rename from Wox.Plugin.Host.Python/jsonrpc.py rename to wox.plugin.host.python/src/wox_plugin_host/jsonrpc.py index 21ef4b5ab..ace458a41 100644 --- a/Wox.Plugin.Host.Python/jsonrpc.py +++ b/wox.plugin.host.python/src/wox_plugin_host/jsonrpc.py @@ -2,41 +2,41 @@ import importlib.util from os import path import sys -from typing import Any, Dict, Optional +from typing import Any, Dict import uuid -import zipimport import websockets import logger -import inspect -from wox_plugin import ( +from wox_plugin.types import ( Context, - Plugin, Query, QueryType, Selection, QueryEnv, - Result, RefreshableResult, WoxImage, WoxPreview, ResultTail, ResultAction, - new_context_with_value, PluginInitParams, - PublicAPI + ActionContext, ) from plugin_manager import plugin_instances, PluginInstance from plugin_api import PluginAPI import traceback import asyncio -async def handle_request_from_wox(ctx: Context, request: Dict[str, Any], ws: websockets.WebSocketServerProtocol) -> Any: + +async def handle_request_from_wox( + ctx: Context, request: Dict[str, Any], ws: websockets.WebSocketServerProtocol +) -> Any: """Handle incoming request from Wox""" method = request.get("Method") plugin_name = request.get("PluginName") - - await logger.info(ctx["Values"]["traceId"], f"invoke <{plugin_name}> method: {method}") - + + await logger.info( + ctx["Values"]["traceId"], f"invoke <{plugin_name}> method: {method}" + ) + if method == "loadPlugin": return await load_plugin(ctx, request) elif method == "init": @@ -53,98 +53,124 @@ async def handle_request_from_wox(ctx: Context, request: Dict[str, Any], ws: web await logger.info(ctx["Values"]["traceId"], f"unknown method handler: {method}") raise Exception(f"unknown method handler: {method}") + async def load_plugin(ctx: Context, request: Dict[str, Any]) -> None: """Load a plugin""" - plugin_directory = request.get("Params", {}).get("PluginDirectory") - entry = request.get("Params", {}).get("Entry") - plugin_id = request.get("PluginId") - plugin_name = request.get("PluginName") + plugin_directory: str = request.get("Params", {}).get("PluginDirectory", "") + entry: str = request.get("Params", {}).get("Entry", "") + plugin_id: str = request.get("PluginId", "") + plugin_name: str = request.get("PluginName", "") + + await logger.info( + ctx["Values"]["traceId"], + f"<{plugin_name}> load plugin, directory: {plugin_directory}, entry: {entry}", + ) - await logger.info(ctx["Values"]["traceId"], f"<{plugin_name}> load plugin, directory: {plugin_directory}, entry: {entry}") - try: + if not plugin_directory or not entry: + raise ValueError("plugin_directory and entry must not be None") + # Add plugin directory to Python path if plugin_directory not in sys.path: sys.path.append(plugin_directory) - + deps_dir = path.join(plugin_directory, "dependencies") if path.exists(deps_dir) and deps_dir not in sys.path: sys.path.append(deps_dir) # Combine plugin directory and entry file to get full path - full_entry_path = path.join(plugin_directory, entry) - + full_entry_path: str = path.join(plugin_directory, entry) + # Import the plugin module spec = importlib.util.spec_from_file_location("plugin", full_entry_path) if spec is None or spec.loader is None: raise ImportError(f"Could not load plugin from {full_entry_path}") - + module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) - + if not hasattr(module, "plugin"): raise AttributeError("Plugin module does not have a 'plugin' attribute") - + plugin_instances[plugin_id] = PluginInstance( plugin=module.plugin, - api=None, # Will be set in init_plugin + api=None, # type: ignore , Will be set in init_plugin module_path=full_entry_path, actions={}, - refreshes={} + refreshes={}, + ) + + await logger.info( + ctx["Values"]["traceId"], f"<{plugin_name}> load plugin successfully" ) - - await logger.info(ctx["Values"]["traceId"], f"<{plugin_name}> load plugin successfully") except Exception as e: error_stack = traceback.format_exc() - await logger.error(ctx["Values"]["traceId"], f"<{plugin_name}> load plugin failed: {str(e)}\nStack trace:\n{error_stack}") + await logger.error( + ctx["Values"]["traceId"], + f"<{plugin_name}> load plugin failed: {str(e)}\nStack trace:\n{error_stack}", + ) raise e -async def init_plugin(ctx: Context, request: Dict[str, Any], ws: websockets.WebSocketServerProtocol) -> None: + +async def init_plugin( + ctx: Context, request: Dict[str, Any], ws: websockets.WebSocketServerProtocol +) -> None: """Initialize a plugin""" - plugin_id = request.get("PluginId") - plugin_name = request.get("PluginName") + plugin_id = request.get("PluginId", "") + plugin_name = request.get("PluginName", "") plugin_instance = plugin_instances.get(plugin_id) if not plugin_instance: raise Exception(f"plugin not found: {plugin_name}, forget to load plugin?") - + try: # Create plugin API instance api = PluginAPI(ws, plugin_id, plugin_name) plugin_instance.api = api - + # Call plugin's init method - init_params = PluginInitParams(API=api, PluginDirectory=request.get("Params", {}).get("PluginDirectory")) + init_params = PluginInitParams( + API=api, PluginDirectory=request.get("Params", {}).get("PluginDirectory") + ) await plugin_instance.plugin.init(ctx, init_params) - - await logger.info(ctx["Values"]["traceId"], f"<{plugin_name}> init plugin successfully") + + await logger.info( + ctx["Values"]["traceId"], f"<{plugin_name}> init plugin successfully" + ) except Exception as e: error_stack = traceback.format_exc() - await logger.error(ctx["Values"]["traceId"], f"<{plugin_name}> init plugin failed: {str(e)}\nStack trace:\n{error_stack}") + await logger.error( + ctx["Values"]["traceId"], + f"<{plugin_name}> init plugin failed: {str(e)}\nStack trace:\n{error_stack}", + ) raise e -async def query(ctx: Context, request: Dict[str, Any]) -> list: + +async def query(ctx: Context, request: Dict[str, Any]) -> list[Any]: """Handle query request""" - plugin_id = request.get("PluginId") - plugin_name = request.get("PluginName") + plugin_id = request.get("PluginId", "") + plugin_name = request.get("PluginName", "") plugin_instance = plugin_instances.get(plugin_id) if not plugin_instance: raise Exception(f"plugin not found: {plugin_name}, forget to load plugin?") - + try: # Clear action and refresh caches before query plugin_instance.actions.clear() plugin_instance.refreshes.clear() - + params = request.get("Params", {}) - results = await plugin_instance.plugin.query(ctx, Query( - Type=QueryType(params.get("Type")), - RawQuery=params.get("RawQuery"), - TriggerKeyword=params.get("TriggerKeyword"), - Command=params.get("Command"), - Search=params.get("Search"), - Selection=Selection(**json.loads(params.get("Selection"))), - Env=QueryEnv(**json.loads(params.get("Env"))) - )) + results = await plugin_instance.plugin.query( + ctx, + Query( + Type=QueryType(params.get("Type")), + RawQuery=params.get("RawQuery"), + TriggerKeyword=params.get("TriggerKeyword"), + Command=params.get("Command"), + Search=params.get("Search"), + Selection=Selection(**json.loads(params.get("Selection"))), + Env=QueryEnv(**json.loads(params.get("Env"))), + ), + ) # Ensure each result has an ID and cache actions and refreshes if results: @@ -158,88 +184,112 @@ async def query(ctx: Context, request: Dict[str, Any]) -> list: # Cache action plugin_instance.actions[action.Id] = action.Action # Cache refresh callback if exists - if result.RefreshInterval and result.RefreshInterval > 0 and result.OnRefresh: + if ( + result.RefreshInterval + and result.RefreshInterval > 0 + and result.OnRefresh + ): plugin_instance.refreshes[result.Id] = result.OnRefresh - + return [result.to_dict() for result in results] except Exception as e: error_stack = traceback.format_exc() - await logger.error(ctx["Values"]["traceId"], f"<{plugin_name}> query failed: {str(e)}\nStack trace:\n{error_stack}") + await logger.error( + ctx["Values"]["traceId"], + f"<{plugin_name}> query failed: {str(e)}\nStack trace:\n{error_stack}", + ) raise e + async def action(ctx: Context, request: Dict[str, Any]) -> Any: """Handle action request""" - plugin_id = request.get("PluginId") - plugin_name = request.get("PluginName") + plugin_id = request.get("PluginId", "") + plugin_name = request.get("PluginName", "") plugin_instance = plugin_instances.get(plugin_id) if not plugin_instance: raise Exception(f"plugin not found: {plugin_name}, forget to load plugin?") - + try: params = request.get("Params", {}) action_id = params.get("ActionId") context_data = params.get("ContextData") - + # Get action from cache action_func = plugin_instance.actions.get(action_id) if action_func: - # Don't await the action, let it run independently - asyncio.create_task(action_func({"ContextData": context_data})) - + # Handle both coroutine and regular functions + result = action_func(ActionContext(ContextData=context_data)) + if asyncio.iscoroutine(result): + asyncio.create_task(result) + return None except Exception as e: error_stack = traceback.format_exc() - await logger.error(ctx["Values"]["traceId"], f"<{plugin_name}> action failed: {str(e)}\nStack trace:\n{error_stack}") + await logger.error( + ctx["Values"]["traceId"], + f"<{plugin_name}> action failed: {str(e)}\nStack trace:\n{error_stack}", + ) raise e + async def refresh(ctx: Context, request: Dict[str, Any]) -> Any: """Handle refresh request""" - plugin_id = request.get("PluginId") - plugin_name = request.get("PluginName") + plugin_id = request.get("PluginId", "") + plugin_name = request.get("PluginName", "") plugin_instance = plugin_instances.get(plugin_id) if not plugin_instance: raise Exception(f"plugin not found: {plugin_name}, forget to load plugin?") - + try: params = request.get("Params", {}) result_id = params.get("ResultId") refreshable_result_dict = json.loads(params.get("RefreshableResult")) - + # Convert dict to RefreshableResult object refreshable_result = RefreshableResult( Title=refreshable_result_dict.get("Title"), SubTitle=refreshable_result_dict.get("SubTitle", ""), Icon=WoxImage.from_dict(refreshable_result_dict.get("Icon", {})), Preview=WoxPreview.from_dict(refreshable_result_dict.get("Preview", {})), - Tails=[ResultTail.from_dict(tail) for tail in refreshable_result_dict.get("Tails", [])], + Tails=[ + ResultTail.from_dict(tail) + for tail in refreshable_result_dict.get("Tails", []) + ], ContextData=refreshable_result_dict.get("ContextData", ""), RefreshInterval=refreshable_result_dict.get("RefreshInterval", 0), - Actions=[ResultAction.from_dict(action) for action in refreshable_result_dict.get("Actions", [])] + Actions=[ + ResultAction.from_dict(action) + for action in refreshable_result_dict.get("Actions", []) + ], ) # replace action with cached action for action in refreshable_result.Actions: action.Action = plugin_instance.actions.get(action.Id) - + refresh_func = plugin_instance.refreshes.get(result_id) if refresh_func: refreshed_result = await refresh_func(refreshable_result) - + # Cache any new actions from the refreshed result if refreshed_result.Actions: for action in refreshed_result.Actions: if not action.Id: action.Id = str(uuid.uuid4()) plugin_instance.actions[action.Id] = action.Action - + return refreshed_result.to_dict() - + return None except Exception as e: error_stack = traceback.format_exc() - await logger.error(ctx["Values"]["traceId"], f"<{plugin_name}> refresh failed: {str(e)}\nStack trace:\n{error_stack}") + await logger.error( + ctx["Values"]["traceId"], + f"<{plugin_name}> refresh failed: {str(e)}\nStack trace:\n{error_stack}", + ) raise e + async def unload_plugin(ctx: Context, request: Dict[str, Any]) -> None: """Unload a plugin""" plugin_id = request.get("PluginId") @@ -247,21 +297,23 @@ async def unload_plugin(ctx: Context, request: Dict[str, Any]) -> None: plugin_instance = plugin_instances.get(plugin_id) if not plugin_instance: raise Exception(f"plugin not found: {plugin_name}, forget to load plugin?") - + try: - # Call plugin's unload method - await plugin_instance.plugin.unload() - # Remove plugin from instances del plugin_instances[plugin_id] - + # Remove plugin directory from Python path plugin_dir = path.dirname(plugin_instance.module_path) if plugin_dir in sys.path: sys.path.remove(plugin_dir) - - await logger.info(ctx["Values"]["traceId"], f"<{plugin_name}> unload plugin successfully") + + await logger.info( + ctx["Values"]["traceId"], f"<{plugin_name}> unload plugin successfully" + ) except Exception as e: error_stack = traceback.format_exc() - await logger.error(ctx["Values"]["traceId"], f"<{plugin_name}> unload plugin failed: {str(e)}\nStack trace:\n{error_stack}") - raise e \ No newline at end of file + await logger.error( + ctx["Values"]["traceId"], + f"<{plugin_name}> unload plugin failed: {str(e)}\nStack trace:\n{error_stack}", + ) + raise e diff --git a/Wox.Plugin.Host.Python/logger.py b/wox.plugin.host.python/src/wox_plugin_host/logger.py similarity index 100% rename from Wox.Plugin.Host.Python/logger.py rename to wox.plugin.host.python/src/wox_plugin_host/logger.py diff --git a/Wox.Plugin.Host.Python/plugin_api.py b/wox.plugin.host.python/src/wox_plugin_host/plugin_api.py similarity index 63% rename from Wox.Plugin.Host.Python/plugin_api.py rename to wox.plugin.host.python/src/wox_plugin_host/plugin_api.py index bdda494a9..d7da97763 100644 --- a/Wox.Plugin.Host.Python/plugin_api.py +++ b/wox.plugin.host.python/src/wox_plugin_host/plugin_api.py @@ -1,10 +1,10 @@ import asyncio import json import uuid -from typing import Any, Dict, Callable, Optional +from typing import Any, Dict, Callable import websockets import logger -from wox_plugin import ( +from wox_plugin.types import ( Context, PublicAPI, ChangeQueryParam, @@ -17,24 +17,34 @@ from constants import PLUGIN_JSONRPC_TYPE_REQUEST from plugin_manager import waiting_for_response + class PluginAPI(PublicAPI): - def __init__(self, ws: websockets.WebSocketServerProtocol, plugin_id: str, plugin_name: str): + def __init__( + self, ws: websockets.WebSocketServerProtocol, plugin_id: str, plugin_name: str + ): self.ws = ws self.plugin_id = plugin_id self.plugin_name = plugin_name self.setting_change_callbacks: Dict[str, Callable[[str, str], None]] = {} - self.get_dynamic_setting_callbacks: Dict[str, Callable[[str], PluginSettingDefinitionItem]] = {} + self.get_dynamic_setting_callbacks: Dict[ + str, Callable[[str], PluginSettingDefinitionItem] + ] = {} self.deep_link_callbacks: Dict[str, Callable[[MapString], None]] = {} self.unload_callbacks: Dict[str, Callable[[], None]] = {} self.llm_stream_callbacks: Dict[str, ChatStreamFunc] = {} - async def invoke_method(self, ctx: Context, method: str, params: Dict[str, Any]) -> Any: + async def invoke_method( + self, ctx: Context, method: str, params: Dict[str, Any] + ) -> Any: """Invoke a method on Wox""" request_id = str(uuid.uuid4()) trace_id = ctx["Values"]["traceId"] if method != "Log": - await logger.info(trace_id, f"<{self.plugin_name}> start invoke method to Wox: {method}, id: {request_id}") + await logger.info( + trace_id, + f"<{self.plugin_name}> start invoke method to Wox: {method}, id: {request_id}", + ) request = { "TraceId": trace_id, @@ -43,15 +53,15 @@ async def invoke_method(self, ctx: Context, method: str, params: Dict[str, Any]) "Type": PLUGIN_JSONRPC_TYPE_REQUEST, "Params": params, "PluginId": self.plugin_id, - "PluginName": self.plugin_name + "PluginName": self.plugin_name, } await self.ws.send(json.dumps(request)) - + # Create a Future to wait for the response future: asyncio.Future[Any] = asyncio.Future() waiting_for_response[request_id] = future - + try: return await future except Exception as e: @@ -63,7 +73,9 @@ async def change_query(self, ctx: Context, query: ChangeQueryParam) -> None: params = { "QueryType": query.QueryType, "QueryText": query.QueryText, - "QuerySelection": query.QuerySelection.__dict__ if query.QuerySelection else None + "QuerySelection": ( + query.QuerySelection.__dict__ if query.QuerySelection else None + ), } await self.invoke_method(ctx, "ChangeQuery", params) @@ -81,10 +93,7 @@ async def notify(self, ctx: Context, message: str) -> None: async def log(self, ctx: Context, level: str, msg: str) -> None: """Write log""" - await self.invoke_method(ctx, "Log", { - "level": level, - "message": msg - }) + await self.invoke_method(ctx, "Log", {"level": level, "message": msg}) async def get_translation(self, ctx: Context, key: str) -> str: """Get a translation for a key""" @@ -96,27 +105,37 @@ async def get_setting(self, ctx: Context, key: str) -> str: result = await self.invoke_method(ctx, "GetSetting", {"key": key}) return str(result) if result is not None else "" - async def save_setting(self, ctx: Context, key: str, value: str, is_platform_specific: bool) -> None: + async def save_setting( + self, ctx: Context, key: str, value: str, is_platform_specific: bool + ) -> None: """Save a setting value""" - await self.invoke_method(ctx, "SaveSetting", { - "key": key, - "value": value, - "isPlatformSpecific": is_platform_specific - }) - - async def on_setting_changed(self, ctx: Context, callback: Callable[[str, str], None]) -> None: + await self.invoke_method( + ctx, + "SaveSetting", + {"key": key, "value": value, "isPlatformSpecific": is_platform_specific}, + ) + + async def on_setting_changed( + self, ctx: Context, callback: Callable[[str, str], None] + ) -> None: """Register setting changed callback""" callback_id = str(uuid.uuid4()) self.setting_change_callbacks[callback_id] = callback await self.invoke_method(ctx, "OnSettingChanged", {"callbackId": callback_id}) - async def on_get_dynamic_setting(self, ctx: Context, callback: Callable[[str], PluginSettingDefinitionItem]) -> None: + async def on_get_dynamic_setting( + self, ctx: Context, callback: Callable[[str], PluginSettingDefinitionItem] + ) -> None: """Register dynamic setting callback""" callback_id = str(uuid.uuid4()) self.get_dynamic_setting_callbacks[callback_id] = callback - await self.invoke_method(ctx, "OnGetDynamicSetting", {"callbackId": callback_id}) + await self.invoke_method( + ctx, "OnGetDynamicSetting", {"callbackId": callback_id} + ) - async def on_deep_link(self, ctx: Context, callback: Callable[[MapString], None]) -> None: + async def on_deep_link( + self, ctx: Context, callback: Callable[[MapString], None] + ) -> None: """Register deep link callback""" callback_id = str(uuid.uuid4()) self.deep_link_callbacks[callback_id] = callback @@ -128,18 +147,27 @@ async def on_unload(self, ctx: Context, callback: Callable[[], None]) -> None: self.unload_callbacks[callback_id] = callback await self.invoke_method(ctx, "OnUnload", {"callbackId": callback_id}) - async def register_query_commands(self, ctx: Context, commands: list[MetadataCommand]) -> None: + async def register_query_commands( + self, ctx: Context, commands: list[MetadataCommand] + ) -> None: """Register query commands""" - await self.invoke_method(ctx, "RegisterQueryCommands", { - "commands": json.dumps([command.__dict__ for command in commands]) - }) - - async def llm_stream(self, ctx: Context, conversations: list[Conversation], callback: ChatStreamFunc) -> None: + await self.invoke_method( + ctx, + "RegisterQueryCommands", + {"commands": json.dumps([command.__dict__ for command in commands])}, + ) + + async def llm_stream( + self, ctx: Context, conversations: list[Conversation], callback: ChatStreamFunc + ) -> None: """Chat using LLM""" callback_id = str(uuid.uuid4()) self.llm_stream_callbacks[callback_id] = callback - await self.invoke_method(ctx, "LLMStream", { - "callbackId": callback_id, - "conversations": json.dumps([conv.__dict__ for conv in conversations]) - }) - \ No newline at end of file + await self.invoke_method( + ctx, + "LLMStream", + { + "callbackId": callback_id, + "conversations": json.dumps([conv.__dict__ for conv in conversations]), + }, + ) diff --git a/Wox.Plugin.Host.Python/plugin_manager.py b/wox.plugin.host.python/src/wox_plugin_host/plugin_manager.py similarity index 100% rename from Wox.Plugin.Host.Python/plugin_manager.py rename to wox.plugin.host.python/src/wox_plugin_host/plugin_manager.py diff --git a/wox.plugin.host.python/uv.lock b/wox.plugin.host.python/uv.lock new file mode 100644 index 000000000..cc0dae308 --- /dev/null +++ b/wox.plugin.host.python/uv.lock @@ -0,0 +1,355 @@ +version = 1 +requires-python = ">=3.10" + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "black" +version = "24.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/0d/cc2fb42b8c50d80143221515dd7e4766995bd07c56c9a3ed30baf080b6dc/black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", size = 645813 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/f3/465c0eb5cddf7dbbfe1fecd9b875d1dcf51b88923cd2c1d7e9ab95c6336b/black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812", size = 1623211 }, + { url = "https://files.pythonhosted.org/packages/df/57/b6d2da7d200773fdfcc224ffb87052cf283cec4d7102fab450b4a05996d8/black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea", size = 1457139 }, + { url = "https://files.pythonhosted.org/packages/6e/c5/9023b7673904a5188f9be81f5e129fff69f51f5515655fbd1d5a4e80a47b/black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f", size = 1753774 }, + { url = "https://files.pythonhosted.org/packages/e1/32/df7f18bd0e724e0d9748829765455d6643ec847b3f87e77456fc99d0edab/black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e", size = 1414209 }, + { url = "https://files.pythonhosted.org/packages/c2/cc/7496bb63a9b06a954d3d0ac9fe7a73f3bf1cd92d7a58877c27f4ad1e9d41/black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad", size = 1607468 }, + { url = "https://files.pythonhosted.org/packages/2b/e3/69a738fb5ba18b5422f50b4f143544c664d7da40f09c13969b2fd52900e0/black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50", size = 1437270 }, + { url = "https://files.pythonhosted.org/packages/c9/9b/2db8045b45844665c720dcfe292fdaf2e49825810c0103e1191515fc101a/black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392", size = 1737061 }, + { url = "https://files.pythonhosted.org/packages/a3/95/17d4a09a5be5f8c65aa4a361444d95edc45def0de887810f508d3f65db7a/black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175", size = 1423293 }, + { url = "https://files.pythonhosted.org/packages/90/04/bf74c71f592bcd761610bbf67e23e6a3cff824780761f536512437f1e655/black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3", size = 1644256 }, + { url = "https://files.pythonhosted.org/packages/4c/ea/a77bab4cf1887f4b2e0bce5516ea0b3ff7d04ba96af21d65024629afedb6/black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65", size = 1448534 }, + { url = "https://files.pythonhosted.org/packages/4e/3e/443ef8bc1fbda78e61f79157f303893f3fddf19ca3c8989b163eb3469a12/black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f", size = 1761892 }, + { url = "https://files.pythonhosted.org/packages/52/93/eac95ff229049a6901bc84fec6908a5124b8a0b7c26ea766b3b8a5debd22/black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8", size = 1434796 }, + { url = "https://files.pythonhosted.org/packages/d0/a0/a993f58d4ecfba035e61fca4e9f64a2ecae838fc9f33ab798c62173ed75c/black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981", size = 1643986 }, + { url = "https://files.pythonhosted.org/packages/37/d5/602d0ef5dfcace3fb4f79c436762f130abd9ee8d950fa2abdbf8bbc555e0/black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b", size = 1448085 }, + { url = "https://files.pythonhosted.org/packages/47/6d/a3a239e938960df1a662b93d6230d4f3e9b4a22982d060fc38c42f45a56b/black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2", size = 1760928 }, + { url = "https://files.pythonhosted.org/packages/dd/cf/af018e13b0eddfb434df4d9cd1b2b7892bab119f7a20123e93f6910982e8/black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b", size = 1436875 }, + { url = "https://files.pythonhosted.org/packages/8d/a7/4b27c50537ebca8bec139b872861f9d2bf501c5ec51fcf897cb924d9e264/black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", size = 206898 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "loguru" +version = "0.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pydantic" +version = "2.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 }, + { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 }, + { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 }, + { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 }, + { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 }, + { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 }, + { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 }, + { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 }, + { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 }, + { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 }, + { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 }, + { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 }, + { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 }, + { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, + { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, + { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, + { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, + { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, + { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, + { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, + { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, + { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, + { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, + { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, + { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, + { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 }, + { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 }, + { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 }, + { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 }, + { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 }, + { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "websockets" +version = "14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/1b/380b883ce05bb5f45a905b61790319a28958a9ab1e4b6b95ff5464b60ca1/websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8", size = 162840 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/91/b1b375dbd856fd5fff3f117de0e520542343ecaf4e8fc60f1ac1e9f5822c/websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29", size = 161950 }, + { url = "https://files.pythonhosted.org/packages/61/8f/4d52f272d3ebcd35e1325c646e98936099a348374d4a6b83b524bded8116/websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179", size = 159601 }, + { url = "https://files.pythonhosted.org/packages/c4/b1/29e87b53eb1937992cdee094a0988aadc94f25cf0b37e90c75eed7123d75/websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250", size = 159854 }, + { url = "https://files.pythonhosted.org/packages/3f/e6/752a2f5e8321ae2a613062676c08ff2fccfb37dc837a2ee919178a372e8a/websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0", size = 168835 }, + { url = "https://files.pythonhosted.org/packages/60/27/ca62de7877596926321b99071639275e94bb2401397130b7cf33dbf2106a/websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0", size = 167844 }, + { url = "https://files.pythonhosted.org/packages/7e/db/f556a1d06635c680ef376be626c632e3f2bbdb1a0189d1d1bffb061c3b70/websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199", size = 168157 }, + { url = "https://files.pythonhosted.org/packages/b3/bc/99e5f511838c365ac6ecae19674eb5e94201aa4235bd1af3e6fa92c12905/websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58", size = 168561 }, + { url = "https://files.pythonhosted.org/packages/c6/e7/251491585bad61c79e525ac60927d96e4e17b18447cc9c3cfab47b2eb1b8/websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078", size = 167979 }, + { url = "https://files.pythonhosted.org/packages/ac/98/7ac2e4eeada19bdbc7a3a66a58e3ebdf33648b9e1c5b3f08c3224df168cf/websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434", size = 167925 }, + { url = "https://files.pythonhosted.org/packages/ab/3d/09e65c47ee2396b7482968068f6e9b516221e1032b12dcf843b9412a5dfb/websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10", size = 162831 }, + { url = "https://files.pythonhosted.org/packages/8a/67/59828a3d09740e6a485acccfbb66600632f2178b6ed1b61388ee96f17d5a/websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e", size = 163266 }, + { url = "https://files.pythonhosted.org/packages/97/ed/c0d03cb607b7fe1f7ff45e2cd4bb5cd0f9e3299ced79c2c303a6fff44524/websockets-14.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512", size = 161949 }, + { url = "https://files.pythonhosted.org/packages/06/91/bf0a44e238660d37a2dda1b4896235d20c29a2d0450f3a46cd688f43b239/websockets-14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac", size = 159606 }, + { url = "https://files.pythonhosted.org/packages/ff/b8/7185212adad274c2b42b6a24e1ee6b916b7809ed611cbebc33b227e5c215/websockets-14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280", size = 159854 }, + { url = "https://files.pythonhosted.org/packages/5a/8a/0849968d83474be89c183d8ae8dcb7f7ada1a3c24f4d2a0d7333c231a2c3/websockets-14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1", size = 169402 }, + { url = "https://files.pythonhosted.org/packages/bd/4f/ef886e37245ff6b4a736a09b8468dae05d5d5c99de1357f840d54c6f297d/websockets-14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3", size = 168406 }, + { url = "https://files.pythonhosted.org/packages/11/43/e2dbd4401a63e409cebddedc1b63b9834de42f51b3c84db885469e9bdcef/websockets-14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6", size = 168776 }, + { url = "https://files.pythonhosted.org/packages/6d/d6/7063e3f5c1b612e9f70faae20ebaeb2e684ffa36cb959eb0862ee2809b32/websockets-14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0", size = 169083 }, + { url = "https://files.pythonhosted.org/packages/49/69/e6f3d953f2fa0f8a723cf18cd011d52733bd7f6e045122b24e0e7f49f9b0/websockets-14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89", size = 168529 }, + { url = "https://files.pythonhosted.org/packages/70/ff/f31fa14561fc1d7b8663b0ed719996cf1f581abee32c8fb2f295a472f268/websockets-14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23", size = 168475 }, + { url = "https://files.pythonhosted.org/packages/f1/15/b72be0e4bf32ff373aa5baef46a4c7521b8ea93ad8b49ca8c6e8e764c083/websockets-14.1-cp311-cp311-win32.whl", hash = "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e", size = 162833 }, + { url = "https://files.pythonhosted.org/packages/bc/ef/2d81679acbe7057ffe2308d422f744497b52009ea8bab34b6d74a2657d1d/websockets-14.1-cp311-cp311-win_amd64.whl", hash = "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09", size = 163263 }, + { url = "https://files.pythonhosted.org/packages/55/64/55698544ce29e877c9188f1aee9093712411a8fc9732cca14985e49a8e9c/websockets-14.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed", size = 161957 }, + { url = "https://files.pythonhosted.org/packages/a2/b1/b088f67c2b365f2c86c7b48edb8848ac27e508caf910a9d9d831b2f343cb/websockets-14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d", size = 159620 }, + { url = "https://files.pythonhosted.org/packages/c1/89/2a09db1bbb40ba967a1b8225b07b7df89fea44f06de9365f17f684d0f7e6/websockets-14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707", size = 159852 }, + { url = "https://files.pythonhosted.org/packages/ca/c1/f983138cd56e7d3079f1966e81f77ce6643f230cd309f73aa156bb181749/websockets-14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a", size = 169675 }, + { url = "https://files.pythonhosted.org/packages/c1/c8/84191455d8660e2a0bdb33878d4ee5dfa4a2cedbcdc88bbd097303b65bfa/websockets-14.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45", size = 168619 }, + { url = "https://files.pythonhosted.org/packages/8d/a7/62e551fdcd7d44ea74a006dc193aba370505278ad76efd938664531ce9d6/websockets-14.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58", size = 169042 }, + { url = "https://files.pythonhosted.org/packages/ad/ed/1532786f55922c1e9c4d329608e36a15fdab186def3ca9eb10d7465bc1cc/websockets-14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058", size = 169345 }, + { url = "https://files.pythonhosted.org/packages/ea/fb/160f66960d495df3de63d9bcff78e1b42545b2a123cc611950ffe6468016/websockets-14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4", size = 168725 }, + { url = "https://files.pythonhosted.org/packages/cf/53/1bf0c06618b5ac35f1d7906444b9958f8485682ab0ea40dee7b17a32da1e/websockets-14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05", size = 168712 }, + { url = "https://files.pythonhosted.org/packages/e5/22/5ec2f39fff75f44aa626f86fa7f20594524a447d9c3be94d8482cd5572ef/websockets-14.1-cp312-cp312-win32.whl", hash = "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0", size = 162838 }, + { url = "https://files.pythonhosted.org/packages/74/27/28f07df09f2983178db7bf6c9cccc847205d2b92ced986cd79565d68af4f/websockets-14.1-cp312-cp312-win_amd64.whl", hash = "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f", size = 163277 }, + { url = "https://files.pythonhosted.org/packages/34/77/812b3ba5110ed8726eddf9257ab55ce9e85d97d4aa016805fdbecc5e5d48/websockets-14.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9", size = 161966 }, + { url = "https://files.pythonhosted.org/packages/8d/24/4fcb7aa6986ae7d9f6d083d9d53d580af1483c5ec24bdec0978307a0f6ac/websockets-14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b", size = 159625 }, + { url = "https://files.pythonhosted.org/packages/f8/47/2a0a3a2fc4965ff5b9ce9324d63220156bd8bedf7f90824ab92a822e65fd/websockets-14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3", size = 159857 }, + { url = "https://files.pythonhosted.org/packages/dd/c8/d7b425011a15e35e17757e4df75b25e1d0df64c0c315a44550454eaf88fc/websockets-14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59", size = 169635 }, + { url = "https://files.pythonhosted.org/packages/93/39/6e3b5cffa11036c40bd2f13aba2e8e691ab2e01595532c46437b56575678/websockets-14.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2", size = 168578 }, + { url = "https://files.pythonhosted.org/packages/cf/03/8faa5c9576299b2adf34dcccf278fc6bbbcda8a3efcc4d817369026be421/websockets-14.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da", size = 169018 }, + { url = "https://files.pythonhosted.org/packages/8c/05/ea1fec05cc3a60defcdf0bb9f760c3c6bd2dd2710eff7ac7f891864a22ba/websockets-14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9", size = 169383 }, + { url = "https://files.pythonhosted.org/packages/21/1d/eac1d9ed787f80754e51228e78855f879ede1172c8b6185aca8cef494911/websockets-14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7", size = 168773 }, + { url = "https://files.pythonhosted.org/packages/0e/1b/e808685530185915299740d82b3a4af3f2b44e56ccf4389397c7a5d95d39/websockets-14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a", size = 168757 }, + { url = "https://files.pythonhosted.org/packages/b6/19/6ab716d02a3b068fbbeb6face8a7423156e12c446975312f1c7c0f4badab/websockets-14.1-cp313-cp313-win32.whl", hash = "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6", size = 162834 }, + { url = "https://files.pythonhosted.org/packages/6c/fd/ab6b7676ba712f2fc89d1347a4b5bdc6aa130de10404071f2b2606450209/websockets-14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0", size = 163277 }, + { url = "https://files.pythonhosted.org/packages/fb/cd/382a05a1ba2a93bd9fb807716a660751295df72e77204fb130a102fcdd36/websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8", size = 159633 }, + { url = "https://files.pythonhosted.org/packages/b7/a0/fa7c62e2952ef028b422fbf420f9353d9dd4dfaa425de3deae36e98c0784/websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e", size = 159867 }, + { url = "https://files.pythonhosted.org/packages/c1/94/954b4924f868db31d5f0935893c7a8446515ee4b36bb8ad75a929469e453/websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098", size = 161121 }, + { url = "https://files.pythonhosted.org/packages/7a/2e/f12bbb41a8f2abb76428ba4fdcd9e67b5b364a3e7fa97c88f4d6950aa2d4/websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb", size = 160731 }, + { url = "https://files.pythonhosted.org/packages/13/97/b76979401f2373af1fe3e08f960b265cecab112e7dac803446fb98351a52/websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7", size = 160681 }, + { url = "https://files.pythonhosted.org/packages/39/9c/16916d9a436c109a1d7ba78817e8fee357b78968be3f6e6f517f43afa43d/websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d", size = 163316 }, + { url = "https://files.pythonhosted.org/packages/b0/0b/c7e5d11020242984d9d37990310520ed663b942333b83a033c2f20191113/websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e", size = 156277 }, +] + +[[package]] +name = "win32-setctime" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/dd/f95a13d2b235a28d613ba23ebad55191514550debb968b46aab99f2e3a30/win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2", size = 3676 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/e6/a7d828fef907843b2a5773ebff47fb79ac0c1c88d60c0ca9530ee941e248/win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad", size = 3604 }, +] + +[[package]] +name = "wox-plugin" +version = "0.0.30" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/58/c09cc97cee3b3253dd1d332fe95c828b241e8f788b5d81dbda6e38767568/wox_plugin-0.0.30.tar.gz", hash = "sha256:e23d7b85ba2845f11047b3fa049edf08ebc6d5435ecd6aa486cbfdcb0b1dd3c0", size = 46011 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/22/a418ccaea3dfaa7f25b03ed9012ae9fa0ca94b2c8fdd7710342862555093/wox_plugin-0.0.30-py3-none-any.whl", hash = "sha256:deea70fce050fc969ed90584d3635fde96ea76e3c562fca0a1a5b83cf634791e", size = 7850 }, +] + +[[package]] +name = "wox-plugin-host" +version = "0.0.1" +source = { editable = "." } +dependencies = [ + { name = "loguru" }, + { name = "websockets" }, + { name = "wox-plugin" }, +] + +[package.optional-dependencies] +dev = [ + { name = "black" }, +] + +[package.metadata] +requires-dist = [ + { name = "black", marker = "extra == 'dev'" }, + { name = "loguru" }, + { name = "websockets" }, + { name = "wox-plugin", specifier = "==0.0.30" }, +] diff --git a/Wox.Plugin.Nodejs/.eslintignore b/wox.plugin.nodejs/.eslintignore similarity index 100% rename from Wox.Plugin.Nodejs/.eslintignore rename to wox.plugin.nodejs/.eslintignore diff --git a/Wox.Plugin.Nodejs/.eslintrc b/wox.plugin.nodejs/.eslintrc similarity index 100% rename from Wox.Plugin.Nodejs/.eslintrc rename to wox.plugin.nodejs/.eslintrc diff --git a/Wox.Plugin.Nodejs/.gitignore b/wox.plugin.nodejs/.gitignore similarity index 100% rename from Wox.Plugin.Nodejs/.gitignore rename to wox.plugin.nodejs/.gitignore diff --git a/Wox.Plugin.Nodejs/.prettierrc.json b/wox.plugin.nodejs/.prettierrc.json similarity index 100% rename from Wox.Plugin.Nodejs/.prettierrc.json rename to wox.plugin.nodejs/.prettierrc.json diff --git a/wox.plugin.nodejs/Makefile b/wox.plugin.nodejs/Makefile new file mode 100644 index 000000000..9a39eba6d --- /dev/null +++ b/wox.plugin.nodejs/Makefile @@ -0,0 +1,21 @@ +.PHONY: clean build install help publish + +help: + @echo "Available commands:" + @echo " make clean - Remove build artifacts and node_modules" + @echo " make build - Build Node.js plugin" + @echo " make install - Install dependencies" + @echo " make publish - Publish to npm registry" + +clean: + pnpm run clean + +install: clean + pnpm install + +build: install + pnpm run build + +publish: build + pnpm run pub + rm -rf dist/ diff --git a/Wox.Plugin.Nodejs/README.md b/wox.plugin.nodejs/README.md similarity index 100% rename from Wox.Plugin.Nodejs/README.md rename to wox.plugin.nodejs/README.md diff --git a/Wox.Plugin.Nodejs/package.json b/wox.plugin.nodejs/package.json similarity index 97% rename from Wox.Plugin.Nodejs/package.json rename to wox.plugin.nodejs/package.json index e2875c2b5..4a33fd325 100644 --- a/Wox.Plugin.Nodejs/package.json +++ b/wox.plugin.nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@wox-launcher/wox-plugin", - "version": "0.0.82", + "version": "0.0.83", "description": "All nodejs plugin for Wox should use types in this package", "repository": { "type": "git", diff --git a/Wox.Plugin.Nodejs/pnpm-lock.yaml b/wox.plugin.nodejs/pnpm-lock.yaml similarity index 100% rename from Wox.Plugin.Nodejs/pnpm-lock.yaml rename to wox.plugin.nodejs/pnpm-lock.yaml diff --git a/Wox.Plugin.Nodejs/src/context.ts b/wox.plugin.nodejs/src/context.ts similarity index 100% rename from Wox.Plugin.Nodejs/src/context.ts rename to wox.plugin.nodejs/src/context.ts diff --git a/Wox.Plugin.Nodejs/src/image.ts b/wox.plugin.nodejs/src/image.ts similarity index 100% rename from Wox.Plugin.Nodejs/src/image.ts rename to wox.plugin.nodejs/src/image.ts diff --git a/Wox.Plugin.Nodejs/src/index.ts b/wox.plugin.nodejs/src/index.ts similarity index 100% rename from Wox.Plugin.Nodejs/src/index.ts rename to wox.plugin.nodejs/src/index.ts diff --git a/Wox.Plugin.Nodejs/tsconfig.json b/wox.plugin.nodejs/tsconfig.json similarity index 100% rename from Wox.Plugin.Nodejs/tsconfig.json rename to wox.plugin.nodejs/tsconfig.json diff --git a/Wox.Plugin.Nodejs/types/ai.d.ts b/wox.plugin.nodejs/types/ai.d.ts similarity index 100% rename from Wox.Plugin.Nodejs/types/ai.d.ts rename to wox.plugin.nodejs/types/ai.d.ts diff --git a/Wox.Plugin.Nodejs/types/index.d.ts b/wox.plugin.nodejs/types/index.d.ts similarity index 100% rename from Wox.Plugin.Nodejs/types/index.d.ts rename to wox.plugin.nodejs/types/index.d.ts diff --git a/Wox.Plugin.Nodejs/types/setting.d.ts b/wox.plugin.nodejs/types/setting.d.ts similarity index 100% rename from Wox.Plugin.Nodejs/types/setting.d.ts rename to wox.plugin.nodejs/types/setting.d.ts diff --git a/Wox.Plugin.Python/.python-version b/wox.plugin.python/.python-version similarity index 100% rename from Wox.Plugin.Python/.python-version rename to wox.plugin.python/.python-version diff --git a/wox.plugin.python/Makefile b/wox.plugin.python/Makefile new file mode 100644 index 000000000..3f062b2b0 --- /dev/null +++ b/wox.plugin.python/Makefile @@ -0,0 +1,23 @@ +.PHONY: clean build publish install help + +PYTHON := uv python +PIP := uv pip + +help: + @echo "Available commands:" + @echo " make clean - Remove build artifacts" + @echo " make build - Build package" + @echo " make publish - Publish package to PyPI" + @echo " make install - Install development dependencies" + +clean: + rm -rf dist/ build/ *.egg-info/ + +install: + uv sync --all-extras + +build: install clean + uv run hatchling build + +publish: build + uv run twine upload dist/* diff --git a/wox.plugin.python/README.md b/wox.plugin.python/README.md new file mode 100644 index 000000000..3c26a38ae --- /dev/null +++ b/wox.plugin.python/README.md @@ -0,0 +1,48 @@ +# Wox Plugin Python + +This package provides type definitions for developing Wox plugins in Python. + +## Requirements + +- Python >= 3.8 (defined in `pyproject.toml`) +- Python 3.12 recommended for development (defined in `.python-version`) + +## Installation + +```bash +# Using pip +pip install wox-plugin + +# Using uv (recommended) +uv add wox-plugin +``` + +## Usage + +```python +from wox_plugin import BasePlugin, Query, Result, Context, PluginInitParams + +class MyPlugin(BasePlugin): + async def init(self, ctx: Context, params: PluginInitParams) -> None: + self.api = params.API + + async def query(self, ctx: Context, query: Query) -> list[Result]: + # Your plugin logic here + results = [] + results.append( + Result( + title="Hello Wox", + subtitle="This is a sample result", + icon="path/to/icon.png", + score=100 + ) + ) + return results + +# MUST HAVE! The plugin class will be automatically loaded by Wox +plugin = MyPlugin() +``` + +## License + +MIT \ No newline at end of file diff --git a/wox.plugin.python/pyproject.toml b/wox.plugin.python/pyproject.toml new file mode 100644 index 000000000..157408067 --- /dev/null +++ b/wox.plugin.python/pyproject.toml @@ -0,0 +1,33 @@ +[project] +name = "wox-plugin" +version = "0.0.30" +description = "Python plugin SDK for Wox launcher" +authors = [{ name = "Wox Team" }] +dependencies = ["pydantic>=2.0.0"] +requires-python = ">=3.8" +readme = "README.md" +license = { text = "GPL-3.0" } + +[project.urls] +Homepage = "https://github.com/Wox-launcher/Wox" +Repository = "https://github.com/Wox-launcher/Wox" + +[project.optional-dependencies] +dev = ["black>=23.0.0", "hatchling>=1.18.0", "twine>=4.0.0"] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.black] +line-length = 88 +target-version = ['py38'] + +[tool.mypy] +python_version = "3.8" +warn_return_any = true +warn_unused_configs = true +disallow_untyped_defs = true + +[tool.setuptools] +package-data = { "wox_plugin" = ["py.typed"] } diff --git a/wox.plugin.python/src/wox_plugin/__init__.py b/wox.plugin.python/src/wox_plugin/__init__.py new file mode 100644 index 000000000..d2c2db203 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/__init__.py @@ -0,0 +1,83 @@ +""" +Wox Plugin SDK for Python + +This package provides the SDK for developing Wox plugins in Python. +""" + +from typing import List + +from .plugin import Plugin, BasePlugin, PluginInitParams +from .api import PublicAPI +from .models.context import Context +from .models.query import Query, QueryEnv, Selection +from .models.result import ( + Result, + WoxImage, + WoxPreview, + ResultTail, + ResultAction, + ActionContext, + RefreshableResult, +) +from .models.settings import ( + PluginSettingDefinitionItem, + PluginSettingDefinitionValue, + PluginSettingValueStyle, + MetadataCommand, +) +from .types import ( + Platform, + SelectionType, + QueryType, + WoxImageType, + WoxPreviewType, + ResultTailType, + ConversationRole, + ChatStreamDataType, + PluginSettingDefinitionType, +) +from .utils.helpers import new_base64_wox_image +from .exceptions import WoxPluginError, InvalidQueryError, PluginInitError, APIError + +__version__: str = "0.1.0" +__all__: List[str] = [ + # Plugin + "Plugin", + "BasePlugin", + "PluginInitParams", + # API + "PublicAPI", + # Models + "Context", + "Query", + "QueryEnv", + "Selection", + "Result", + "WoxImage", + "WoxPreview", + "ResultTail", + "ResultAction", + "ActionContext", + "RefreshableResult", + "PluginSettingDefinitionItem", + "PluginSettingDefinitionValue", + "PluginSettingValueStyle", + "MetadataCommand", + # Types + "Platform", + "SelectionType", + "QueryType", + "WoxImageType", + "WoxPreviewType", + "ResultTailType", + "ConversationRole", + "ChatStreamDataType", + "PluginSettingDefinitionType", + # Utils + "new_base64_wox_image", + # Exceptions + "WoxPluginError", + "InvalidQueryError", + "PluginInitError", + "APIError", +] diff --git a/wox.plugin.python/src/wox_plugin/api.py b/wox.plugin.python/src/wox_plugin/api.py new file mode 100644 index 000000000..4591eaf23 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/api.py @@ -0,0 +1,79 @@ +from typing import Protocol, List, Callable + +from .types import MapString, ChatStreamFunc +from .models.context import Context +from .models.query import ChangeQueryParam +from .models.settings import MetadataCommand, PluginSettingDefinitionItem +from .models.result import Conversation + + +class PublicAPI(Protocol): + """Public API interface for Wox plugins""" + + async def change_query(self, ctx: Context, query: ChangeQueryParam) -> None: + """Change the current query""" + ... + + async def hide_app(self, ctx: Context) -> None: + """Hide the Wox window""" + ... + + async def show_app(self, ctx: Context) -> None: + """Show the Wox window""" + ... + + async def notify(self, ctx: Context, message: str) -> None: + """Show a notification""" + ... + + async def log(self, ctx: Context, level: str, msg: str) -> None: + """Log a message""" + ... + + async def get_translation(self, ctx: Context, key: str) -> str: + """Get translation for a key""" + ... + + async def get_setting(self, ctx: Context, key: str) -> str: + """Get setting value""" + ... + + async def save_setting( + self, ctx: Context, key: str, value: str, is_platform_specific: bool + ) -> None: + """Save setting value""" + ... + + async def on_setting_changed( + self, ctx: Context, callback: Callable[[str, str], None] + ) -> None: + """Register setting change callback""" + ... + + async def on_get_dynamic_setting( + self, ctx: Context, callback: Callable[[str], PluginSettingDefinitionItem] + ) -> None: + """Register dynamic setting callback""" + ... + + async def on_deep_link( + self, ctx: Context, callback: Callable[[MapString], None] + ) -> None: + """Register deep link callback""" + ... + + async def on_unload(self, ctx: Context, callback: Callable[[], None]) -> None: + """Register unload callback""" + ... + + async def register_query_commands( + self, ctx: Context, commands: List[MetadataCommand] + ) -> None: + """Register query commands""" + ... + + async def llm_stream( + self, ctx: Context, conversations: List[Conversation], callback: ChatStreamFunc + ) -> None: + """Stream LLM responses""" + ... diff --git a/wox.plugin.python/src/wox_plugin/exceptions.py b/wox.plugin.python/src/wox_plugin/exceptions.py new file mode 100644 index 000000000..13f1715ca --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/exceptions.py @@ -0,0 +1,22 @@ +class WoxPluginError(Exception): + """Base exception for Wox plugin errors""" + + pass + + +class InvalidQueryError(WoxPluginError): + """Raised when query is invalid""" + + pass + + +class PluginInitError(WoxPluginError): + """Raised when plugin initialization fails""" + + pass + + +class APIError(WoxPluginError): + """Raised when API call fails""" + + pass diff --git a/wox.plugin.python/src/wox_plugin/models/context.py b/wox.plugin.python/src/wox_plugin/models/context.py new file mode 100644 index 000000000..2a2139489 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/models/context.py @@ -0,0 +1,27 @@ +import uuid +from typing import Dict +from pydantic import BaseModel + + +class Context(BaseModel): + """ + Context object that carries request-scoped values across the plugin execution + """ + + Values: Dict[str, str] + + def get_trace_id(self) -> str: + """Get the trace ID from context""" + return self.Values["traceId"] + + @staticmethod + def new() -> "Context": + """Create a new context with a random trace ID""" + return Context(Values={"traceId": str(uuid.uuid4())}) + + @staticmethod + def new_with_value(key: str, value: str) -> "Context": + """Create a new context with a specific key-value pair""" + ctx = Context.new() + ctx.Values[key] = value + return ctx diff --git a/wox.plugin.python/src/wox_plugin/models/query.py b/wox.plugin.python/src/wox_plugin/models/query.py new file mode 100644 index 000000000..6239c020c --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/models/query.py @@ -0,0 +1,48 @@ +from typing import Optional, List +from pydantic import BaseModel + +from ..types import SelectionType, QueryType + + +class Selection(BaseModel): + """Selection model representing text or file selection""" + + Type: SelectionType + Text: Optional[str] = None + FilePaths: Optional[List[str]] = None + + +class QueryEnv(BaseModel): + """ + Query environment information + """ + + ActiveWindowTitle: str + """Active window title when user query""" + + ActiveWindowPid: int + """Active window pid when user query, 0 if not available""" + + ActiveBrowserUrl: str + """ + Active browser url when user query + Only available when active window is browser and https://github.com/Wox-launcher/Wox.Chrome.Extension is installed + """ + + +class Query(BaseModel): + """ + Query model representing a user query + """ + + Type: QueryType + RawQuery: str + TriggerKeyword: Optional[str] + Command: Optional[str] + Search: str + Selection: Selection + Env: QueryEnv + + def is_global_query(self) -> bool: + """Check if this is a global query without trigger keyword""" + return self.Type == QueryType.INPUT and not self.TriggerKeyword diff --git a/wox.plugin.python/src/wox_plugin/models/result.py b/wox.plugin.python/src/wox_plugin/models/result.py new file mode 100644 index 000000000..bb5ee6f3c --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/models/result.py @@ -0,0 +1,91 @@ +from typing import Optional, List, Dict, Callable, Awaitable +from pydantic import BaseModel + +from ..types import WoxImageType, WoxPreviewType, ResultTailType + + +class WoxImage(BaseModel): + """Image model for Wox""" + + ImageType: WoxImageType + ImageData: str + + +class WoxPreview(BaseModel): + """Preview model for Wox results""" + + PreviewType: WoxPreviewType + PreviewData: str + PreviewProperties: Dict[str, str] + + +class ResultTail(BaseModel): + """Tail model for Wox results""" + + Type: ResultTailType + Text: Optional[str] = None + Image: Optional[WoxImage] = None + + +class ActionContext(BaseModel): + """Context for result actions""" + + ContextData: str + + +class ResultAction(BaseModel): + """Action model for Wox results""" + + Name: str + Action: Callable[[ActionContext], Awaitable[None]] + Id: Optional[str] = None + Icon: Optional[WoxImage] = None + IsDefault: Optional[bool] = None + PreventHideAfterAction: Optional[bool] = None + Hotkey: Optional[str] = None + + class Config: + arbitrary_types_allowed = True + + +class Result(BaseModel): + """Result model for Wox""" + + Title: str + Icon: WoxImage + Id: Optional[str] = None + SubTitle: Optional[str] = None + Preview: Optional[WoxPreview] = None + Score: Optional[float] = None + Group: Optional[str] = None + GroupScore: Optional[float] = None + Tails: Optional[List[ResultTail]] = None + ContextData: Optional[str] = None + Actions: Optional[List[ResultAction]] = None + RefreshInterval: Optional[int] = None + OnRefresh: Optional[ + Callable[["RefreshableResult"], Awaitable["RefreshableResult"]] + ] = None + + class Config: + arbitrary_types_allowed = True + + +class RefreshableResult(BaseModel): + """Result that can be refreshed periodically""" + + Title: str + SubTitle: str + Icon: WoxImage + Preview: WoxPreview + Tails: List[ResultTail] + ContextData: str + RefreshInterval: int + Actions: List[ResultAction] + + def __await__(self): + # Make RefreshableResult awaitable by returning itself + async def _awaitable(): + return self + + return _awaitable().__await__() diff --git a/wox.plugin.python/src/wox_plugin/models/settings.py b/wox.plugin.python/src/wox_plugin/models/settings.py new file mode 100644 index 000000000..51553bc59 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/models/settings.py @@ -0,0 +1,48 @@ +from typing import List, Callable +from pydantic import BaseModel + +from ..types import Platform, PluginSettingDefinitionType +from .context import Context + + +class PluginSettingValueStyle(BaseModel): + """Style configuration for plugin settings""" + + PaddingLeft: int + PaddingTop: int + PaddingRight: int + PaddingBottom: int + Width: int + LabelWidth: int + + +class PluginSettingDefinitionValue(BaseModel): + """Base class for plugin setting definition values""" + + def get_key(self) -> str: + """Get the key of the setting""" + raise NotImplementedError + + def get_default_value(self) -> str: + """Get the default value of the setting""" + raise NotImplementedError + + def translate(self, translator: Callable[[Context, str], str]) -> None: + """Translate the setting using the provided translator""" + raise NotImplementedError + + +class PluginSettingDefinitionItem(BaseModel): + """Plugin setting definition item""" + + Type: PluginSettingDefinitionType + Value: PluginSettingDefinitionValue + DisabledInPlatforms: List[Platform] + IsPlatformSpecific: bool + + +class MetadataCommand(BaseModel): + """Metadata for plugin commands""" + + Command: str + Description: str diff --git a/wox.plugin.python/src/wox_plugin/plugin.py b/wox.plugin.python/src/wox_plugin/plugin.py new file mode 100644 index 000000000..485a64be1 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/plugin.py @@ -0,0 +1,42 @@ +from typing import Protocol, List + +from .models.context import Context +from .models.query import Query +from .models.result import Result +from .api import PublicAPI + + +class PluginInitParams: + """Parameters for plugin initialization""" + + API: PublicAPI + PluginDirectory: str + + +class Plugin(Protocol): + """Plugin interface that all Wox plugins must implement""" + + async def init(self, ctx: Context, init_params: PluginInitParams) -> None: + """Initialize the plugin""" + ... + + async def query(self, ctx: Context, query: Query) -> List[Result]: + """Handle user query""" + ... + + +class BasePlugin: + """Base implementation of Plugin with common functionality""" + + def __init__(self): + self.api: PublicAPI = None + self.plugin_dir: str = None + + async def init(self, ctx: Context, init_params: PluginInitParams) -> None: + """Initialize the plugin with API and plugin directory""" + self.api = init_params.API + self.plugin_dir = init_params.PluginDirectory + + async def query(self, ctx: Context, query: Query) -> List[Result]: + """Handle user query - must be implemented by subclasses""" + raise NotImplementedError("Subclasses must implement query method") diff --git a/wox.plugin.python/src/wox_plugin/py.typed b/wox.plugin.python/src/wox_plugin/py.typed new file mode 100644 index 000000000..0c8e502fd --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/py.typed @@ -0,0 +1 @@ +# This file marks the package as supporting type hints \ No newline at end of file diff --git a/wox.plugin.python/src/wox_plugin/types.py b/wox.plugin.python/src/wox_plugin/types.py new file mode 100644 index 000000000..be572e280 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/types.py @@ -0,0 +1,70 @@ +from enum import StrEnum +from typing import Dict, Callable + +# Basic types +MapString = Dict[str, str] + + +class Platform(StrEnum): + WINDOWS = "windows" + DARWIN = "darwin" + LINUX = "linux" + + +class SelectionType(StrEnum): + TEXT = "text" + FILE = "file" + + +class QueryType(StrEnum): + INPUT = "input" + SELECTION = "selection" + + +class WoxImageType(StrEnum): + ABSOLUTE = "absolute" + RELATIVE = "relative" + BASE64 = "base64" + SVG = "svg" + URL = "url" + EMOJI = "emoji" + LOTTIE = "lottie" + + +class WoxPreviewType(StrEnum): + MARKDOWN = "markdown" + TEXT = "text" + IMAGE = "image" + URL = "url" + FILE = "file" + + +class ResultTailType(StrEnum): + TEXT = "text" + IMAGE = "image" + + +class ConversationRole(StrEnum): + USER = "user" + SYSTEM = "system" + + +class ChatStreamDataType(StrEnum): + STREAMING = "streaming" + FINISHED = "finished" + ERROR = "error" + + +class PluginSettingDefinitionType(StrEnum): + HEAD = "head" + TEXTBOX = "textbox" + CHECKBOX = "checkbox" + SELECT = "select" + LABEL = "label" + NEWLINE = "newline" + TABLE = "table" + DYNAMIC = "dynamic" + + +# Type aliases +ChatStreamFunc = Callable[[ChatStreamDataType, str], None] diff --git a/wox.plugin.python/src/wox_plugin/utils/helpers.py b/wox.plugin.python/src/wox_plugin/utils/helpers.py new file mode 100644 index 000000000..7c36d2740 --- /dev/null +++ b/wox.plugin.python/src/wox_plugin/utils/helpers.py @@ -0,0 +1,7 @@ +from ..models.result import WoxImage +from ..types import WoxImageType + + +def new_base64_wox_image(image_data: str) -> WoxImage: + """Create a new WoxImage with BASE64 type""" + return WoxImage(ImageType=WoxImageType.BASE64, ImageData=image_data) diff --git a/wox.plugin.python/uv.lock b/wox.plugin.python/uv.lock new file mode 100644 index 000000000..c713d99a9 --- /dev/null +++ b/wox.plugin.python/uv.lock @@ -0,0 +1,857 @@ +version = 1 +requires-python = ">=3.8" + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "backports-tarfile" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", size = 86406 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181 }, +] + +[[package]] +name = "black" +version = "24.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/b0/46fb0d4e00372f4a86a6f8efa3cb193c9f64863615e39010b1477e010578/black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f", size = 644810 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/6e/74e29edf1fba3887ed7066930a87f698ffdcd52c5dbc263eabb06061672d/black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6", size = 1632092 }, + { url = "https://files.pythonhosted.org/packages/ab/49/575cb6c3faee690b05c9d11ee2e8dba8fbd6d6c134496e644c1feb1b47da/black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb", size = 1457529 }, + { url = "https://files.pythonhosted.org/packages/7a/b4/d34099e95c437b53d01c4aa37cf93944b233066eb034ccf7897fa4e5f286/black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42", size = 1757443 }, + { url = "https://files.pythonhosted.org/packages/87/a0/6d2e4175ef364b8c4b64f8441ba041ed65c63ea1db2720d61494ac711c15/black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a", size = 1418012 }, + { url = "https://files.pythonhosted.org/packages/08/a6/0a3aa89de9c283556146dc6dbda20cd63a9c94160a6fbdebaf0918e4a3e1/black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1", size = 1615080 }, + { url = "https://files.pythonhosted.org/packages/db/94/b803d810e14588bb297e565821a947c108390a079e21dbdcb9ab6956cd7a/black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af", size = 1438143 }, + { url = "https://files.pythonhosted.org/packages/a5/b5/f485e1bbe31f768e2e5210f52ea3f432256201289fd1a3c0afda693776b0/black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4", size = 1738774 }, + { url = "https://files.pythonhosted.org/packages/a8/69/a000fc3736f89d1bdc7f4a879f8aaf516fb03613bb51a0154070383d95d9/black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af", size = 1427503 }, + { url = "https://files.pythonhosted.org/packages/a2/a8/05fb14195cfef32b7c8d4585a44b7499c2a4b205e1662c427b941ed87054/black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368", size = 1646132 }, + { url = "https://files.pythonhosted.org/packages/41/77/8d9ce42673e5cb9988f6df73c1c5c1d4e9e788053cccd7f5fb14ef100982/black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed", size = 1448665 }, + { url = "https://files.pythonhosted.org/packages/cc/94/eff1ddad2ce1d3cc26c162b3693043c6b6b575f538f602f26fe846dfdc75/black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018", size = 1762458 }, + { url = "https://files.pythonhosted.org/packages/28/ea/18b8d86a9ca19a6942e4e16759b2fa5fc02bbc0eb33c1b866fcd387640ab/black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2", size = 1436109 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/ae03761ddecc1a37d7e743b89cccbcf3317479ff4b88cfd8818079f890d0/black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd", size = 1617322 }, + { url = "https://files.pythonhosted.org/packages/14/4b/4dfe67eed7f9b1ddca2ec8e4418ea74f0d1dc84d36ea874d618ffa1af7d4/black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2", size = 1442108 }, + { url = "https://files.pythonhosted.org/packages/97/14/95b3f91f857034686cae0e73006b8391d76a8142d339b42970eaaf0416ea/black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e", size = 1745786 }, + { url = "https://files.pythonhosted.org/packages/95/54/68b8883c8aa258a6dde958cd5bdfada8382bec47c5162f4a01e66d839af1/black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920", size = 1426754 }, + { url = "https://files.pythonhosted.org/packages/13/b2/b3f24fdbb46f0e7ef6238e131f13572ee8279b70f237f221dd168a9dba1a/black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c", size = 1631706 }, + { url = "https://files.pythonhosted.org/packages/d9/35/31010981e4a05202a84a3116423970fd1a59d2eda4ac0b3570fbb7029ddc/black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e", size = 1457429 }, + { url = "https://files.pythonhosted.org/packages/27/25/3f706b4f044dd569a20a4835c3b733dedea38d83d2ee0beb8178a6d44945/black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47", size = 1756488 }, + { url = "https://files.pythonhosted.org/packages/63/72/79375cd8277cbf1c5670914e6bd4c1b15dea2c8f8e906dc21c448d0535f0/black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb", size = 1417721 }, + { url = "https://files.pythonhosted.org/packages/27/1e/83fa8a787180e1632c3d831f7e58994d7aaf23a0961320d21e84f922f919/black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed", size = 206504 }, +] + +[[package]] +name = "certifi" +version = "2024.12.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932 }, + { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585 }, + { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268 }, + { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592 }, + { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512 }, + { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910 }, + { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200 }, + { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565 }, + { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635 }, + { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218 }, + { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486 }, + { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911 }, + { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/8b/825cc84cf13a28bfbcba7c416ec22bf85a9584971be15b21dd8300c65b7f/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", size = 196363 }, + { url = "https://files.pythonhosted.org/packages/23/81/d7eef6a99e42c77f444fdd7bc894b0ceca6c3a95c51239e74a722039521c/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", size = 125639 }, + { url = "https://files.pythonhosted.org/packages/21/67/b4564d81f48042f520c948abac7079356e94b30cb8ffb22e747532cf469d/charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", size = 120451 }, + { url = "https://files.pythonhosted.org/packages/c2/72/12a7f0943dd71fb5b4e7b55c41327ac0a1663046a868ee4d0d8e9c369b85/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", size = 140041 }, + { url = "https://files.pythonhosted.org/packages/67/56/fa28c2c3e31217c4c52158537a2cf5d98a6c1e89d31faf476c89391cd16b/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", size = 150333 }, + { url = "https://files.pythonhosted.org/packages/f9/d2/466a9be1f32d89eb1554cf84073a5ed9262047acee1ab39cbaefc19635d2/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", size = 142921 }, + { url = "https://files.pythonhosted.org/packages/f8/01/344ec40cf5d85c1da3c1f57566c59e0c9b56bcc5566c08804a95a6cc8257/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", size = 144785 }, + { url = "https://files.pythonhosted.org/packages/73/8b/2102692cb6d7e9f03b9a33a710e0164cadfce312872e3efc7cfe22ed26b4/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", size = 146631 }, + { url = "https://files.pythonhosted.org/packages/d8/96/cc2c1b5d994119ce9f088a9a0c3ebd489d360a2eb058e2c8049f27092847/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", size = 140867 }, + { url = "https://files.pythonhosted.org/packages/c9/27/cde291783715b8ec30a61c810d0120411844bc4c23b50189b81188b273db/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", size = 149273 }, + { url = "https://files.pythonhosted.org/packages/3a/a4/8633b0fc1a2d1834d5393dafecce4a1cc56727bfd82b4dc18fc92f0d3cc3/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", size = 152437 }, + { url = "https://files.pythonhosted.org/packages/64/ea/69af161062166b5975ccbb0961fd2384853190c70786f288684490913bf5/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", size = 150087 }, + { url = "https://files.pythonhosted.org/packages/3b/fd/e60a9d9fd967f4ad5a92810138192f825d77b4fa2a557990fd575a47695b/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", size = 145142 }, + { url = "https://files.pythonhosted.org/packages/6d/02/8cb0988a1e49ac9ce2eed1e07b77ff118f2923e9ebd0ede41ba85f2dcb04/charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", size = 94701 }, + { url = "https://files.pythonhosted.org/packages/d6/20/f1d4670a8a723c46be695dff449d86d6092916f9e99c53051954ee33a1bc/charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", size = 102191 }, + { url = "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", size = 193339 }, + { url = "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", size = 124366 }, + { url = "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", size = 118874 }, + { url = "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", size = 138243 }, + { url = "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", size = 148676 }, + { url = "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", size = 141289 }, + { url = "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", size = 142585 }, + { url = "https://files.pythonhosted.org/packages/3b/a0/a68980ab8a1f45a36d9745d35049c1af57d27255eff8c907e3add84cf68f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", size = 144408 }, + { url = "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", size = 139076 }, + { url = "https://files.pythonhosted.org/packages/fb/9d/9c13753a5a6e0db4a0a6edb1cef7aee39859177b64e1a1e748a6e3ba62c2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", size = 146874 }, + { url = "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", size = 150871 }, + { url = "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", size = 148546 }, + { url = "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", size = 143048 }, + { url = "https://files.pythonhosted.org/packages/01/f8/38842422988b795220eb8038745d27a675ce066e2ada79516c118f291f07/charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", size = 94389 }, + { url = "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", size = 101752 }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, + { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, + { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, + { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, + { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, + { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, + { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, + { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, + { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, + { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, + { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, + { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, + { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, + { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, + { url = "https://files.pythonhosted.org/packages/86/f4/ccab93e631e7293cca82f9f7ba39783c967f823a0000df2d8dd743cad74f/charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578", size = 193961 }, + { url = "https://files.pythonhosted.org/packages/94/d4/2b21cb277bac9605026d2d91a4a8872bc82199ed11072d035dc674c27223/charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6", size = 124507 }, + { url = "https://files.pythonhosted.org/packages/9a/e0/a7c1fcdff20d9c667342e0391cfeb33ab01468d7d276b2c7914b371667cc/charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417", size = 119298 }, + { url = "https://files.pythonhosted.org/packages/70/de/1538bb2f84ac9940f7fa39945a5dd1d22b295a89c98240b262fc4b9fcfe0/charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51", size = 139328 }, + { url = "https://files.pythonhosted.org/packages/e9/ca/288bb1a6bc2b74fb3990bdc515012b47c4bc5925c8304fc915d03f94b027/charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41", size = 149368 }, + { url = "https://files.pythonhosted.org/packages/aa/75/58374fdaaf8406f373e508dab3486a31091f760f99f832d3951ee93313e8/charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f", size = 141944 }, + { url = "https://files.pythonhosted.org/packages/32/c8/0bc558f7260db6ffca991ed7166494a7da4fda5983ee0b0bfc8ed2ac6ff9/charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8", size = 143326 }, + { url = "https://files.pythonhosted.org/packages/0e/dd/7f6fec09a1686446cee713f38cf7d5e0669e0bcc8288c8e2924e998cf87d/charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab", size = 146171 }, + { url = "https://files.pythonhosted.org/packages/4c/a8/440f1926d6d8740c34d3ca388fbd718191ec97d3d457a0677eb3aa718fce/charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12", size = 139711 }, + { url = "https://files.pythonhosted.org/packages/e9/7f/4b71e350a3377ddd70b980bea1e2cc0983faf45ba43032b24b2578c14314/charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19", size = 148348 }, + { url = "https://files.pythonhosted.org/packages/1e/70/17b1b9202531a33ed7ef41885f0d2575ae42a1e330c67fddda5d99ad1208/charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea", size = 151290 }, + { url = "https://files.pythonhosted.org/packages/44/30/574b5b5933d77ecb015550aafe1c7d14a8cd41e7e6c4dcea5ae9e8d496c3/charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858", size = 149114 }, + { url = "https://files.pythonhosted.org/packages/0b/11/ca7786f7e13708687443082af20d8341c02e01024275a28bc75032c5ce5d/charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654", size = 143856 }, + { url = "https://files.pythonhosted.org/packages/f9/c2/1727c1438256c71ed32753b23ec2e6fe7b6dff66a598f6566cfe8139305e/charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613", size = 94333 }, + { url = "https://files.pythonhosted.org/packages/09/c8/0e17270496a05839f8b500c1166e3261d1226e39b698a735805ec206967b/charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade", size = 101454 }, + { url = "https://files.pythonhosted.org/packages/54/2f/28659eee7f5d003e0f5a3b572765bf76d6e0fe6601ab1f1b1dd4cba7e4f1/charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa", size = 196326 }, + { url = "https://files.pythonhosted.org/packages/d1/18/92869d5c0057baa973a3ee2af71573be7b084b3c3d428fe6463ce71167f8/charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a", size = 125614 }, + { url = "https://files.pythonhosted.org/packages/d6/27/327904c5a54a7796bb9f36810ec4173d2df5d88b401d2b95ef53111d214e/charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0", size = 120450 }, + { url = "https://files.pythonhosted.org/packages/a4/23/65af317914a0308495133b2d654cf67b11bbd6ca16637c4e8a38f80a5a69/charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a", size = 140135 }, + { url = "https://files.pythonhosted.org/packages/f2/41/6190102ad521a8aa888519bb014a74251ac4586cde9b38e790901684f9ab/charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242", size = 150413 }, + { url = "https://files.pythonhosted.org/packages/7b/ab/f47b0159a69eab9bd915591106859f49670c75f9a19082505ff16f50efc0/charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b", size = 142992 }, + { url = "https://files.pythonhosted.org/packages/28/89/60f51ad71f63aaaa7e51a2a2ad37919985a341a1d267070f212cdf6c2d22/charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62", size = 144871 }, + { url = "https://files.pythonhosted.org/packages/0c/48/0050550275fea585a6e24460b42465020b53375017d8596c96be57bfabca/charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0", size = 146756 }, + { url = "https://files.pythonhosted.org/packages/dc/b5/47f8ee91455946f745e6c9ddbb0f8f50314d2416dd922b213e7d5551ad09/charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd", size = 141034 }, + { url = "https://files.pythonhosted.org/packages/84/79/5c731059ebab43e80bf61fa51666b9b18167974b82004f18c76378ed31a3/charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be", size = 149434 }, + { url = "https://files.pythonhosted.org/packages/ca/f3/0719cd09fc4dc42066f239cb3c48ced17fc3316afca3e2a30a4756fe49ab/charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d", size = 152443 }, + { url = "https://files.pythonhosted.org/packages/f7/0e/c6357297f1157c8e8227ff337e93fd0a90e498e3d6ab96b2782204ecae48/charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3", size = 150294 }, + { url = "https://files.pythonhosted.org/packages/54/9a/acfa96dc4ea8c928040b15822b59d0863d6e1757fba8bd7de3dc4f761c13/charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742", size = 145314 }, + { url = "https://files.pythonhosted.org/packages/73/1c/b10a63032eaebb8d7bcb8544f12f063f41f5f463778ac61da15d9985e8b6/charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2", size = 94724 }, + { url = "https://files.pythonhosted.org/packages/c5/77/3a78bf28bfaa0863f9cfef278dbeadf55efe064eafff8c7c424ae3c4c1bf/charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca", size = 102159 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "cryptography" +version = "44.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/4c/45dfa6829acffa344e3967d6006ee4ae8be57af746ae2eba1c431949b32c/cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", size = 710657 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/5b/3759e30a103144e29632e7cb72aec28cedc79e514b2ea8896bb17163c19b/cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", size = 3922710 }, + { url = "https://files.pythonhosted.org/packages/5f/58/3b14bf39f1a0cfd679e753e8647ada56cddbf5acebffe7db90e184c76168/cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", size = 4137546 }, + { url = "https://files.pythonhosted.org/packages/98/65/13d9e76ca19b0ba5603d71ac8424b5694415b348e719db277b5edc985ff5/cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", size = 3915420 }, + { url = "https://files.pythonhosted.org/packages/b1/07/40fe09ce96b91fc9276a9ad272832ead0fddedcba87f1190372af8e3039c/cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", size = 4154498 }, + { url = "https://files.pythonhosted.org/packages/75/ea/af65619c800ec0a7e4034207aec543acdf248d9bffba0533342d1bd435e1/cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", size = 3932569 }, + { url = "https://files.pythonhosted.org/packages/c7/af/d1deb0c04d59612e3d5e54203159e284d3e7a6921e565bb0eeb6269bdd8a/cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", size = 4016721 }, + { url = "https://files.pythonhosted.org/packages/bd/69/7ca326c55698d0688db867795134bdfac87136b80ef373aaa42b225d6dd5/cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", size = 4240915 }, + { url = "https://files.pythonhosted.org/packages/1a/07/5f165b6c65696ef75601b781a280fc3b33f1e0cd6aa5a92d9fb96c410e97/cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", size = 3922613 }, + { url = "https://files.pythonhosted.org/packages/28/34/6b3ac1d80fc174812486561cf25194338151780f27e438526f9c64e16869/cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", size = 4137925 }, + { url = "https://files.pythonhosted.org/packages/d0/c7/c656eb08fd22255d21bc3129625ed9cd5ee305f33752ef2278711b3fa98b/cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", size = 3915417 }, + { url = "https://files.pythonhosted.org/packages/ef/82/72403624f197af0db6bac4e58153bc9ac0e6020e57234115db9596eee85d/cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", size = 4155160 }, + { url = "https://files.pythonhosted.org/packages/a2/cd/2f3c440913d4329ade49b146d74f2e9766422e1732613f57097fea61f344/cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", size = 3932331 }, + { url = "https://files.pythonhosted.org/packages/7f/df/8be88797f0a1cca6e255189a57bb49237402b1880d6e8721690c5603ac23/cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", size = 4017372 }, + { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 }, + { url = "https://files.pythonhosted.org/packages/1a/aa/ba8a7467c206cb7b62f09b4168da541b5109838627f582843bbbe0235e8e/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4", size = 3850615 }, + { url = "https://files.pythonhosted.org/packages/89/fa/b160e10a64cc395d090105be14f399b94e617c879efd401188ce0fea39ee/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", size = 4081622 }, + { url = "https://files.pythonhosted.org/packages/47/8f/20ff0656bb0cf7af26ec1d01f780c5cfbaa7666736063378c5f48558b515/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", size = 3867546 }, + { url = "https://files.pythonhosted.org/packages/38/d9/28edf32ee2fcdca587146bcde90102a7319b2f2c690edfa627e46d586050/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", size = 4090937 }, +] + +[[package]] +name = "docutils" +version = "0.20.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/53/a5da4f2c5739cf66290fac1431ee52aff6851c7c8ffd8264f13affd7bcdd/docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b", size = 2058365 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/87/f238c0670b94533ac0353a4e2a1a771a0cc73277b88bff23d3ae35a256c1/docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6", size = 572666 }, +] + +[[package]] +name = "hatchling" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "pathspec" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "trove-classifiers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/8a/cc1debe3514da292094f1c3a700e4ca25442489731ef7c0814358816bb03/hatchling-1.27.0.tar.gz", hash = "sha256:971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6", size = 54983 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/e7/ae38d7a6dfba0533684e0b2136817d667588ae3ec984c1a4e5df5eb88482/hatchling-1.27.0-py3-none-any.whl", hash = "sha256:d3a2f3567c4f926ea39849cdf924c7e99e6686c9c8e288ae1037c8fa2a5d937b", size = 75794 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514 }, +] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115 }, +] + +[[package]] +name = "jaraco-classes" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777 }, +] + +[[package]] +name = "jaraco-context" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-tarfile", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", size = 13912 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", size = 6825 }, +] + +[[package]] +name = "jaraco-functools" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz", hash = "sha256:70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", size = 19159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl", hash = "sha256:ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", size = 10187 }, +] + +[[package]] +name = "jeepney" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", size = 106005 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", size = 48435 }, +] + +[[package]] +name = "keyring" +version = "25.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.12'" }, + { name = "importlib-resources", marker = "python_full_version < '3.9'" }, + { name = "jaraco-classes" }, + { name = "jaraco-context" }, + { name = "jaraco-functools" }, + { name = "jeepney", marker = "sys_platform == 'linux'" }, + { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, + { name = "secretstorage", marker = "sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/24/64447b13df6a0e2797b586dad715766d756c932ce8ace7f67bd384d76ae0/keyring-25.5.0.tar.gz", hash = "sha256:4c753b3ec91717fe713c4edd522d625889d8973a349b0e582622f49766de58e6", size = 62675 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/c9/353c156fa2f057e669106e5d6bcdecf85ef8d3536ce68ca96f18dc7b6d6f/keyring-25.5.0-py3-none-any.whl", hash = "sha256:e67f8ac32b04be4714b42fe84ce7dad9c40985b9ca827c592cc303e7c26d9741", size = 39096 }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "more-itertools" +version = "10.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", size = 121020 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", size = 60952 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "nh3" +version = "0.2.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/f2/eb781d94c7855e9129cbbdd3ab09a470441e4176a82a396ae1df270a7333/nh3-0.2.20.tar.gz", hash = "sha256:9705c42d7ff88a0bea546c82d7fe5e59135e3d3f057e485394f491248a1f8ed5", size = 17489 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/65/d31d93b6d1e5fe80d0cc18f0b96eaa561edfa0a15a6ef6b0fce50202a931/nh3-0.2.20-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e1061a4ab6681f6bdf72b110eea0c4e1379d57c9de937db3be4202f7ad6043db", size = 1202187 }, + { url = "https://files.pythonhosted.org/packages/b4/ae/5b03bf198e06921454012e4b9a51e676d26fd37d9fdc1f29371a0b380487/nh3-0.2.20-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb4254b1dac4a1ee49919a5b3f1caf9803ea8dada1816d9e8289e63d3cd0dd9a", size = 737822 }, + { url = "https://files.pythonhosted.org/packages/0a/53/a12dffb6ee3772deba82eb5997667fc835afd2e813d1f4080d8738f29eec/nh3-0.2.20-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ae9cbd713524cdb81e64663d0d6aae26f678db9f2cd9db0bf162606f1f9f20c", size = 756643 }, + { url = "https://files.pythonhosted.org/packages/d0/0c/6cd2c5ac3e6e31f2a28721e8e2a924cb6b05ad054bf787bd1816ffd40b96/nh3-0.2.20-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e1f7370b4e14cc03f5ae141ef30a1caf81fa5787711f80be9081418dd9eb79d2", size = 923415 }, + { url = "https://files.pythonhosted.org/packages/64/f0/229a6c8b81b86ba22d8e7f27ade62cb2fcfb987e570f49944fdd8490a76a/nh3-0.2.20-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:ac4d27dc836a476efffc6eb661994426b8b805c951b29c9cf2ff36bc9ad58bc5", size = 994959 }, + { url = "https://files.pythonhosted.org/packages/75/e3/62ae3d3b658739ee15b129356fe6d4c4bc8ab235d7bf2e0d2794d64f7bc6/nh3-0.2.20-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4fd2e9248725ebcedac3997a8d3da0d90a12a28c9179c6ba51f1658938ac30d0", size = 915777 }, + { url = "https://files.pythonhosted.org/packages/45/bd/8405d03371e335f02eb72e09dcf73307f8fd3095e4165cec6836346fe3db/nh3-0.2.20-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f7d564871833ddbe54df3aa59053b1110729d3a800cb7628ae8f42adb3d75208", size = 908614 }, + { url = "https://files.pythonhosted.org/packages/ee/f8/5d977f09cf82c1f22a864375f471db111530fc79c88efdf0659fe6d3d6bc/nh3-0.2.20-cp313-cp313t-win32.whl", hash = "sha256:d2a176fd4306b6f0f178a3f67fac91bd97a3a8d8fafb771c9b9ef675ba5c8886", size = 540482 }, + { url = "https://files.pythonhosted.org/packages/c5/f4/e34afe5fd8bed1920eac2974c9c853f548b4b65c139444285ffd2a68495d/nh3-0.2.20-cp313-cp313t-win_amd64.whl", hash = "sha256:6ed834c68452a600f517dd3e1534dbfaff1f67f98899fecf139a055a25d99150", size = 541302 }, + { url = "https://files.pythonhosted.org/packages/92/08/5e3b61eed1bc0efeb330ddc5cf5194f28a0b7be7943aa20bd44cfe14650b/nh3-0.2.20-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:76e2f603b30c02ff6456b233a83fc377dedab6a50947b04e960a6b905637b776", size = 1202141 }, + { url = "https://files.pythonhosted.org/packages/29/d2/3377f8006c71e95e007b07b5bfcac22c9de4744ca3efb23b396d3deb9581/nh3-0.2.20-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:181063c581defe683bd4bb78188ac9936d208aebbc74c7f7c16b6a32ae2ebb38", size = 760699 }, + { url = "https://files.pythonhosted.org/packages/37/d7/7077f925d7d680d53dcb6e18a4af13d1a7da59761c06c193bfa249a7470a/nh3-0.2.20-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:231addb7643c952cd6d71f1c8702d703f8fe34afcb20becb3efb319a501a12d7", size = 747353 }, + { url = "https://files.pythonhosted.org/packages/cb/59/6b2f32af477aae81f1454a7f6ef490ebc3c22dd9e1370e73fcfe243dc07a/nh3-0.2.20-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1b9a8340a0aab991c68a5ca938d35ef4a8a3f4bf1b455da8855a40bee1fa0ace", size = 854125 }, + { url = "https://files.pythonhosted.org/packages/5b/f2/c3d2f7b801477b8b387b51fbefd16dc7ade888aeac547f18ba0558fd6f48/nh3-0.2.20-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10317cd96fe4bbd4eb6b95f3920b71c902157ad44fed103fdcde43e3b8ee8be6", size = 817453 }, + { url = "https://files.pythonhosted.org/packages/42/4d/f7e3a35506a0eba6eedafc21ad52773985511eb838812e9f96354831ad3c/nh3-0.2.20-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8698db4c04b140800d1a1cd3067fda399e36e1e2b8fc1fe04292a907350a3e9b", size = 891694 }, + { url = "https://files.pythonhosted.org/packages/e6/0e/c499453c296fb40366e3069cd68fde77a10f0a30a17b9d3b491eb3ebc5bf/nh3-0.2.20-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eb04b9c3deb13c3a375ea39fd4a3c00d1f92e8fb2349f25f1e3e4506751774b", size = 744388 }, + { url = "https://files.pythonhosted.org/packages/18/67/c3de8022ba2719bdbbdd3704d1e32dbc7d3f8ac8646247711645fc90d051/nh3-0.2.20-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92f3f1c4f47a2c6f3ca7317b1d5ced05bd29556a75d3a4e2715652ae9d15c05d", size = 764831 }, + { url = "https://files.pythonhosted.org/packages/f0/14/a4ea40e2439717d11c3104fc2dc0ac412301b7aeb81d6a3d0e6505c77e7d/nh3-0.2.20-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ddefa9fd6794a87e37d05827d299d4b53a3ec6f23258101907b96029bfef138a", size = 923334 }, + { url = "https://files.pythonhosted.org/packages/ed/ae/e8ee8afaf67903dd304f390056d1ea620327524e2ad66127a331b14d5d98/nh3-0.2.20-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:ce3731c8f217685d33d9268362e5b4f770914e922bba94d368ab244a59a6c397", size = 994873 }, + { url = "https://files.pythonhosted.org/packages/20/b5/02122cfe3b36cf0ba0fcd73a04fd462e1f7a9d91b456f6e0b70e46df21c7/nh3-0.2.20-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:09f037c02fc2c43b211ff1523de32801dcfb0918648d8e651c36ef890f1731ec", size = 915707 }, + { url = "https://files.pythonhosted.org/packages/47/d3/5df43cc3570cdc9eb1dc79a39191f89fedf8bcefd8d30a161ff1dffb146c/nh3-0.2.20-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:813f1c8012dd64c990514b795508abb90789334f76a561fa0fd4ca32d2275330", size = 908539 }, + { url = "https://files.pythonhosted.org/packages/4f/fd/aa000f6c76a832c488eac26f20d2e8a221ba2b965efce692f14ebc4290bf/nh3-0.2.20-cp38-abi3-win32.whl", hash = "sha256:47b2946c0e13057855209daeffb45dc910bd0c55daf10190bb0b4b60e2999784", size = 540439 }, + { url = "https://files.pythonhosted.org/packages/19/31/d65594efd3b42b1de2335d576eb77525691fc320dbf8617948ee05c008e5/nh3-0.2.20-cp38-abi3-win_amd64.whl", hash = "sha256:da87573f03084edae8eb87cfe811ec338606288f81d333c07d2a9a0b9b976c0b", size = 541249 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "pkginfo" +version = "1.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/a5/fa2432da887652e3a0c07661ebe4aabe7f4692936c742da489178acd34de/pkginfo-1.12.0.tar.gz", hash = "sha256:8ad91a0445a036782b9366ef8b8c2c50291f83a553478ba8580c73d3215700cf", size = 451375 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/11/4af184fbd8ae13daa13953212b27a212f4e63772ca8a0dd84d08b60ed206/pkginfo-1.12.0-py3-none-any.whl", hash = "sha256:dcd589c9be4da8973eceffa247733c144812759aa67eaf4bbf97016a02f39088", size = 32322 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "2.10.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/0f/27908242621b14e649a84e62b133de45f84c255eecb350ab02979844a788/pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9", size = 786486 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/51/72c18c55cf2f46ff4f91ebcc8f75aa30f7305f3d726be3f4ebffb4ae972b/pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d", size = 456997 }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/9f/7de1f19b6aea45aeb441838782d68352e71bfa98ee6fa048d5041991b33e/pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235", size = 412785 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/ce/60fd96895c09738648c83f3f00f595c807cb6735c70d3306b548cc96dd49/pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a", size = 1897984 }, + { url = "https://files.pythonhosted.org/packages/fd/b9/84623d6b6be98cc209b06687d9bca5a7b966ffed008d15225dd0d20cce2e/pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b", size = 1807491 }, + { url = "https://files.pythonhosted.org/packages/01/72/59a70165eabbc93b1111d42df9ca016a4aa109409db04304829377947028/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278", size = 1831953 }, + { url = "https://files.pythonhosted.org/packages/7c/0c/24841136476adafd26f94b45bb718a78cb0500bd7b4f8d667b67c29d7b0d/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05", size = 1856071 }, + { url = "https://files.pythonhosted.org/packages/53/5e/c32957a09cceb2af10d7642df45d1e3dbd8596061f700eac93b801de53c0/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4", size = 2038439 }, + { url = "https://files.pythonhosted.org/packages/e4/8f/979ab3eccd118b638cd6d8f980fea8794f45018255a36044dea40fe579d4/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f", size = 2787416 }, + { url = "https://files.pythonhosted.org/packages/02/1d/00f2e4626565b3b6d3690dab4d4fe1a26edd6a20e53749eb21ca892ef2df/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08", size = 2134548 }, + { url = "https://files.pythonhosted.org/packages/9d/46/3112621204128b90898adc2e721a3cd6cf5626504178d6f32c33b5a43b79/pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6", size = 1989882 }, + { url = "https://files.pythonhosted.org/packages/49/ec/557dd4ff5287ffffdf16a31d08d723de6762bb1b691879dc4423392309bc/pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807", size = 1995829 }, + { url = "https://files.pythonhosted.org/packages/6e/b2/610dbeb74d8d43921a7234555e4c091cb050a2bdb8cfea86d07791ce01c5/pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c", size = 2091257 }, + { url = "https://files.pythonhosted.org/packages/8c/7f/4bf8e9d26a9118521c80b229291fa9558a07cdd9a968ec2d5c1026f14fbc/pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206", size = 2143894 }, + { url = "https://files.pythonhosted.org/packages/1f/1c/875ac7139c958f4390f23656fe696d1acc8edf45fb81e4831960f12cd6e4/pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c", size = 1816081 }, + { url = "https://files.pythonhosted.org/packages/d7/41/55a117acaeda25ceae51030b518032934f251b1dac3704a53781383e3491/pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17", size = 1981109 }, + { url = "https://files.pythonhosted.org/packages/27/39/46fe47f2ad4746b478ba89c561cafe4428e02b3573df882334bd2964f9cb/pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8", size = 1895553 }, + { url = "https://files.pythonhosted.org/packages/1c/00/0804e84a78b7fdb394fff4c4f429815a10e5e0993e6ae0e0b27dd20379ee/pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330", size = 1807220 }, + { url = "https://files.pythonhosted.org/packages/01/de/df51b3bac9820d38371f5a261020f505025df732ce566c2a2e7970b84c8c/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52", size = 1829727 }, + { url = "https://files.pythonhosted.org/packages/5f/d9/c01d19da8f9e9fbdb2bf99f8358d145a312590374d0dc9dd8dbe484a9cde/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4", size = 1854282 }, + { url = "https://files.pythonhosted.org/packages/5f/84/7db66eb12a0dc88c006abd6f3cbbf4232d26adfd827a28638c540d8f871d/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c", size = 2037437 }, + { url = "https://files.pythonhosted.org/packages/34/ac/a2537958db8299fbabed81167d58cc1506049dba4163433524e06a7d9f4c/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de", size = 2780899 }, + { url = "https://files.pythonhosted.org/packages/4a/c1/3e38cd777ef832c4fdce11d204592e135ddeedb6c6f525478a53d1c7d3e5/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025", size = 2135022 }, + { url = "https://files.pythonhosted.org/packages/7a/69/b9952829f80fd555fe04340539d90e000a146f2a003d3fcd1e7077c06c71/pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e", size = 1987969 }, + { url = "https://files.pythonhosted.org/packages/05/72/257b5824d7988af43460c4e22b63932ed651fe98804cc2793068de7ec554/pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919", size = 1994625 }, + { url = "https://files.pythonhosted.org/packages/73/c3/78ed6b7f3278a36589bcdd01243189ade7fc9b26852844938b4d7693895b/pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c", size = 2090089 }, + { url = "https://files.pythonhosted.org/packages/8d/c8/b4139b2f78579960353c4cd987e035108c93a78371bb19ba0dc1ac3b3220/pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc", size = 2142496 }, + { url = "https://files.pythonhosted.org/packages/3e/f8/171a03e97eb36c0b51981efe0f78460554a1d8311773d3d30e20c005164e/pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9", size = 1811758 }, + { url = "https://files.pythonhosted.org/packages/6a/fe/4e0e63c418c1c76e33974a05266e5633e879d4061f9533b1706a86f77d5b/pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5", size = 1980864 }, + { url = "https://files.pythonhosted.org/packages/50/fc/93f7238a514c155a8ec02fc7ac6376177d449848115e4519b853820436c5/pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89", size = 1864327 }, + { url = "https://files.pythonhosted.org/packages/be/51/2e9b3788feb2aebff2aa9dfbf060ec739b38c05c46847601134cc1fed2ea/pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f", size = 1895239 }, + { url = "https://files.pythonhosted.org/packages/7b/9e/f8063952e4a7d0127f5d1181addef9377505dcce3be224263b25c4f0bfd9/pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02", size = 1805070 }, + { url = "https://files.pythonhosted.org/packages/2c/9d/e1d6c4561d262b52e41b17a7ef8301e2ba80b61e32e94520271029feb5d8/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c", size = 1828096 }, + { url = "https://files.pythonhosted.org/packages/be/65/80ff46de4266560baa4332ae3181fffc4488ea7d37282da1a62d10ab89a4/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac", size = 1857708 }, + { url = "https://files.pythonhosted.org/packages/d5/ca/3370074ad758b04d9562b12ecdb088597f4d9d13893a48a583fb47682cdf/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb", size = 2037751 }, + { url = "https://files.pythonhosted.org/packages/b1/e2/4ab72d93367194317b99d051947c071aef6e3eb95f7553eaa4208ecf9ba4/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529", size = 2733863 }, + { url = "https://files.pythonhosted.org/packages/8a/c6/8ae0831bf77f356bb73127ce5a95fe115b10f820ea480abbd72d3cc7ccf3/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35", size = 2161161 }, + { url = "https://files.pythonhosted.org/packages/f1/f4/b2fe73241da2429400fc27ddeaa43e35562f96cf5b67499b2de52b528cad/pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089", size = 1993294 }, + { url = "https://files.pythonhosted.org/packages/77/29/4bb008823a7f4cc05828198153f9753b3bd4c104d93b8e0b1bfe4e187540/pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381", size = 2001468 }, + { url = "https://files.pythonhosted.org/packages/f2/a9/0eaceeba41b9fad851a4107e0cf999a34ae8f0d0d1f829e2574f3d8897b0/pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb", size = 2091413 }, + { url = "https://files.pythonhosted.org/packages/d8/36/eb8697729725bc610fd73940f0d860d791dc2ad557faaefcbb3edbd2b349/pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae", size = 2154735 }, + { url = "https://files.pythonhosted.org/packages/52/e5/4f0fbd5c5995cc70d3afed1b5c754055bb67908f55b5cb8000f7112749bf/pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c", size = 1833633 }, + { url = "https://files.pythonhosted.org/packages/ee/f2/c61486eee27cae5ac781305658779b4a6b45f9cc9d02c90cb21b940e82cc/pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16", size = 1986973 }, + { url = "https://files.pythonhosted.org/packages/df/a6/e3f12ff25f250b02f7c51be89a294689d175ac76e1096c32bf278f29ca1e/pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e", size = 1883215 }, + { url = "https://files.pythonhosted.org/packages/0f/d6/91cb99a3c59d7b072bded9959fbeab0a9613d5a4935773c0801f1764c156/pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073", size = 1895033 }, + { url = "https://files.pythonhosted.org/packages/07/42/d35033f81a28b27dedcade9e967e8a40981a765795c9ebae2045bcef05d3/pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08", size = 1807542 }, + { url = "https://files.pythonhosted.org/packages/41/c2/491b59e222ec7e72236e512108ecad532c7f4391a14e971c963f624f7569/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf", size = 1827854 }, + { url = "https://files.pythonhosted.org/packages/e3/f3/363652651779113189cefdbbb619b7b07b7a67ebb6840325117cc8cc3460/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737", size = 1857389 }, + { url = "https://files.pythonhosted.org/packages/5f/97/be804aed6b479af5a945daec7538d8bf358d668bdadde4c7888a2506bdfb/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2", size = 2037934 }, + { url = "https://files.pythonhosted.org/packages/42/01/295f0bd4abf58902917e342ddfe5f76cf66ffabfc57c2e23c7681a1a1197/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107", size = 2735176 }, + { url = "https://files.pythonhosted.org/packages/9d/a0/cd8e9c940ead89cc37812a1a9f310fef59ba2f0b22b4e417d84ab09fa970/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51", size = 2160720 }, + { url = "https://files.pythonhosted.org/packages/73/ae/9d0980e286627e0aeca4c352a60bd760331622c12d576e5ea4441ac7e15e/pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a", size = 1992972 }, + { url = "https://files.pythonhosted.org/packages/bf/ba/ae4480bc0292d54b85cfb954e9d6bd226982949f8316338677d56541b85f/pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc", size = 2001477 }, + { url = "https://files.pythonhosted.org/packages/55/b7/e26adf48c2f943092ce54ae14c3c08d0d221ad34ce80b18a50de8ed2cba8/pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960", size = 2091186 }, + { url = "https://files.pythonhosted.org/packages/ba/cc/8491fff5b608b3862eb36e7d29d36a1af1c945463ca4c5040bf46cc73f40/pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23", size = 2154429 }, + { url = "https://files.pythonhosted.org/packages/78/d8/c080592d80edd3441ab7f88f865f51dae94a157fc64283c680e9f32cf6da/pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05", size = 1833713 }, + { url = "https://files.pythonhosted.org/packages/83/84/5ab82a9ee2538ac95a66e51f6838d6aba6e0a03a42aa185ad2fe404a4e8f/pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337", size = 1987897 }, + { url = "https://files.pythonhosted.org/packages/df/c3/b15fb833926d91d982fde29c0624c9f225da743c7af801dace0d4e187e71/pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5", size = 1882983 }, + { url = "https://files.pythonhosted.org/packages/97/bb/c62074a65a32ed279bef44862e89fabb5ab1a81df8a9d383bddb4f49a1e0/pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62", size = 1901535 }, + { url = "https://files.pythonhosted.org/packages/9b/59/e224c93f95ffd4f5d37f1d148c569eda8ae23446ab8daf3a211ac0533e08/pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab", size = 1781287 }, + { url = "https://files.pythonhosted.org/packages/11/e2/33629134e577543b9335c5ca9bbfd2348f5023fda956737777a7a3b86788/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864", size = 1834575 }, + { url = "https://files.pythonhosted.org/packages/fe/16/82e0849b3c6deb0330c07f1a8d55708d003ec8b1fd38ac84c7a830e25252/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067", size = 1857948 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/cdee588a7440bc58b6351e8b8dc2432e38b1144b5ae6625bfbdfb7fa76d9/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd", size = 2041138 }, + { url = "https://files.pythonhosted.org/packages/1d/0e/73e0d1dff37a29c31e5b3e8587d228ced736cc7af9f81f6d7d06aa47576c/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5", size = 2783820 }, + { url = "https://files.pythonhosted.org/packages/9a/b1/f164d05be347b99b91327ea9dd1118562951d2c86e1ea943ef73636b0810/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78", size = 2138035 }, + { url = "https://files.pythonhosted.org/packages/72/44/cf1f20d3036d7e1545eafde0af4f3172075573a407a3a20313115c8990ff/pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f", size = 1991778 }, + { url = "https://files.pythonhosted.org/packages/5d/4c/486d8ddd595892e7d791f26dfd3e51bd8abea478eb7747fe2bbe890a2177/pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36", size = 1996644 }, + { url = "https://files.pythonhosted.org/packages/33/2a/9a1cd4c8aca242816be431583a3250797f2932fad32d35ad5aefcea179bc/pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a", size = 2091778 }, + { url = "https://files.pythonhosted.org/packages/8f/61/03576dac806c49e76a714c23f501420b0aeee80f97b995fc4b28fe63a010/pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b", size = 2146020 }, + { url = "https://files.pythonhosted.org/packages/72/82/e236d762052d24949aabad3952bc2c8635a470d6f3cbdd69498692afa679/pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618", size = 1819443 }, + { url = "https://files.pythonhosted.org/packages/6e/89/26816cad528ca5d4af9be33aa91507504c4576100e53b371b5bc6d3c797b/pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4", size = 1979478 }, + { url = "https://files.pythonhosted.org/packages/bc/6a/d741ce0c7da75ce9b394636a406aace00ad992ae417935ef2ad2e67fb970/pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967", size = 1898376 }, + { url = "https://files.pythonhosted.org/packages/bd/68/6ba18e30f10c7051bc55f1dffeadbee51454b381c91846104892a6d3b9cd/pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60", size = 1777246 }, + { url = "https://files.pythonhosted.org/packages/36/b8/6f1b7c5f068c00dfe179b8762bc1d32c75c0e9f62c9372174b1b64a74aa8/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854", size = 1832148 }, + { url = "https://files.pythonhosted.org/packages/d9/83/83ff64d599847f080a93df119e856e3bd93063cced04b9a27eb66d863831/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9", size = 1856371 }, + { url = "https://files.pythonhosted.org/packages/72/e9/974e6c73f59627c446833ecc306cadd199edab40abcfa093372a5a5c0156/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd", size = 2038686 }, + { url = "https://files.pythonhosted.org/packages/5e/bb/5e912d02dcf29aebb2da35e5a1a26088c39ffc0b1ea81242ee9db6f1f730/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be", size = 2785725 }, + { url = "https://files.pythonhosted.org/packages/85/d7/936846087424c882d89c853711687230cd60179a67c79c34c99b64f92625/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e", size = 2135177 }, + { url = "https://files.pythonhosted.org/packages/82/72/5a386e5ce8d3e933c3f283e61357474181c39383f38afffc15a6152fa1c5/pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792", size = 1989877 }, + { url = "https://files.pythonhosted.org/packages/ce/5c/b1c417a5fd67ce132d78d16a6ba7629dc7f188dbd4f7c30ef58111ee5147/pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01", size = 1996006 }, + { url = "https://files.pythonhosted.org/packages/dd/04/4e18f2c42b29929882f30e4c09a3a039555158995a4ac730a73585198a66/pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9", size = 2091441 }, + { url = "https://files.pythonhosted.org/packages/06/84/5a332345b7efb5ab361f916eaf7316ef010e72417e8c7dd3d34462ee9840/pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131", size = 2144471 }, + { url = "https://files.pythonhosted.org/packages/54/58/23caa58c35d36627156789c0fb562264c12cfdb451c75eb275535188a96f/pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3", size = 1816563 }, + { url = "https://files.pythonhosted.org/packages/f7/9c/e83f08adc8e222b43c7f11d98b27eba08f21bcb259bcbf74743ce903c49c/pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c", size = 1983137 }, + { url = "https://files.pythonhosted.org/packages/7c/60/e5eb2d462595ba1f622edbe7b1d19531e510c05c405f0b87c80c1e89d5b1/pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6", size = 1894016 }, + { url = "https://files.pythonhosted.org/packages/61/20/da7059855225038c1c4326a840908cc7ca72c7198cb6addb8b92ec81c1d6/pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676", size = 1771648 }, + { url = "https://files.pythonhosted.org/packages/8f/fc/5485cf0b0bb38da31d1d292160a4d123b5977841ddc1122c671a30b76cfd/pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d", size = 1826929 }, + { url = "https://files.pythonhosted.org/packages/a1/ff/fb1284a210e13a5f34c639efc54d51da136074ffbe25ec0c279cf9fbb1c4/pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c", size = 1980591 }, + { url = "https://files.pythonhosted.org/packages/f1/14/77c1887a182d05af74f6aeac7b740da3a74155d3093ccc7ee10b900cc6b5/pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27", size = 1981326 }, + { url = "https://files.pythonhosted.org/packages/06/aa/6f1b2747f811a9c66b5ef39d7f02fbb200479784c75e98290d70004b1253/pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f", size = 1989205 }, + { url = "https://files.pythonhosted.org/packages/7a/d2/8ce2b074d6835f3c88d85f6d8a399790043e9fdb3d0e43455e72d19df8cc/pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed", size = 2079616 }, + { url = "https://files.pythonhosted.org/packages/65/71/af01033d4e58484c3db1e5d13e751ba5e3d6b87cc3368533df4c50932c8b/pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f", size = 2133265 }, + { url = "https://files.pythonhosted.org/packages/33/72/f881b5e18fbb67cf2fb4ab253660de3c6899dbb2dba409d0b757e3559e3d/pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c", size = 2001864 }, + { url = "https://files.pythonhosted.org/packages/85/3e/f6f75ba36678fee11dd07a7729e9ed172ecf31e3f50a5d636e9605eee2af/pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f", size = 1894250 }, + { url = "https://files.pythonhosted.org/packages/d3/2d/a40578918e2eb5b4ee0d206a4fb6c4040c2bf14e28d29fba9bd7e7659d16/pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31", size = 1772035 }, + { url = "https://files.pythonhosted.org/packages/7f/ee/0377e9f4ca5a47e8885f670a65c0a647ddf9ce98d50bf7547cf8e1ee5771/pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3", size = 1827025 }, + { url = "https://files.pythonhosted.org/packages/fe/0b/a24d9ef762d05bebdfafd6d5d176b990728fa9ec8ea7b6040d6fb5f3caaa/pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154", size = 1980927 }, + { url = "https://files.pythonhosted.org/packages/00/bd/deadc1722eb7dfdf787a3bbcd32eabbdcc36931fd48671a850e1b9f2cd77/pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd", size = 1980918 }, + { url = "https://files.pythonhosted.org/packages/f0/05/5d09d0b0e92053d538927308ea1d35cb25ab543d9c3e2eb2d7653bc73690/pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a", size = 1989990 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/f7191346d1c3ac66049f618ee331359f8552a8b68a2daf916003c30b6dc8/pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97", size = 2079871 }, + { url = "https://files.pythonhosted.org/packages/f3/65/2caf4f7ad65413a137d43cb9578c54d1abd3224be786ad840263c1bf9e0f/pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2", size = 2133569 }, + { url = "https://files.pythonhosted.org/packages/fd/ab/718d9a1c41bb8d3e0e04d15b68b8afc135f8fcf552705b62f226225065c7/pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840", size = 2002035 }, +] + +[[package]] +name = "pygments" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756 }, +] + +[[package]] +name = "readme-renderer" +version = "43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "nh3" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/b5/536c775084d239df6345dccf9b043419c7e3308bc31be4c7882196abc62e/readme_renderer-43.0.tar.gz", hash = "sha256:1818dd28140813509eeed8d62687f7cd4f7bad90d4db586001c5dc09d4fde311", size = 31768 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/be/3ea20dc38b9db08387cf97997a85a7d51527ea2057d71118feb0aa8afa55/readme_renderer-43.0-py3-none-any.whl", hash = "sha256:19db308d86ecd60e5affa3b2a98f017af384678c63c88e5d4556a380e674f3f9", size = 13301 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, +] + +[[package]] +name = "rfc3986" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, +] + +[[package]] +name = "rich" +version = "13.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, +] + +[[package]] +name = "secretstorage" +version = "3.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "jeepney" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", size = 19739 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", size = 15221 }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + +[[package]] +name = "trove-classifiers" +version = "2024.10.21.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/99/85/92c2667cf221b37648041ce9319427f92fa76cbec634aad844e67e284706/trove_classifiers-2024.10.21.16.tar.gz", hash = "sha256:17cbd055d67d5e9d9de63293a8732943fabc21574e4c7b74edf112b4928cf5f3", size = 16153 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/35/5055ab8d215af853d07bbff1a74edf48f91ed308f037380a5ca52dd73348/trove_classifiers-2024.10.21.16-py3-none-any.whl", hash = "sha256:0fb11f1e995a757807a8ef1c03829fbd4998d817319abcef1f33165750f103be", size = 13546 }, +] + +[[package]] +name = "twine" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "keyring", marker = "platform_machine != 'ppc64le' and platform_machine != 's390x'" }, + { name = "packaging" }, + { name = "pkginfo" }, + { name = "readme-renderer" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "rfc3986" }, + { name = "rich" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/33/88b80116504b61759fa2db05e13f2296b0d2e73568f5e731d020c13843b8/twine-6.0.1.tar.gz", hash = "sha256:36158b09df5406e1c9c1fb8edb24fc2be387709443e7376689b938531582ee27", size = 227175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/df/dda5f85131ecc0d31e10f6dc6be98440ef9f685947917b86f462eed6864b/twine-6.0.1-py3-none-any.whl", hash = "sha256:9c6025b203b51521d53e200f4a08b116dee7500a38591668c6a6033117bdc218", size = 39398 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[[package]] +name = "wox-plugin" +version = "0.0.30" +source = { editable = "." } +dependencies = [ + { name = "pydantic" }, +] + +[package.optional-dependencies] +dev = [ + { name = "black" }, + { name = "hatchling" }, + { name = "twine" }, +] + +[package.metadata] +requires-dist = [ + { name = "black", marker = "extra == 'dev'", specifier = ">=23.0.0" }, + { name = "hatchling", marker = "extra == 'dev'", specifier = ">=1.18.0" }, + { name = "pydantic", specifier = ">=2.0.0" }, + { name = "twine", marker = "extra == 'dev'", specifier = ">=4.0.0" }, +] + +[[package]] +name = "zipp" +version = "3.20.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200 }, +] diff --git a/Wox.UI.Flutter/wox/.gitignore b/wox.ui.flutter/wox/.gitignore similarity index 100% rename from Wox.UI.Flutter/wox/.gitignore rename to wox.ui.flutter/wox/.gitignore diff --git a/Wox.UI.Flutter/wox/.metadata b/wox.ui.flutter/wox/.metadata similarity index 100% rename from Wox.UI.Flutter/wox/.metadata rename to wox.ui.flutter/wox/.metadata diff --git a/wox.ui.flutter/wox/Makefile b/wox.ui.flutter/wox/Makefile new file mode 100644 index 000000000..edb83fc80 --- /dev/null +++ b/wox.ui.flutter/wox/Makefile @@ -0,0 +1,39 @@ +.PHONY: clean build help + +# Determine the current platform +ifeq ($(OS),Windows_NT) + FLUTTER_TARGET := windows +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Linux) + FLUTTER_TARGET := linux + endif + ifeq ($(UNAME_S),Darwin) + FLUTTER_TARGET := macos + endif +endif + +UI_FLUTTER_DIR := ../../wox.core/resource/ui/flutter + +help: + @echo "Available commands:" + @echo " make clean - Clean build artifacts" + @echo " make build - Build Flutter UI for current platform ($(FLUTTER_TARGET))" + +clean: + flutter clean + rm -rf $(UI_FLUTTER_DIR) + +build: clean + flutter build $(FLUTTER_TARGET) + mkdir -p $(UI_FLUTTER_DIR) +ifeq ($(FLUTTER_TARGET),windows) + cp -r build/$(FLUTTER_TARGET)/x64/runner/Release $(UI_FLUTTER_DIR)/wox +endif +ifeq ($(FLUTTER_TARGET),linux) + cp -r build/$(FLUTTER_TARGET)/x64/release/bundle $(UI_FLUTTER_DIR)/wox +endif +ifeq ($(FLUTTER_TARGET),macos) + cp -r build/$(FLUTTER_TARGET)/Build/Products/Release/wox.app $(UI_FLUTTER_DIR) + chmod +x $(UI_FLUTTER_DIR)/wox.app/Contents/MacOS/wox +endif \ No newline at end of file diff --git a/Wox.UI.Flutter/wox/README.md b/wox.ui.flutter/wox/README.md similarity index 100% rename from Wox.UI.Flutter/wox/README.md rename to wox.ui.flutter/wox/README.md diff --git a/Wox.UI.Flutter/wox/analysis_options.yaml b/wox.ui.flutter/wox/analysis_options.yaml similarity index 100% rename from Wox.UI.Flutter/wox/analysis_options.yaml rename to wox.ui.flutter/wox/analysis_options.yaml diff --git a/Wox.UI.Flutter/wox/assets/fonts/SF-Pro-Display-Regular.otf b/wox.ui.flutter/wox/assets/fonts/SF-Pro-Display-Regular.otf similarity index 100% rename from Wox.UI.Flutter/wox/assets/fonts/SF-Pro-Display-Regular.otf rename to wox.ui.flutter/wox/assets/fonts/SF-Pro-Display-Regular.otf diff --git a/Wox.UI.Flutter/wox/lib/api/wox_api.dart b/wox.ui.flutter/wox/lib/api/wox_api.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/api/wox_api.dart rename to wox.ui.flutter/wox/lib/api/wox_api.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_checkbox_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_checkbox_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_checkbox_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_checkbox_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_head_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_head_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_head_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_head_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_item_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_item_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_item_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_item_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_label_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_label_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_label_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_label_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_newline_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_newline_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_newline_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_newline_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_select_ai_model_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_select_ai_model_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_select_ai_model_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_select_ai_model_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_select_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_select_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_select_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_select_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_table_update_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_table_update_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_table_update_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_table_update_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_table_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_table_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_table_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_table_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_textbox_view.dart b/wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_textbox_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/plugin/wox_setting_plugin_textbox_view.dart rename to wox.ui.flutter/wox/lib/components/plugin/wox_setting_plugin_textbox_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_hotkey_recorder_view.dart b/wox.ui.flutter/wox/lib/components/wox_hotkey_recorder_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_hotkey_recorder_view.dart rename to wox.ui.flutter/wox/lib/components/wox_hotkey_recorder_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_hotkey_view.dart b/wox.ui.flutter/wox/lib/components/wox_hotkey_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_hotkey_view.dart rename to wox.ui.flutter/wox/lib/components/wox_hotkey_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_image_view.dart b/wox.ui.flutter/wox/lib/components/wox_image_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_image_view.dart rename to wox.ui.flutter/wox/lib/components/wox_image_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_list_item_view.dart b/wox.ui.flutter/wox/lib/components/wox_list_item_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_list_item_view.dart rename to wox.ui.flutter/wox/lib/components/wox_list_item_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_preview_view.dart b/wox.ui.flutter/wox/lib/components/wox_preview_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_preview_view.dart rename to wox.ui.flutter/wox/lib/components/wox_preview_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_theme_icon_view.dart b/wox.ui.flutter/wox/lib/components/wox_theme_icon_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_theme_icon_view.dart rename to wox.ui.flutter/wox/lib/components/wox_theme_icon_view.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_theme_preview.dart b/wox.ui.flutter/wox/lib/components/wox_theme_preview.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_theme_preview.dart rename to wox.ui.flutter/wox/lib/components/wox_theme_preview.dart diff --git a/Wox.UI.Flutter/wox/lib/components/wox_tooltip_view.dart b/wox.ui.flutter/wox/lib/components/wox_tooltip_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/components/wox_tooltip_view.dart rename to wox.ui.flutter/wox/lib/components/wox_tooltip_view.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_checkbox.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_checkbox.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_checkbox.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_checkbox.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_head.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_head.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_head.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_head.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_label.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_label.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_label.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_label.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_newline.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_newline.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_newline.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_newline.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_select.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_select.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_select.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_select.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_select_ai_model.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_select_ai_model.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_select_ai_model.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_select_ai_model.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_table.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_table.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_table.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_table.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_textbox.dart b/wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_textbox.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/setting/wox_plugin_setting_textbox.dart rename to wox.ui.flutter/wox/lib/entity/setting/wox_plugin_setting_textbox.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/validator/wox_setting_validator.dart b/wox.ui.flutter/wox/lib/entity/validator/wox_setting_validator.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/validator/wox_setting_validator.dart rename to wox.ui.flutter/wox/lib/entity/validator/wox_setting_validator.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/validator/wox_setting_validator_is_number.dart b/wox.ui.flutter/wox/lib/entity/validator/wox_setting_validator_is_number.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/validator/wox_setting_validator_is_number.dart rename to wox.ui.flutter/wox/lib/entity/validator/wox_setting_validator_is_number.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/validator/wox_setting_validator_not_empty.dart b/wox.ui.flutter/wox/lib/entity/validator/wox_setting_validator_not_empty.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/validator/wox_setting_validator_not_empty.dart rename to wox.ui.flutter/wox/lib/entity/validator/wox_setting_validator_not_empty.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_ai.dart b/wox.ui.flutter/wox/lib/entity/wox_ai.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_ai.dart rename to wox.ui.flutter/wox/lib/entity/wox_ai.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_hotkey.dart b/wox.ui.flutter/wox/lib/entity/wox_hotkey.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_hotkey.dart rename to wox.ui.flutter/wox/lib/entity/wox_hotkey.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_image.dart b/wox.ui.flutter/wox/lib/entity/wox_image.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_image.dart rename to wox.ui.flutter/wox/lib/entity/wox_image.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_lang.dart b/wox.ui.flutter/wox/lib/entity/wox_lang.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_lang.dart rename to wox.ui.flutter/wox/lib/entity/wox_lang.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_plugin.dart b/wox.ui.flutter/wox/lib/entity/wox_plugin.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_plugin.dart rename to wox.ui.flutter/wox/lib/entity/wox_plugin.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_plugin_setting.dart b/wox.ui.flutter/wox/lib/entity/wox_plugin_setting.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_plugin_setting.dart rename to wox.ui.flutter/wox/lib/entity/wox_plugin_setting.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_preview.dart b/wox.ui.flutter/wox/lib/entity/wox_preview.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_preview.dart rename to wox.ui.flutter/wox/lib/entity/wox_preview.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_query.dart b/wox.ui.flutter/wox/lib/entity/wox_query.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_query.dart rename to wox.ui.flutter/wox/lib/entity/wox_query.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_response.dart b/wox.ui.flutter/wox/lib/entity/wox_response.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_response.dart rename to wox.ui.flutter/wox/lib/entity/wox_response.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_setting.dart b/wox.ui.flutter/wox/lib/entity/wox_setting.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_setting.dart rename to wox.ui.flutter/wox/lib/entity/wox_setting.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_theme.dart b/wox.ui.flutter/wox/lib/entity/wox_theme.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_theme.dart rename to wox.ui.flutter/wox/lib/entity/wox_theme.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_toolbar.dart b/wox.ui.flutter/wox/lib/entity/wox_toolbar.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_toolbar.dart rename to wox.ui.flutter/wox/lib/entity/wox_toolbar.dart diff --git a/Wox.UI.Flutter/wox/lib/entity/wox_websocket_msg.dart b/wox.ui.flutter/wox/lib/entity/wox_websocket_msg.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/entity/wox_websocket_msg.dart rename to wox.ui.flutter/wox/lib/entity/wox_websocket_msg.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_direction_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_direction_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_direction_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_direction_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_event_device_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_event_device_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_event_device_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_event_device_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_image_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_image_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_image_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_image_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_last_query_mode_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_last_query_mode_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_last_query_mode_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_last_query_mode_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_list_view_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_list_view_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_list_view_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_list_view_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_msg_method_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_msg_method_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_msg_method_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_msg_method_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_msg_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_msg_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_msg_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_msg_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_position_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_position_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_position_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_position_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_preview_scroll_position_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_preview_scroll_position_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_preview_scroll_position_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_preview_scroll_position_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_preview_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_preview_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_preview_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_preview_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_query_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_query_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_query_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_query_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_result_tail_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_result_tail_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_result_tail_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_result_tail_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/enums/wox_selection_type_enum.dart b/wox.ui.flutter/wox/lib/enums/wox_selection_type_enum.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/enums/wox_selection_type_enum.dart rename to wox.ui.flutter/wox/lib/enums/wox_selection_type_enum.dart diff --git a/Wox.UI.Flutter/wox/lib/main.dart b/wox.ui.flutter/wox/lib/main.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/main.dart rename to wox.ui.flutter/wox/lib/main.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_launcher_view.dart b/wox.ui.flutter/wox/lib/modules/launcher/views/wox_launcher_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_launcher_view.dart rename to wox.ui.flutter/wox/lib/modules/launcher/views/wox_launcher_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_query_box_view.dart b/wox.ui.flutter/wox/lib/modules/launcher/views/wox_query_box_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_query_box_view.dart rename to wox.ui.flutter/wox/lib/modules/launcher/views/wox_query_box_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_query_result_view.dart b/wox.ui.flutter/wox/lib/modules/launcher/views/wox_query_result_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_query_result_view.dart rename to wox.ui.flutter/wox/lib/modules/launcher/views/wox_query_result_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_query_toolbar_view.dart b/wox.ui.flutter/wox/lib/modules/launcher/views/wox_query_toolbar_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/launcher/views/wox_query_toolbar_view.dart rename to wox.ui.flutter/wox/lib/modules/launcher/views/wox_query_toolbar_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/launcher/wox_launcher_controller.dart b/wox.ui.flutter/wox/lib/modules/launcher/wox_launcher_controller.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/launcher/wox_launcher_controller.dart rename to wox.ui.flutter/wox/lib/modules/launcher/wox_launcher_controller.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_ai_view.dart b/wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_ai_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_ai_view.dart rename to wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_ai_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_general_view.dart b/wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_general_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_general_view.dart rename to wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_general_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_plugin_view.dart b/wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_plugin_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_plugin_view.dart rename to wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_plugin_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_theme_view.dart b/wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_theme_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_theme_view.dart rename to wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_theme_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_view.dart b/wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_view.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/setting/views/wox_setting_view.dart rename to wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_view.dart diff --git a/Wox.UI.Flutter/wox/lib/modules/setting/wox_setting_controller.dart b/wox.ui.flutter/wox/lib/modules/setting/wox_setting_controller.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/modules/setting/wox_setting_controller.dart rename to wox.ui.flutter/wox/lib/modules/setting/wox_setting_controller.dart diff --git a/Wox.UI.Flutter/wox/lib/services/linux_window_manager.dart b/wox.ui.flutter/wox/lib/services/linux_window_manager.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/services/linux_window_manager.dart rename to wox.ui.flutter/wox/lib/services/linux_window_manager.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/colors.dart b/wox.ui.flutter/wox/lib/utils/colors.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/colors.dart rename to wox.ui.flutter/wox/lib/utils/colors.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/consts.dart b/wox.ui.flutter/wox/lib/utils/consts.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/consts.dart rename to wox.ui.flutter/wox/lib/utils/consts.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/entity_factory.dart b/wox.ui.flutter/wox/lib/utils/entity_factory.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/entity_factory.dart rename to wox.ui.flutter/wox/lib/utils/entity_factory.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/env.dart b/wox.ui.flutter/wox/lib/utils/env.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/env.dart rename to wox.ui.flutter/wox/lib/utils/env.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/heartbeat_checker.dart b/wox.ui.flutter/wox/lib/utils/heartbeat_checker.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/heartbeat_checker.dart rename to wox.ui.flutter/wox/lib/utils/heartbeat_checker.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/linux_window_manager.dart b/wox.ui.flutter/wox/lib/utils/linux_window_manager.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/linux_window_manager.dart rename to wox.ui.flutter/wox/lib/utils/linux_window_manager.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/log.dart b/wox.ui.flutter/wox/lib/utils/log.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/log.dart rename to wox.ui.flutter/wox/lib/utils/log.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/picker.dart b/wox.ui.flutter/wox/lib/utils/picker.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/picker.dart rename to wox.ui.flutter/wox/lib/utils/picker.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/wox_http_util.dart b/wox.ui.flutter/wox/lib/utils/wox_http_util.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/wox_http_util.dart rename to wox.ui.flutter/wox/lib/utils/wox_http_util.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/wox_setting_util.dart b/wox.ui.flutter/wox/lib/utils/wox_setting_util.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/wox_setting_util.dart rename to wox.ui.flutter/wox/lib/utils/wox_setting_util.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/wox_theme_util.dart b/wox.ui.flutter/wox/lib/utils/wox_theme_util.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/wox_theme_util.dart rename to wox.ui.flutter/wox/lib/utils/wox_theme_util.dart diff --git a/Wox.UI.Flutter/wox/lib/utils/wox_websocket_msg_util.dart b/wox.ui.flutter/wox/lib/utils/wox_websocket_msg_util.dart similarity index 100% rename from Wox.UI.Flutter/wox/lib/utils/wox_websocket_msg_util.dart rename to wox.ui.flutter/wox/lib/utils/wox_websocket_msg_util.dart diff --git a/Wox.UI.Flutter/wox/linux/.gitignore b/wox.ui.flutter/wox/linux/.gitignore similarity index 100% rename from Wox.UI.Flutter/wox/linux/.gitignore rename to wox.ui.flutter/wox/linux/.gitignore diff --git a/Wox.UI.Flutter/wox/linux/CMakeLists.txt b/wox.ui.flutter/wox/linux/CMakeLists.txt similarity index 100% rename from Wox.UI.Flutter/wox/linux/CMakeLists.txt rename to wox.ui.flutter/wox/linux/CMakeLists.txt diff --git a/Wox.UI.Flutter/wox/linux/flutter/CMakeLists.txt b/wox.ui.flutter/wox/linux/flutter/CMakeLists.txt similarity index 100% rename from Wox.UI.Flutter/wox/linux/flutter/CMakeLists.txt rename to wox.ui.flutter/wox/linux/flutter/CMakeLists.txt diff --git a/Wox.UI.Flutter/wox/linux/flutter/generated_plugin_registrant.cc b/wox.ui.flutter/wox/linux/flutter/generated_plugin_registrant.cc similarity index 100% rename from Wox.UI.Flutter/wox/linux/flutter/generated_plugin_registrant.cc rename to wox.ui.flutter/wox/linux/flutter/generated_plugin_registrant.cc diff --git a/Wox.UI.Flutter/wox/linux/flutter/generated_plugin_registrant.h b/wox.ui.flutter/wox/linux/flutter/generated_plugin_registrant.h similarity index 100% rename from Wox.UI.Flutter/wox/linux/flutter/generated_plugin_registrant.h rename to wox.ui.flutter/wox/linux/flutter/generated_plugin_registrant.h diff --git a/Wox.UI.Flutter/wox/linux/flutter/generated_plugins.cmake b/wox.ui.flutter/wox/linux/flutter/generated_plugins.cmake similarity index 100% rename from Wox.UI.Flutter/wox/linux/flutter/generated_plugins.cmake rename to wox.ui.flutter/wox/linux/flutter/generated_plugins.cmake diff --git a/Wox.UI.Flutter/wox/linux/gtk_window.cc b/wox.ui.flutter/wox/linux/gtk_window.cc similarity index 100% rename from Wox.UI.Flutter/wox/linux/gtk_window.cc rename to wox.ui.flutter/wox/linux/gtk_window.cc diff --git a/Wox.UI.Flutter/wox/linux/gtk_window.h b/wox.ui.flutter/wox/linux/gtk_window.h similarity index 100% rename from Wox.UI.Flutter/wox/linux/gtk_window.h rename to wox.ui.flutter/wox/linux/gtk_window.h diff --git a/Wox.UI.Flutter/wox/linux/main.cc b/wox.ui.flutter/wox/linux/main.cc similarity index 100% rename from Wox.UI.Flutter/wox/linux/main.cc rename to wox.ui.flutter/wox/linux/main.cc diff --git a/Wox.UI.Flutter/wox/linux/my_application.cc b/wox.ui.flutter/wox/linux/my_application.cc similarity index 100% rename from Wox.UI.Flutter/wox/linux/my_application.cc rename to wox.ui.flutter/wox/linux/my_application.cc diff --git a/Wox.UI.Flutter/wox/linux/my_application.h b/wox.ui.flutter/wox/linux/my_application.h similarity index 100% rename from Wox.UI.Flutter/wox/linux/my_application.h rename to wox.ui.flutter/wox/linux/my_application.h diff --git a/Wox.UI.Flutter/wox/macos/.gitignore b/wox.ui.flutter/wox/macos/.gitignore similarity index 100% rename from Wox.UI.Flutter/wox/macos/.gitignore rename to wox.ui.flutter/wox/macos/.gitignore diff --git a/Wox.UI.Flutter/wox/macos/Flutter/Flutter-Debug.xcconfig b/wox.ui.flutter/wox/macos/Flutter/Flutter-Debug.xcconfig similarity index 100% rename from Wox.UI.Flutter/wox/macos/Flutter/Flutter-Debug.xcconfig rename to wox.ui.flutter/wox/macos/Flutter/Flutter-Debug.xcconfig diff --git a/Wox.UI.Flutter/wox/macos/Flutter/Flutter-Release.xcconfig b/wox.ui.flutter/wox/macos/Flutter/Flutter-Release.xcconfig similarity index 100% rename from Wox.UI.Flutter/wox/macos/Flutter/Flutter-Release.xcconfig rename to wox.ui.flutter/wox/macos/Flutter/Flutter-Release.xcconfig diff --git a/Wox.UI.Flutter/wox/macos/Flutter/GeneratedPluginRegistrant.swift b/wox.ui.flutter/wox/macos/Flutter/GeneratedPluginRegistrant.swift similarity index 100% rename from Wox.UI.Flutter/wox/macos/Flutter/GeneratedPluginRegistrant.swift rename to wox.ui.flutter/wox/macos/Flutter/GeneratedPluginRegistrant.swift diff --git a/Wox.UI.Flutter/wox/macos/Podfile b/wox.ui.flutter/wox/macos/Podfile similarity index 100% rename from Wox.UI.Flutter/wox/macos/Podfile rename to wox.ui.flutter/wox/macos/Podfile diff --git a/Wox.UI.Flutter/wox/macos/Podfile.lock b/wox.ui.flutter/wox/macos/Podfile.lock similarity index 100% rename from Wox.UI.Flutter/wox/macos/Podfile.lock rename to wox.ui.flutter/wox/macos/Podfile.lock diff --git a/Wox.UI.Flutter/wox/macos/Runner.xcodeproj/project.pbxproj b/wox.ui.flutter/wox/macos/Runner.xcodeproj/project.pbxproj similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner.xcodeproj/project.pbxproj rename to wox.ui.flutter/wox/macos/Runner.xcodeproj/project.pbxproj diff --git a/Wox.UI.Flutter/wox/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/wox.ui.flutter/wox/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to wox.ui.flutter/wox/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Wox.UI.Flutter/wox/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/wox.ui.flutter/wox/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to wox.ui.flutter/wox/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/Wox.UI.Flutter/wox/macos/Runner.xcworkspace/contents.xcworkspacedata b/wox.ui.flutter/wox/macos/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner.xcworkspace/contents.xcworkspacedata rename to wox.ui.flutter/wox/macos/Runner.xcworkspace/contents.xcworkspacedata diff --git a/Wox.UI.Flutter/wox/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/wox.ui.flutter/wox/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to wox.ui.flutter/wox/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Wox.UI.Flutter/wox/macos/Runner/AppDelegate.swift b/wox.ui.flutter/wox/macos/Runner/AppDelegate.swift similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/AppDelegate.swift rename to wox.ui.flutter/wox/macos/Runner/AppDelegate.swift diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png rename to wox.ui.flutter/wox/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png diff --git a/Wox.UI.Flutter/wox/macos/Runner/Base.lproj/MainMenu.xib b/wox.ui.flutter/wox/macos/Runner/Base.lproj/MainMenu.xib similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Base.lproj/MainMenu.xib rename to wox.ui.flutter/wox/macos/Runner/Base.lproj/MainMenu.xib diff --git a/Wox.UI.Flutter/wox/macos/Runner/Configs/AppInfo.xcconfig b/wox.ui.flutter/wox/macos/Runner/Configs/AppInfo.xcconfig similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Configs/AppInfo.xcconfig rename to wox.ui.flutter/wox/macos/Runner/Configs/AppInfo.xcconfig diff --git a/Wox.UI.Flutter/wox/macos/Runner/Configs/Debug.xcconfig b/wox.ui.flutter/wox/macos/Runner/Configs/Debug.xcconfig similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Configs/Debug.xcconfig rename to wox.ui.flutter/wox/macos/Runner/Configs/Debug.xcconfig diff --git a/Wox.UI.Flutter/wox/macos/Runner/Configs/Release.xcconfig b/wox.ui.flutter/wox/macos/Runner/Configs/Release.xcconfig similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Configs/Release.xcconfig rename to wox.ui.flutter/wox/macos/Runner/Configs/Release.xcconfig diff --git a/Wox.UI.Flutter/wox/macos/Runner/Configs/Warnings.xcconfig b/wox.ui.flutter/wox/macos/Runner/Configs/Warnings.xcconfig similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Configs/Warnings.xcconfig rename to wox.ui.flutter/wox/macos/Runner/Configs/Warnings.xcconfig diff --git a/Wox.UI.Flutter/wox/macos/Runner/DebugProfile.entitlements b/wox.ui.flutter/wox/macos/Runner/DebugProfile.entitlements similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/DebugProfile.entitlements rename to wox.ui.flutter/wox/macos/Runner/DebugProfile.entitlements diff --git a/Wox.UI.Flutter/wox/macos/Runner/Info.plist b/wox.ui.flutter/wox/macos/Runner/Info.plist similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Info.plist rename to wox.ui.flutter/wox/macos/Runner/Info.plist diff --git a/Wox.UI.Flutter/wox/macos/Runner/MainFlutterWindow.swift b/wox.ui.flutter/wox/macos/Runner/MainFlutterWindow.swift similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/MainFlutterWindow.swift rename to wox.ui.flutter/wox/macos/Runner/MainFlutterWindow.swift diff --git a/Wox.UI.Flutter/wox/macos/Runner/Release.entitlements b/wox.ui.flutter/wox/macos/Runner/Release.entitlements similarity index 100% rename from Wox.UI.Flutter/wox/macos/Runner/Release.entitlements rename to wox.ui.flutter/wox/macos/Runner/Release.entitlements diff --git a/Wox.UI.Flutter/wox/macos/RunnerTests/RunnerTests.swift b/wox.ui.flutter/wox/macos/RunnerTests/RunnerTests.swift similarity index 100% rename from Wox.UI.Flutter/wox/macos/RunnerTests/RunnerTests.swift rename to wox.ui.flutter/wox/macos/RunnerTests/RunnerTests.swift diff --git a/Wox.UI.Flutter/wox/pubspec.lock b/wox.ui.flutter/wox/pubspec.lock similarity index 99% rename from Wox.UI.Flutter/wox/pubspec.lock rename to wox.ui.flutter/wox/pubspec.lock index 826f1d26f..6f1a88812 100644 --- a/Wox.UI.Flutter/wox/pubspec.lock +++ b/wox.ui.flutter/wox/pubspec.lock @@ -958,10 +958,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.2.5" web: dependency: transitive description: diff --git a/Wox.UI.Flutter/wox/pubspec.yaml b/wox.ui.flutter/wox/pubspec.yaml similarity index 100% rename from Wox.UI.Flutter/wox/pubspec.yaml rename to wox.ui.flutter/wox/pubspec.yaml diff --git a/Wox.UI.Flutter/wox/windows/.gitignore b/wox.ui.flutter/wox/windows/.gitignore similarity index 100% rename from Wox.UI.Flutter/wox/windows/.gitignore rename to wox.ui.flutter/wox/windows/.gitignore diff --git a/Wox.UI.Flutter/wox/windows/CMakeLists.txt b/wox.ui.flutter/wox/windows/CMakeLists.txt similarity index 100% rename from Wox.UI.Flutter/wox/windows/CMakeLists.txt rename to wox.ui.flutter/wox/windows/CMakeLists.txt diff --git a/Wox.UI.Flutter/wox/windows/flutter/CMakeLists.txt b/wox.ui.flutter/wox/windows/flutter/CMakeLists.txt similarity index 100% rename from Wox.UI.Flutter/wox/windows/flutter/CMakeLists.txt rename to wox.ui.flutter/wox/windows/flutter/CMakeLists.txt diff --git a/Wox.UI.Flutter/wox/windows/flutter/generated_plugin_registrant.cc b/wox.ui.flutter/wox/windows/flutter/generated_plugin_registrant.cc similarity index 100% rename from Wox.UI.Flutter/wox/windows/flutter/generated_plugin_registrant.cc rename to wox.ui.flutter/wox/windows/flutter/generated_plugin_registrant.cc diff --git a/Wox.UI.Flutter/wox/windows/flutter/generated_plugin_registrant.h b/wox.ui.flutter/wox/windows/flutter/generated_plugin_registrant.h similarity index 100% rename from Wox.UI.Flutter/wox/windows/flutter/generated_plugin_registrant.h rename to wox.ui.flutter/wox/windows/flutter/generated_plugin_registrant.h diff --git a/Wox.UI.Flutter/wox/windows/flutter/generated_plugins.cmake b/wox.ui.flutter/wox/windows/flutter/generated_plugins.cmake similarity index 100% rename from Wox.UI.Flutter/wox/windows/flutter/generated_plugins.cmake rename to wox.ui.flutter/wox/windows/flutter/generated_plugins.cmake diff --git a/Wox.UI.Flutter/wox/windows/runner/CMakeLists.txt b/wox.ui.flutter/wox/windows/runner/CMakeLists.txt similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/CMakeLists.txt rename to wox.ui.flutter/wox/windows/runner/CMakeLists.txt diff --git a/Wox.UI.Flutter/wox/windows/runner/Runner.rc b/wox.ui.flutter/wox/windows/runner/Runner.rc similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/Runner.rc rename to wox.ui.flutter/wox/windows/runner/Runner.rc diff --git a/Wox.UI.Flutter/wox/windows/runner/flutter_window.cpp b/wox.ui.flutter/wox/windows/runner/flutter_window.cpp similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/flutter_window.cpp rename to wox.ui.flutter/wox/windows/runner/flutter_window.cpp diff --git a/Wox.UI.Flutter/wox/windows/runner/flutter_window.h b/wox.ui.flutter/wox/windows/runner/flutter_window.h similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/flutter_window.h rename to wox.ui.flutter/wox/windows/runner/flutter_window.h diff --git a/Wox.UI.Flutter/wox/windows/runner/main.cpp b/wox.ui.flutter/wox/windows/runner/main.cpp similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/main.cpp rename to wox.ui.flutter/wox/windows/runner/main.cpp diff --git a/Wox.UI.Flutter/wox/windows/runner/resource.h b/wox.ui.flutter/wox/windows/runner/resource.h similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/resource.h rename to wox.ui.flutter/wox/windows/runner/resource.h diff --git a/Wox.UI.Flutter/wox/windows/runner/resources/app_icon.ico b/wox.ui.flutter/wox/windows/runner/resources/app_icon.ico similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/resources/app_icon.ico rename to wox.ui.flutter/wox/windows/runner/resources/app_icon.ico diff --git a/Wox.UI.Flutter/wox/windows/runner/runner.exe.manifest b/wox.ui.flutter/wox/windows/runner/runner.exe.manifest similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/runner.exe.manifest rename to wox.ui.flutter/wox/windows/runner/runner.exe.manifest diff --git a/Wox.UI.Flutter/wox/windows/runner/utils.cpp b/wox.ui.flutter/wox/windows/runner/utils.cpp similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/utils.cpp rename to wox.ui.flutter/wox/windows/runner/utils.cpp diff --git a/Wox.UI.Flutter/wox/windows/runner/utils.h b/wox.ui.flutter/wox/windows/runner/utils.h similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/utils.h rename to wox.ui.flutter/wox/windows/runner/utils.h diff --git a/Wox.UI.Flutter/wox/windows/runner/win32_window.cpp b/wox.ui.flutter/wox/windows/runner/win32_window.cpp similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/win32_window.cpp rename to wox.ui.flutter/wox/windows/runner/win32_window.cpp diff --git a/Wox.UI.Flutter/wox/windows/runner/win32_window.h b/wox.ui.flutter/wox/windows/runner/win32_window.h similarity index 100% rename from Wox.UI.Flutter/wox/windows/runner/win32_window.h rename to wox.ui.flutter/wox/windows/runner/win32_window.h