diff --git a/.gitignore b/.gitignore index 9ab92fd..15607f3 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ __pycache__/ *.egg-info/ .ipynb_checkpoints/ + # Virtual environments .venv/ .venv312/ @@ -16,25 +17,30 @@ venv/ ENV/ env/ + # Build artifacts dist/ build/ *.spec wheelhouse/ + # PyInstaller temporary files src/*_frozen.py + # Testing .pytest_cache/ .cache/ coverage/ + # Type checking .mypy_cache/ .pyre/ .pytype/ + # IDEs .vscode/ .idea/ @@ -42,38 +48,50 @@ coverage/ *.swo *~ + # OS .DS_Store Thumbs.db + # Environment .env .envrc + # Logs logs/ *.log + # Database *.sqlite3 *.db + # Project specific .wallet/ releases/*/ _toDelete/ .potentialfix.md + # PGP keys (except test data) *.asc !tests/data/recipient.asc -# Vendor cleanup (wrong architectures/test builds) -vendor/linux-aarch64/ + +# Vendor - ignore test/experimental builds only vendor/macos-arm64-docker/ vendor/*-docker/ +vendor/*-test/ -# Keep official vendor directories -# vendor/macos-arm64/ -# vendor/linux-x86_64/ + +# Keep ALL official vendor directories (runtime + dev): +# vendor/macos-arm64/ - macOS Apple Silicon (runtime) +# vendor/macos-arm64-dev/ - macOS Apple Silicon (dev with pytest) +# vendor/linux-x86_64/ - Linux Intel/AMD (runtime) +# vendor/linux-x86_64-dev/ - Linux Intel/AMD (dev with pytest) +# vendor/linux-aarch64/ - Linux ARM64 (runtime) +# vendor/linux-aarch64-dev/ - Linux ARM64 (dev with pytest) # vendor/PROVENANCE.md diff --git a/Makefile b/Makefile index 42f6462..de2c632 100644 --- a/Makefile +++ b/Makefile @@ -46,14 +46,16 @@ VENDOR_LINUX := vendor/linux-x86_64 help: @echo "pyhdwallet build system (macOS + Linux compatible)" @echo "" +help: @echo "📦 Vendoring (for offline/air-gapped use):" - @echo " make vendor-macos - Build macOS ARM64 wheels (requires macOS native)" - @echo " make vendor-linux - Build Linux x86_64 wheels (Docker - any OS)" + @echo " make vendor-macos - Build macOS ARM64 wheels (runtime)" + @echo " make vendor-macos-dev - Build macOS ARM64 dev wheels (pytest)" + @echo " make vendor-linux - Build Linux x86_64 wheels (Docker)" + @echo " make vendor-linux-dev - Build Linux x86_64 dev wheels (Docker)" @echo " make vendor-linux-arm - Build Linux ARM64/aarch64 wheels (Docker)" - @echo " make vendor-linux-dev - Build Linux x86_64 dev wheels (includes pytest)" - @echo " make vendor-linux-arm-dev - Build Linux ARM64 dev wheels (includes pytest)" + @echo " make vendor-linux-arm-dev - Build Linux ARM64 dev wheels (Docker)" @echo " make vendor-all - Build runtime wheels for ALL platforms" - @echo " make vendor-all-dev - Build runtime + dev wheels for Linux platforms" + @echo " make vendor-all-dev - Build dev wheels for ALL platforms" @echo " make verify-vendor - Test offline installation from vendor/" @echo "" @@ -81,8 +83,8 @@ help: @echo " make down - Stop and remove dev container" @echo "" @echo "🧹 Cleanup:" - @echo " make clean - Remove venv, wheelhouse (keeps vendor/)" - @echo " make clean-vendor - Remove vendor/ only" + @echo " make clean-vendor - Remove all vendor wheels" + @echo " make clean - Remove vendor/ + .venv + cache" @echo " make clean-release - Remove releases/ only" @echo "" @echo "ℹ️ Platform Info:" diff --git a/install_offline.sh b/install_offline.sh index 136366e..2e1bb8a 100755 --- a/install_offline.sh +++ b/install_offline.sh @@ -14,9 +14,11 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then case "$ARCH" in x86_64) PLATFORM="linux-x86_64" + CHECKSUM_CMD="sha256sum" ;; aarch64|arm64) PLATFORM="linux-aarch64" + CHECKSUM_CMD="sha256sum" ;; *) echo "ERROR: Unsupported Linux architecture: $ARCH" @@ -27,6 +29,7 @@ elif [[ "$OSTYPE" == "darwin"* ]]; then ARCH=$(uname -m) if [[ "$ARCH" == "arm64" ]]; then PLATFORM="macos-arm64" + CHECKSUM_CMD="shasum -a 256" else echo "ERROR: Only macOS ARM64 is supported" exit 1 @@ -51,21 +54,34 @@ if [ ! -d "$VENDOR_PATH" ]; then ls -d vendor/*/ 2>/dev/null || echo " (none)" echo "" if [ "$DEV_MODE" = true ]; then - echo "To build dev wheels:" - if [[ "$PLATFORM" == "linux-x86_64" ]]; then - echo " make vendor-linux-dev" - elif [[ "$PLATFORM" == "linux-aarch64" ]]; then - echo " make vendor-linux-arm-dev" - fi + echo "To build dev wheels for your platform:" + case "$PLATFORM" in + linux-x86_64) + echo " make vendor-linux-dev" + ;; + linux-aarch64) + echo " make vendor-linux-arm-dev" + ;; + macos-arm64) + echo " make vendor-macos-dev" + ;; + esac else - echo "To build runtime wheels:" - if [[ "$PLATFORM" == "linux-x86_64" ]]; then - echo " make vendor-linux" - elif [[ "$PLATFORM" == "linux-aarch64" ]]; then - echo " make vendor-linux-arm" - elif [[ "$PLATFORM" == "macos-arm64" ]]; then - echo " make vendor-macos" - fi + echo "To build runtime wheels for your platform:" + case "$PLATFORM" in + linux-x86_64) + echo " make vendor-linux" + ;; + linux-aarch64) + echo " make vendor-linux-arm" + ;; + macos-arm64) + echo " make vendor-macos" + ;; + esac + echo "" + echo "Or build all platforms at once:" + echo " make vendor-all" fi exit 1 fi @@ -105,7 +121,7 @@ fi if [ -f "$VENDOR_PATH/SHA256SUMS" ]; then echo "" echo "Verifying checksums..." - (cd "$VENDOR_PATH" && sha256sum -c SHA256SUMS --quiet) || { + (cd "$VENDOR_PATH" && $CHECKSUM_CMD -c SHA256SUMS --quiet) || { echo "ERROR: Checksum verification failed!" exit 1 } diff --git a/vendor/linux-aarch64-dev/SHA256SUMS b/vendor/linux-aarch64-dev/SHA256SUMS index 26f4973..b1f403a 100644 --- a/vendor/linux-aarch64-dev/SHA256SUMS +++ b/vendor/linux-aarch64-dev/SHA256SUMS @@ -3,13 +3,13 @@ 518c118a5e00001854adb51f3164e647aa99b6a9877d2a733a28cb5c0a4d6857 cbor2-5.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl 5a366c314df7217e3357bb8c7d2cda540b0bce180705f7a0ce2d1d9e28f62ad4 coincurve-21.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -28137c4c7d1d12f987531b01389c48beb202eeb4e7abdf2cda5068af1c04022f crcmod-1.7-cp312-cp312-linux_aarch64.whl +cb86ab264d180b88b88a68a17d47ed78f98d86321155a8920c603b4b44e891f1 crcmod-1.7-cp312-cp312-linux_aarch64.whl 549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91 cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl 30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl -251fec0e960e508e26e06474d1bc58bb13a4e4edc1ab2a8a1d294342e220f00b ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl +a69dce6f7b9c2d149b40fe9f2136fbb3365c3043fc8c0f0a8bb7822871253eb4 ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 iniconfig-2.3.0-py3-none-any.whl 29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 packaging-25.0-py3-none-any.whl -27f5c397272590f668ec4d25afce0d776903317fdb3baadf341ab6319defd1f1 pgpy-0.6.0-py3-none-any.whl +1edc3f2f8d463d58a15af83e7a589dcdf0ad719a81d3badbefe73654f5498aab pgpy-0.6.0-py3-none-any.whl e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pluggy-1.6.0-py3-none-any.whl a3929c291408e67a1a11566f251b9f7d06c3fb3ae240caec44b9181de09e3fc9 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl diff --git a/vendor/linux-aarch64-dev/crcmod-1.7-cp312-cp312-linux_aarch64.whl b/vendor/linux-aarch64-dev/crcmod-1.7-cp312-cp312-linux_aarch64.whl index 301b09a..82a2276 100644 Binary files a/vendor/linux-aarch64-dev/crcmod-1.7-cp312-cp312-linux_aarch64.whl and b/vendor/linux-aarch64-dev/crcmod-1.7-cp312-cp312-linux_aarch64.whl differ diff --git a/vendor/linux-aarch64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl b/vendor/linux-aarch64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl index 4433cf7..94053ff 100644 Binary files a/vendor/linux-aarch64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl and b/vendor/linux-aarch64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl differ diff --git a/vendor/linux-aarch64-dev/pgpy-0.6.0-py3-none-any.whl b/vendor/linux-aarch64-dev/pgpy-0.6.0-py3-none-any.whl index 34eea5f..82809d9 100644 Binary files a/vendor/linux-aarch64-dev/pgpy-0.6.0-py3-none-any.whl and b/vendor/linux-aarch64-dev/pgpy-0.6.0-py3-none-any.whl differ diff --git a/vendor/linux-aarch64/SHA256SUMS b/vendor/linux-aarch64/SHA256SUMS index 7e19c20..eff4a64 100644 --- a/vendor/linux-aarch64/SHA256SUMS +++ b/vendor/linux-aarch64/SHA256SUMS @@ -3,11 +3,11 @@ 518c118a5e00001854adb51f3164e647aa99b6a9877d2a733a28cb5c0a4d6857 cbor2-5.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl 5a366c314df7217e3357bb8c7d2cda540b0bce180705f7a0ce2d1d9e28f62ad4 coincurve-21.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -6659bbc5bc01b5b2756b643ea030886b3548ff3ca55ad5d0963c6c6f6b5f2442 crcmod-1.7-cp312-cp312-linux_aarch64.whl +366e6f9cf39cb1a3d6656ff911b71cb3bcd92cb6510c1bece7c128dd7ba2697c crcmod-1.7-cp312-cp312-linux_aarch64.whl 549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91 cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl 30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl -2c9c33ab744e65671462e8eb785fadf288642773c657712ed611c7d01ebc0ad9 ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl -78b200c0d753c151928c40cd8a3415d4d5bf2f773fdbcedfc04b998c0bb3ff22 pgpy-0.6.0-py3-none-any.whl +cce822d4a1bbe91061a66e0c3148d15b1c1ac5dd7cd9e8ea23ca1b7aa85ba817 ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl +6b1e33c6af6dc080855090101cda8bfd293119cdbc36bcf99554a0efc5780a89 pgpy-0.6.0-py3-none-any.whl a3929c291408e67a1a11566f251b9f7d06c3fb3ae240caec44b9181de09e3fc9 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 pycparser-2.23-py3-none-any.whl diff --git a/vendor/linux-aarch64/crcmod-1.7-cp312-cp312-linux_aarch64.whl b/vendor/linux-aarch64/crcmod-1.7-cp312-cp312-linux_aarch64.whl index 3587875..c27add6 100644 Binary files a/vendor/linux-aarch64/crcmod-1.7-cp312-cp312-linux_aarch64.whl and b/vendor/linux-aarch64/crcmod-1.7-cp312-cp312-linux_aarch64.whl differ diff --git a/vendor/linux-aarch64/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl b/vendor/linux-aarch64/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl index d3d2560..54bb50e 100644 Binary files a/vendor/linux-aarch64/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl and b/vendor/linux-aarch64/ed25519_blake2b-1.4.1-cp312-cp312-linux_aarch64.whl differ diff --git a/vendor/linux-aarch64/pgpy-0.6.0-py3-none-any.whl b/vendor/linux-aarch64/pgpy-0.6.0-py3-none-any.whl index fb92422..eaa9e31 100644 Binary files a/vendor/linux-aarch64/pgpy-0.6.0-py3-none-any.whl and b/vendor/linux-aarch64/pgpy-0.6.0-py3-none-any.whl differ diff --git a/vendor/linux-x86_64-dev/SHA256SUMS b/vendor/linux-x86_64-dev/SHA256SUMS index 14b8c3b..8b70b0b 100644 --- a/vendor/linux-x86_64-dev/SHA256SUMS +++ b/vendor/linux-x86_64-dev/SHA256SUMS @@ -3,13 +3,13 @@ cff2a1999e49cd51c23d1b6786a012127fd8f722c5946e82bd7ab3eb307443f3 cbor2-5.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl 3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl 1b04778b75339c6e46deb9ae3bcfc2250fbe48d1324153e4310fc4996e135715 coincurve-21.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -a2173317e737dbd33333f7a11feb64f7af5996c5ce7341118455607f177126d7 crcmod-1.7-cp312-cp312-linux_x86_64.whl +5d997d8b486a4cf4a8f2547e46545c3bcc5d5d0a659226bdae98e7b1d3a5cf64 crcmod-1.7-cp312-cp312-linux_x86_64.whl 10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926 cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl 30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl -abed4903178c27bbbab16f186fe1689592b05eeb25f74da0b92f8878ab83459d ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl +deb8c516c49db2b19b977aeca279aed5b291442f40e1586282299e74ef828f10 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 iniconfig-2.3.0-py3-none-any.whl 29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 packaging-25.0-py3-none-any.whl -ea5d0485ff965980dcdabb3f46a7f1ba4c086e655c85f55a872be0748dd493f0 pgpy-0.6.0-py3-none-any.whl +bf24c8a19acc5c17951377731de5a527a7f4f21a05cf2345338ec375173af93f pgpy-0.6.0-py3-none-any.whl e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 pluggy-1.6.0-py3-none-any.whl 9da4c9c7f9a0a0e8e3d9ed6eedc885561288edd72267ebc7b0fd11262e8c8b28 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl diff --git a/vendor/linux-x86_64-dev/crcmod-1.7-cp312-cp312-linux_x86_64.whl b/vendor/linux-x86_64-dev/crcmod-1.7-cp312-cp312-linux_x86_64.whl index bb97e9e..d90d188 100644 Binary files a/vendor/linux-x86_64-dev/crcmod-1.7-cp312-cp312-linux_x86_64.whl and b/vendor/linux-x86_64-dev/crcmod-1.7-cp312-cp312-linux_x86_64.whl differ diff --git a/vendor/linux-x86_64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl b/vendor/linux-x86_64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl index 7c34900..2cc19bc 100644 Binary files a/vendor/linux-x86_64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl and b/vendor/linux-x86_64-dev/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl differ diff --git a/vendor/linux-x86_64-dev/pgpy-0.6.0-py3-none-any.whl b/vendor/linux-x86_64-dev/pgpy-0.6.0-py3-none-any.whl index 695c272..7ab0972 100644 Binary files a/vendor/linux-x86_64-dev/pgpy-0.6.0-py3-none-any.whl and b/vendor/linux-x86_64-dev/pgpy-0.6.0-py3-none-any.whl differ diff --git a/vendor/linux-x86_64/SHA256SUMS b/vendor/linux-x86_64/SHA256SUMS index 8dc20b8..1ac057e 100644 --- a/vendor/linux-x86_64/SHA256SUMS +++ b/vendor/linux-x86_64/SHA256SUMS @@ -3,11 +3,11 @@ cff2a1999e49cd51c23d1b6786a012127fd8f722c5946e82bd7ab3eb307443f3 cbor2-5.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl 3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl 1b04778b75339c6e46deb9ae3bcfc2250fbe48d1324153e4310fc4996e135715 coincurve-21.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -fc87cc9250f7c34582b9b085258cc0c6a677b5d9a1e35760e26f2c10e23a7468 crcmod-1.7-cp312-cp312-linux_x86_64.whl +34c2e307b1aa439a46067707e7367c9dce8c1fe6d7e8524a669205c46a8cae3e crcmod-1.7-cp312-cp312-linux_x86_64.whl 10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926 cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl 30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 ecdsa-0.19.1-py2.py3-none-any.whl -23c23406c8d3d9a4bc0692ba71167bded408ef648247ff089079368daf05c286 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl -111f982dfdca0f9bb5030d425c50899e74770a838fe568a7ee5bcc1e17e5fada pgpy-0.6.0-py3-none-any.whl +1c52907da0a83d4ec6ee94720751e35a7858c31727c6df56b90bed4c60f7c948 ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl +836973be20cf59178f20748a6023a1e0db38a94484fc43fa3a6924b639ee3788 pgpy-0.6.0-py3-none-any.whl 9da4c9c7f9a0a0e8e3d9ed6eedc885561288edd72267ebc7b0fd11262e8c8b28 py_sr25519_bindings-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 pyasn1-0.6.1-py3-none-any.whl e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 pycparser-2.23-py3-none-any.whl diff --git a/vendor/linux-x86_64/crcmod-1.7-cp312-cp312-linux_x86_64.whl b/vendor/linux-x86_64/crcmod-1.7-cp312-cp312-linux_x86_64.whl index 8c005ae..8ecb003 100644 Binary files a/vendor/linux-x86_64/crcmod-1.7-cp312-cp312-linux_x86_64.whl and b/vendor/linux-x86_64/crcmod-1.7-cp312-cp312-linux_x86_64.whl differ diff --git a/vendor/linux-x86_64/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl b/vendor/linux-x86_64/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl index d74b334..47ea184 100644 Binary files a/vendor/linux-x86_64/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl and b/vendor/linux-x86_64/ed25519_blake2b-1.4.1-cp312-cp312-linux_x86_64.whl differ diff --git a/vendor/linux-x86_64/pgpy-0.6.0-py3-none-any.whl b/vendor/linux-x86_64/pgpy-0.6.0-py3-none-any.whl index f11a7d1..5c11720 100644 Binary files a/vendor/linux-x86_64/pgpy-0.6.0-py3-none-any.whl and b/vendor/linux-x86_64/pgpy-0.6.0-py3-none-any.whl differ