mirror of https://github.com/Wox-launcher/Wox
Replace justfile with makefile and unify project naming
This commit is contained in:
parent
8d39729bb0
commit
975b268f9b
|
@ -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:
|
||||
|
|
|
@ -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/
|
||||
wox.core/log/
|
||||
wox.plugin.python/dist/
|
||||
wox.plugin.python/wox_plugin.egg-info/
|
||||
.venv/
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -1,5 +0,0 @@
|
|||
sync:
|
||||
uv cache clean && uv sync
|
||||
|
||||
build: sync
|
||||
just _build_python_host Wox/resource/hosts
|
|
@ -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",
|
||||
]
|
|
@ -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" },
|
||||
]
|
|
@ -1,2 +0,0 @@
|
|||
release:
|
||||
python publish.py patch
|
|
@ -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
|
|
@ -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()
|
|
@ -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",
|
||||
]
|
|
@ -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",
|
||||
},
|
||||
)
|
|
@ -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" },
|
||||
]
|
|
@ -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"
|
|
@ -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
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
@ -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
|
||||
|
|
111
justfile
111
justfile
|
@ -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
|
|
@ -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
|
Binary file not shown.
After Width: | Height: | Size: 388 B |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue