diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15384ea10..716fe7b5c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,35 +82,97 @@ jobs: include: - os: ubuntu-latest package-suffix: linux-amd64 + ci-arch: auto - os: macos-latest package-suffix: macos-amd64 + ci-arch: auto + - os: macos-latest + package-suffix: macos-arm64 + ci-arch: arm64 + rust-add-target: aarch64-apple-darwin - os: windows-latest package-suffix: windows-amd64 + ci-arch: auto runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 with: submodules: recursive - - uses: actions-rs/toolchain@v1 + - uses: actions/setup-python@v1 + with: + python-version: "3.10" + + # Install Rust locally for non-Linux (Linux uses an internal docker + # command to build with cibuildwheel which uses rustup install defined + # in pyproject.toml) + - if: ${{ runner.os != 'Linux' }} + uses: actions-rs/toolchain@v1 with: toolchain: stable - - uses: Swatinem/rust-cache@v1 + target: ${{ matrix.rust-add-target }} + - if: ${{ runner.os != 'Linux' }} + uses: Swatinem/rust-cache@v1 with: working-directory: temporalio/bridge + + # Prepare + - run: python -m pip install --upgrade wheel poetry poethepoet + - run: poetry install --no-root + + # Add the source dist only for Linux x64 for now + - if: ${{ matrix.package-suffix == 'linux-amd64' }} + run: poetry build --format sdist + + # Build and fix the wheel + - run: poetry run cibuildwheel --output-dir dist --arch ${{ matrix.ci-arch }} + - run: poe fix-wheel + + # Do test only for ci-arch auto (i.e. local machine) + - if: ${{ matrix.ci-arch == 'auto' }} + uses: actions/setup-go@v2 + with: + go-version: "1.18" + - if: ${{ matrix.ci-arch == 'auto' }} + run: poe test-dist-single + + # Upload dist + - uses: actions/upload-artifact@v2 + with: + name: packages-${{ matrix.package-suffix }} + path: dist + + # We separate out Linux aarch64 so we can choose not to run it during PR since + # it is so slow in cibuildwheel (uses QEMU emulation). We can put this back in + # the above matrix when Linux ARM runners are available. + compile-binaries-linux-aarch64: + # Skip compiling Linux aarch64 on PR + if: ${{ github.event_name != 'pull_request' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive - uses: actions/setup-python@v1 with: python-version: "3.10" - # Needed for tests since they use external server - - uses: actions/setup-go@v2 + + # Need QEMU for ARM build on Linux + - uses: docker/setup-qemu-action@v1 with: - go-version: "1.18" + image: tonistiigi/binfmt:latest + platforms: arm64 + + # Prepare - run: python -m pip install --upgrade wheel poetry poethepoet - run: poetry install --no-root - - run: poetry build + + # Build and fix the wheel + - run: poetry run cibuildwheel --output-dir dist --arch aarch64 - run: poe fix-wheel - - run: poe test-dist-single + + # Upload dist - uses: actions/upload-artifact@v2 with: - name: packages-${{ matrix.package-suffix }} + name: packages-linux-aarch64 path: dist diff --git a/README.md b/README.md index 9e47b56c6..240be2e2b 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,8 @@ These steps can be followed to use with a virtual environment and `pip`: For macOS M1 users on Python 3.10+, due to an [improperly named wheel in PyPI for gRPC](https://github.com/grpc/grpc/issues/28387), you may have to run -`pip install --no-binary :all: grpcio --ignore-installed` in your environment before use. +`pip install --no-binary :all: grpcio --ignore-installed` in your environment before use. (this is fixed in the next +version of `temporalio` and in the `main` branch) The SDK is now ready for use. To build from source, see "Building" near the end of this documentation. diff --git a/poetry.lock b/poetry.lock index 9fef0048d..afc5ee7bd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -51,6 +51,14 @@ six = "*" [package.extras] visualize = ["graphviz (>0.5.1)", "Twisted (>=16.1.1)"] +[[package]] +name = "bashlex" +version = "0.16" +description = "Python parser for bash" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4" + [[package]] name = "black" version = "22.3.0" @@ -90,6 +98,14 @@ webencodings = "*" css = ["tinycss2 (>=1.1.0)"] dev = ["pip-tools (==6.5.1)", "pytest (==7.1.1)", "flake8 (==4.0.1)", "tox (==3.24.5)", "sphinx (==4.3.2)", "twine (==4.0.0)", "wheel (==0.37.1)", "hashin (==0.17.0)", "black (==22.3.0)", "mypy (==0.942)"] +[[package]] +name = "bracex" +version = "2.3.post1" +description = "Bash style brace expander." +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "cachecontrol" version = "0.12.11" @@ -137,6 +153,32 @@ python-versions = ">=3.5.0" [package.extras] unicode_backport = ["unicodedata2"] +[[package]] +name = "cibuildwheel" +version = "2.7.0" +description = "Build Python wheels on CI with minimal configuration." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +bashlex = "!=0.13" +bracex = "*" +certifi = "*" +filelock = "*" +packaging = ">=20.9" +platformdirs = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.8\""} + +[package.extras] +all = ["mkdocs-include-markdown-plugin (==2.8.0)", "mkdocs (==1.0.4)", "jinja2 (==3.0.3)", "pymdown-extensions", "mkdocs-macros-plugin", "jinja2", "pytest (>=6)", "pytest-timeout", "pytest-xdist", "build", "click", "ghapi", "pip-tools", "pygithub", "pyyaml", "requests", "rich (>=9.6)", "packaging (>=21.0)", "mypy (>=0.901)", "types-jinja2", "types-certifi", "types-toml", "types-pyyaml", "types-click", "types-requests"] +bin = ["click", "ghapi", "pip-tools", "pygithub", "pyyaml", "requests", "rich (>=9.6)", "packaging (>=21.0)"] +dev = ["mypy (>=0.901)", "types-jinja2", "types-certifi", "types-toml", "types-pyyaml", "types-click", "types-requests", "jinja2", "pytest (>=6)", "pytest-timeout", "pytest-xdist", "build", "click", "ghapi", "pip-tools", "pygithub", "pyyaml", "requests", "rich (>=9.6)", "packaging (>=21.0)"] +docs = ["mkdocs-include-markdown-plugin (==2.8.0)", "mkdocs (==1.0.4)", "jinja2 (==3.0.3)", "pymdown-extensions", "mkdocs-macros-plugin"] +mypy = ["mypy (>=0.901)", "types-jinja2", "types-certifi", "types-toml", "types-pyyaml", "types-click", "types-requests"] +test = ["jinja2", "pytest (>=6)", "pytest-timeout", "pytest-xdist", "build"] + [[package]] name = "click" version = "8.1.3" @@ -226,9 +268,21 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "filelock" +version = "3.7.1" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] +testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] + [[package]] name = "grpcio" -version = "1.46.3" +version = "1.47.0" description = "HTTP/2-based RPC framework" category = "main" optional = false @@ -238,18 +292,18 @@ python-versions = ">=3.6" six = ">=1.5.2" [package.extras] -protobuf = ["grpcio-tools (>=1.46.3)"] +protobuf = ["grpcio-tools (>=1.47.0)"] [[package]] name = "grpcio-tools" -version = "1.46.3" +version = "1.47.0" description = "Protobuf code generator for gRPC" category = "dev" optional = false python-versions = ">=3.6" [package.dependencies] -grpcio = ">=1.46.3" +grpcio = ">=1.47.0" protobuf = ">=3.12.0,<4.0dev" [[package]] @@ -910,7 +964,7 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "f33749f7d00b89981e98eaf3f235893d82c206c3a5391f5d1209d4a6242e726a" +content-hash = "c69d0285e8e282f0a03d42abce92b4a46bb69d596d8b64bd0a167675cfdc3191" [metadata.files] appdirs = [ @@ -933,6 +987,10 @@ automat = [ {file = "Automat-20.2.0-py2.py3-none-any.whl", hash = "sha256:b6feb6455337df834f6c9962d6ccf771515b7d939bca142b29c20c2376bc6111"}, {file = "Automat-20.2.0.tar.gz", hash = "sha256:7979803c74610e11ef0c0d68a2942b152df52da55336e0c9d58daf1831cbdf33"}, ] +bashlex = [ + {file = "bashlex-0.16-py2.py3-none-any.whl", hash = "sha256:ff89fc743ccdef978792784d74d698a9236a862939bb4af471c0c3faf92c21bb"}, + {file = "bashlex-0.16.tar.gz", hash = "sha256:dc6f017e49ce2d0fe30ad9f5206da9cd13ded073d365688c9fda525354e8c373"}, +] black = [ {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, @@ -962,6 +1020,10 @@ bleach = [ {file = "bleach-5.0.0-py3-none-any.whl", hash = "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1"}, {file = "bleach-5.0.0.tar.gz", hash = "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565"}, ] +bracex = [ + {file = "bracex-2.3.post1-py3-none-any.whl", hash = "sha256:351b7f20d56fb9ea91f9b9e9e7664db466eb234188c175fd943f8f755c807e73"}, + {file = "bracex-2.3.post1.tar.gz", hash = "sha256:e7b23fc8b2cd06d3dec0692baabecb249dda94e06a617901ff03a6c56fd71693"}, +] cachecontrol = [ {file = "CacheControl-0.12.11-py2.py3-none-any.whl", hash = "sha256:2c75d6a8938cb1933c75c50184549ad42728a27e9f6b92fd677c3151aa72555b"}, {file = "CacheControl-0.12.11.tar.gz", hash = "sha256:a5b9fcc986b184db101aa280b42ecdcdfc524892596f606858e0b7a8b4d9e144"}, @@ -1026,6 +1088,10 @@ charset-normalizer = [ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] +cibuildwheel = [ + {file = "cibuildwheel-2.7.0-py3-none-any.whl", hash = "sha256:56ce62eec4b25e0670bb79e75b0f8ec1c3bb68a93ea2674b8e9355ee91dade49"}, + {file = "cibuildwheel-2.7.0.tar.gz", hash = "sha256:38f5d6f3456b05dd09459a78e4eaa0248b1cc6520b41ff5c6314b5a9bdbb4410"}, +] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, @@ -1078,117 +1144,105 @@ docutils = [ {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, ] +filelock = [ + {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, + {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, +] grpcio = [ - {file = "grpcio-1.46.3-cp310-cp310-linux_armv7l.whl", hash = "sha256:4c05dbc164c2d3015109292ffeed68292807a6cb1225f9a36699bf2166634908"}, - {file = "grpcio-1.46.3-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:c6a460b6aaf43428d48fececad864cc562458b944df80568e490d985d8576292"}, - {file = "grpcio-1.46.3-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:707b85fa0cf606a9ab02246bd3142c76e154f1c30f00f7346b2afa3d0b315d5a"}, - {file = "grpcio-1.46.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c63e7c61c0b06f838e8f45ffd3a7c68a520c4c026b2e0e8b1ad29c456d0f859"}, - {file = "grpcio-1.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6fe85e5873d9784ab82cf261d9fc07ed67a4459ba69fbe1187ef8b8e3d9e30e"}, - {file = "grpcio-1.46.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df980c4901a92ca649e18036ff67c7c8cad239b2759c2472694f7ab0f0b4ffb9"}, - {file = "grpcio-1.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7b59982e405159385d5796aa1e0817ec83affb3eb4c2a5b7ca39413d17d7e332"}, - {file = "grpcio-1.46.3-cp310-cp310-win32.whl", hash = "sha256:6d51fa98bd40d4593f819a3fec8a078a192958d24f84c3daf15b5ad7705d4c48"}, - {file = "grpcio-1.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:e9bba429eb743471715e6dadf006a70a77cb6afb065aa4a6eaa9efd76b09e336"}, - {file = "grpcio-1.46.3-cp36-cp36m-linux_armv7l.whl", hash = "sha256:a898b0f13bda2dfe786952cc1ea705762fa6c3ae799b4bb0525d7821605ae968"}, - {file = "grpcio-1.46.3-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:9014aee70e29911008d2f388011cabf2c7fe4fe29918ce5f71513a660494069a"}, - {file = "grpcio-1.46.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9c97106134de70f8323b12738ac0adf0615688b69253002910d0c5d42d202a77"}, - {file = "grpcio-1.46.3-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d41ea8efb87b1ae4e576b13d94f2b470297a1495ae6b2c9d1047952731bf168f"}, - {file = "grpcio-1.46.3-cp36-cp36m-manylinux_2_17_aarch64.whl", hash = "sha256:ab18e85082003d7883a4d069065436e61cb27c2c2150e7965ce93658f17bc8da"}, - {file = "grpcio-1.46.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:307ff1d6237d5c383196660a12db021c20280227f9f4423d88d6b2ab20c8b1d0"}, - {file = "grpcio-1.46.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c9106ef35239767b3aa9dc1a79856ad499655f853fca9f92f9dd3182d646627"}, - {file = "grpcio-1.46.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e0ae8e8523308bf7ab0b7d6aa686011de59b19fb06abb253f302d0b5da2a5905"}, - {file = "grpcio-1.46.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4fd0aa30a938893060defd5f222604461db55f9a81a028b154479b91deac7074"}, - {file = "grpcio-1.46.3-cp36-cp36m-win32.whl", hash = "sha256:f7637b55662e56a64c07846bc0d2da6232a6e893b22c39790f2e41d03ac1a826"}, - {file = "grpcio-1.46.3-cp36-cp36m-win_amd64.whl", hash = "sha256:97801afa96a819f911d030b490dbea95b246de02433bac69c5acf150081686e4"}, - {file = "grpcio-1.46.3-cp37-cp37m-linux_armv7l.whl", hash = "sha256:3585a6fa3d97fc8f030bbf0e88185b5eb345a340f6732e165d5c22df54de5bc6"}, - {file = "grpcio-1.46.3-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:dc6d15cbcceaebaacf2994280ed1c01d42b5772059b30afd8a76152e9d23daa4"}, - {file = "grpcio-1.46.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e0486485d59d5865149010966ef3df99c5df97ab8b01f10e26f8759d6e10fafc"}, - {file = "grpcio-1.46.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5210ec7a1638daa61da16487fbfafb3dbb7b8cd44382d9262316bbb58a5b1cf7"}, - {file = "grpcio-1.46.3-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:e278fa30d2b5652f7e43970c86ad34c639146443553678b746909aae204924dc"}, - {file = "grpcio-1.46.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d4148f1f76516b01cccf2273b45bc706847f1560ccb55aa6e29df851e9ca8cc"}, - {file = "grpcio-1.46.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01f3f7a6cdb111cf276ffff9c892fa32624e03999bac809d3f3d8321d98b6855"}, - {file = "grpcio-1.46.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:91aaccbe1c035ad2bcd1b8a25cebd11839070eb70fb6573e9d0197ddbca5d96b"}, - {file = "grpcio-1.46.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:26136c19d96e2138f04412101f3730d66f5f1515dc912ac0d415587c8208d826"}, - {file = "grpcio-1.46.3-cp37-cp37m-win32.whl", hash = "sha256:a8f40dafcdc3e0e378387953528eaf4e35758161f3b10d96199f12b11afbe2c2"}, - {file = "grpcio-1.46.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a6bb52df85a4bd6d3bad16b4e7cc43efe95469b74a856c87a2c5bef496c9147f"}, - {file = "grpcio-1.46.3-cp38-cp38-linux_armv7l.whl", hash = "sha256:2334ceeab4084e80433693451452cba26afc1607a7974133af3b3635fc8aa935"}, - {file = "grpcio-1.46.3-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:2c96a6103caec84985bb2cffac2b261f8cac2641e7a70d4b43b7d08754a6cfe7"}, - {file = "grpcio-1.46.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7a39d39da8855b03be2d7348387986bab6a322031fcc8b04fa5e72355e7b13a1"}, - {file = "grpcio-1.46.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4caf87a06de88e3611a4610c57ef55b78801843d1f5a9e5fd6b75e887dad3340"}, - {file = "grpcio-1.46.3-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:ffbbb228e6fc6f85b34aac428eb76b4fc6591d771e487ce46eb16b4b7e18b91d"}, - {file = "grpcio-1.46.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c89ae010c57333dd3c692e0892199a59df1ddfd467cdfea31f98331d0e8cf87"}, - {file = "grpcio-1.46.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34b206cdf78dd1c14d93e10e7308750c36b4e6754d579895cba74341875e2fb5"}, - {file = "grpcio-1.46.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a19b3ecdb8ddf60e4b034def27636065e49ac1ee3c85854a16353cf52c2afd83"}, - {file = "grpcio-1.46.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aac6e66acae82be5c99a0a40ab8f5733d7df76a04f242cf42ecc34cfb1e947bd"}, - {file = "grpcio-1.46.3-cp38-cp38-win32.whl", hash = "sha256:aff6d961d6bc5e34e12e148383671f8da5d17e47ed606ec15f483def3053b206"}, - {file = "grpcio-1.46.3-cp38-cp38-win_amd64.whl", hash = "sha256:71d46c2f3c0512bac3d658af3193e3d645c96123af56bd07a8416474c69df2cf"}, - {file = "grpcio-1.46.3-cp39-cp39-linux_armv7l.whl", hash = "sha256:5969f63f3cf92538f83f26949d393d9fc59de670f47cf7c2a0e1e0d30b770294"}, - {file = "grpcio-1.46.3-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:5f8134d4a7e76c8c6644bd3ce728b9894933575155d02c09922986d5d8d6e48c"}, - {file = "grpcio-1.46.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:53fff69fd4d315adddda226e7b71804d1f12adf3a4162126dc520725624a483a"}, - {file = "grpcio-1.46.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3af2cc4e41f87d3b57f624b1b14321c1d0f030b191da60f9eeeda5448d83240c"}, - {file = "grpcio-1.46.3-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5fb7779ae01c20c4fad5831e98003b3f036acfe6b77697d6a9baa0f9a7f14daf"}, - {file = "grpcio-1.46.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56636ebf8db63ba50d272dfd73c92538950525120311676246f8f6a81b0aa144"}, - {file = "grpcio-1.46.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a5012ba00cf8b7ce9e6ac2312ace0b0e16fe9502c18340c8c3ecb734a759831"}, - {file = "grpcio-1.46.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:be1679d814a292a701f45df324e25b060435dd13159e9b08a16e2a2396c4391c"}, - {file = "grpcio-1.46.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4faaba7db078a0001a8c1a4370d56dc454c03b4613b6acec01f14b90c8dd03cf"}, - {file = "grpcio-1.46.3-cp39-cp39-win32.whl", hash = "sha256:f5c6393fa645183ae858ebfbf72ab94e7ebafb5cd849dcf4ae8c53a83cce4e24"}, - {file = "grpcio-1.46.3-cp39-cp39-win_amd64.whl", hash = "sha256:158b90d4f1354f40e435f4c866057acc29a4364b214c31049c8b8c903646fbab"}, - {file = "grpcio-1.46.3.tar.gz", hash = "sha256:4b8fd8b1cd553635274b83cd984f0755e6779886eca53c1c71d48215962eb689"}, + {file = "grpcio-1.47.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:544da3458d1d249bb8aed5504adf3e194a931e212017934bf7bfa774dad37fb3"}, + {file = "grpcio-1.47.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:b88bec3f94a16411a1e0336eb69f335f58229e45d4082b12d8e554cedea97586"}, + {file = "grpcio-1.47.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:06c0739dff9e723bca28ec22301f3711d85c2e652d1c8ae938aa0f7ad632ef9a"}, + {file = "grpcio-1.47.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4508e8abd67ebcccd0fbde6e2b1917ba5d153f3f20c1de385abd8722545e05f"}, + {file = "grpcio-1.47.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9723784cf264697024778dcf4b7542c851fe14b14681d6268fb984a53f76df1"}, + {file = "grpcio-1.47.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1bb9afa85e797a646bfcd785309e869e80a375c959b11a17c9680abebacc0cb0"}, + {file = "grpcio-1.47.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d9ad7122f60157454f74a850d1337ba135146cef6fb7956d78c7194d52db0fe"}, + {file = "grpcio-1.47.0-cp310-cp310-win32.whl", hash = "sha256:0425b5577be202d0a4024536bbccb1b052c47e0766096e6c3a5789ddfd5f400d"}, + {file = "grpcio-1.47.0-cp310-cp310-win_amd64.whl", hash = "sha256:d0d481ff55ea6cc49dab2c8276597bd4f1a84a8745fedb4bc23e12e9fb9d0e45"}, + {file = "grpcio-1.47.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:5f57b9b61c22537623a5577bf5f2f970dc4e50fac5391090114c6eb3ab5a129f"}, + {file = "grpcio-1.47.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:14d2bc74218986e5edf5527e870b0969d63601911994ebf0dce96288548cf0ef"}, + {file = "grpcio-1.47.0-cp36-cp36m-manylinux_2_17_aarch64.whl", hash = "sha256:c79996ae64dc4d8730782dff0d1daacc8ce7d4c2ba9cef83b6f469f73c0655ce"}, + {file = "grpcio-1.47.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a24b50810aae90c74bbd901c3f175b9645802d2fbf03eadaf418ddee4c26668"}, + {file = "grpcio-1.47.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55782a31ec539f15b34ee56f19131fe1430f38a4be022eb30c85e0b0dcf57f11"}, + {file = "grpcio-1.47.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:35dfd981b03a3ec842671d1694fe437ee9f7b9e6a02792157a2793b0eba4f478"}, + {file = "grpcio-1.47.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:664a270d3eac68183ad049665b0f4d0262ec387d5c08c0108dbcfe5b351a8b4d"}, + {file = "grpcio-1.47.0-cp36-cp36m-win32.whl", hash = "sha256:9298d6f2a81f132f72a7e79cbc90a511fffacc75045c2b10050bb87b86c8353d"}, + {file = "grpcio-1.47.0-cp36-cp36m-win_amd64.whl", hash = "sha256:815089435d0f113719eabf105832e4c4fa1726b39ae3fb2ca7861752b0f70570"}, + {file = "grpcio-1.47.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:7191ffc8bcf8a630c547287ab103e1fdf72b2e0c119e634d8a36055c1d988ad0"}, + {file = "grpcio-1.47.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:1ec63bbd09586e5cda1bdc832ae6975d2526d04433a764a1cc866caa399e50d4"}, + {file = "grpcio-1.47.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:08307dc5a6ac4da03146d6c00f62319e0665b01c6ffe805cfcaa955c17253f9c"}, + {file = "grpcio-1.47.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:668350ea02af018ca945bd629754d47126b366d981ab88e0369b53bc781ffb14"}, + {file = "grpcio-1.47.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64e097dd08bb408afeeaee9a56f75311c9ca5b27b8b0278279dc8eef85fa1051"}, + {file = "grpcio-1.47.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0d8a7f3eb6f290189f48223a5f4464c99619a9de34200ce80d5092fb268323d2"}, + {file = "grpcio-1.47.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f89de64d9eb3478b188859214752db50c91a749479011abd99e248550371375f"}, + {file = "grpcio-1.47.0-cp37-cp37m-win32.whl", hash = "sha256:67cd275a651532d28620eef677b97164a5438c5afcfd44b15e8992afa9eb598c"}, + {file = "grpcio-1.47.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f515782b168a4ec6ea241add845ccfebe187fc7b09adf892b3ad9e2592c60af1"}, + {file = "grpcio-1.47.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:91cd292373e85a52c897fa5b4768c895e20a7dc3423449c64f0f96388dd1812e"}, + {file = "grpcio-1.47.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a278d02272214ec33f046864a24b5f5aab7f60f855de38c525e5b4ef61ec5b48"}, + {file = "grpcio-1.47.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:bfdb8af4801d1c31a18d54b37f4e49bb268d1f485ecf47f70e78d56e04ff37a7"}, + {file = "grpcio-1.47.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e63e0619a5627edb7a5eb3e9568b9f97e604856ba228cc1d8a9f83ce3d0466e"}, + {file = "grpcio-1.47.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc34d182c4fd64b6ff8304a606b95e814e4f8ed4b245b6d6cc9607690e3ef201"}, + {file = "grpcio-1.47.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a6b2432ac2353c80a56d9015dfc5c4af60245c719628d4193ecd75ddf9cd248c"}, + {file = "grpcio-1.47.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcd5d932842df503eb0bf60f9cc35e6fe732b51f499e78b45234e0be41b0018d"}, + {file = "grpcio-1.47.0-cp38-cp38-win32.whl", hash = "sha256:43857d06b2473b640467467f8f553319b5e819e54be14c86324dad83a0547818"}, + {file = "grpcio-1.47.0-cp38-cp38-win_amd64.whl", hash = "sha256:96cff5a2081db82fb710db6a19dd8f904bdebb927727aaf4d9c427984b79a4c1"}, + {file = "grpcio-1.47.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:68b5e47fcca8481f36ef444842801928e60e30a5b3852c9f4a95f2582d10dcb2"}, + {file = "grpcio-1.47.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0cd44d78f302ff67f11a8c49b786c7ccbed2cfef6f4fd7bb0c3dc9255415f8f7"}, + {file = "grpcio-1.47.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:4706c78b0c183dca815bbb4ef3e8dd2136ccc8d1699f62c585e75e211ad388f6"}, + {file = "grpcio-1.47.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:324e363bad4d89a8ec7124013371f268d43afd0ac0fdeec1b21c1a101eb7dafb"}, + {file = "grpcio-1.47.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b821403907e865e8377af3eee62f0cb233ea2369ba0fcdce9505ca5bfaf4eeb3"}, + {file = "grpcio-1.47.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2061dbe41e43b0a5e1fd423e8a7fb3a0cf11d69ce22d0fac21f1a8c704640b12"}, + {file = "grpcio-1.47.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8dbef03853a0dbe457417c5469cb0f9d5bf47401b49d50c7dad3c495663b699b"}, + {file = "grpcio-1.47.0-cp39-cp39-win32.whl", hash = "sha256:090dfa19f41efcbe760ae59b34da4304d4be9a59960c9682b7eab7e0b6748a79"}, + {file = "grpcio-1.47.0-cp39-cp39-win_amd64.whl", hash = "sha256:55cd8b13c5ef22003889f599b8f2930836c6f71cd7cf3fc0196633813dc4f928"}, + {file = "grpcio-1.47.0.tar.gz", hash = "sha256:5dbba95fab9b35957b4977b8904fc1fa56b302f9051eff4d7716ebb0c087f801"}, ] grpcio-tools = [ - {file = "grpcio-tools-1.46.3.tar.gz", hash = "sha256:31fee436ace5b3bd950cc3a8e68d6b84de1d6dc755959db7badc3470cdf22f70"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-linux_armv7l.whl", hash = "sha256:5d30bfb595e2ef767082432b17ca9238a3a59c2fd3211e19f29700448d1c9162"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:c51266f343c3207fc24bf954619992bc5173c93b052de9d90ecdf1d3f42cf13a"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:168520ee3a12002806b7436276bdeb042e4003cc8efba2c82db82a4447d6b3df"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0f9748b8d585c01151ca8178593152f4679db9b8846f11d0e54aba64b7b72fc"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:140288c4d9d1005fcb9e88ac5c1a37973c844bdc180fc34a263efa7aceb2c8fe"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b10828c9f62cfffb9aad65c5960cac5b65b5c879b29ef7650b6f253cd1d19b37"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0bb48a86591d63b34b12cea2468efc96886aa06ed404707a6fe24cd18032ad45"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-win32.whl", hash = "sha256:bc630ccaf97eb68ca814305f408a8172c6b0bb5ffdaee2baf16be4da0b704161"}, - {file = "grpcio_tools-1.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:7cc27ec93aa105dcb86acc9eb4cb67fa85420f1bef2fccaf69955f3ee82028db"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-linux_armv7l.whl", hash = "sha256:83fa1aaf052dad33000b73a865ad38e7b19ba4ecedb374cd0594824d27aab3ba"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:fa404d7c9cd621836220f3b9cb593eb2c475182d5c768b449407506b61f91159"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:36622a56654d2e38b9c323f06786427143e2a44356d30eca5f0e663a58f1d5b4"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:68442c23892478bd6ab324f716e0a6b611fefd98c67f18cfb4ef6c63bce3ab47"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-manylinux_2_17_aarch64.whl", hash = "sha256:1763fc1da10d8b505f706d8147499f199cfa55868f7372a0b7fb198378e0f9d1"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c3a5c279b1ffbb5c90fd71d8ce94b1aa6d43b1264d086fa553acc825149bef9"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8b37f6ef9b15349c5a575a0e0add11892bbbb107e0f21d5da45adba336daf05"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:920c57d342c8f9d877679c046407cab1c98a769c196fde35c0c5a14471ebc931"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:227e2bbc28519a384a064802e239a0231859a108220ebffe10fd9f9a63a1af16"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-win32.whl", hash = "sha256:e247d3b06b441f5516e9ffbfdb83ac15648965170e184d9b5950af61e5976648"}, - {file = "grpcio_tools-1.46.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bf1a4b9f7ba0d39b36ba4759d00a0bb51603a63cea532c5df07ca04db41ddaf9"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-linux_armv7l.whl", hash = "sha256:a1c2f0f1e13c185c381ddbe366f186a5cf6848014990ca3b8a3411dc06db9a70"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:096f0901089055f467df7133403a1a1ac782b2a078552ffa51215f5d7a064643"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:14b86251ed61133f860b5182801f7d8ac5371ea7a32a60aeca96b3f6d7be56c9"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0c455e883e2bf0ee7cc3d0778f3b15dd7616e9a68db6fc4d36ad23d6be643035"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:1ab7aead75c794a73cfb3777fca7cd8e234fb15256cff1de506f41de453693a9"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd4084dd54bdeff97cdf648603fd4c63a496ebdf35455f6fc3ea3016231b1e41"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f781cc5f1bc3d70d62f2a2846ca1de588ed75513a39674dea78cb7a4c52a5e9"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2ab51956b500ebe5718024f083513e62f777f1812e280959e85529730f863e3c"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:15c26699c2c7188010e0dc579ef1a4fba02cfef12bfe56028f73b58feee61d30"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-win32.whl", hash = "sha256:3840304ca4ca9586978c790a5433bf14a2d1cb234274dd095cd3673d08f26f07"}, - {file = "grpcio_tools-1.46.3-cp37-cp37m-win_amd64.whl", hash = "sha256:d8a73c64cd788a7ba597fa8878b4faad928d3c40981449a40e35000c2639d702"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-linux_armv7l.whl", hash = "sha256:7a2c6e847808141ba88e5f45bda76e3d9e5e9866379496d2289e3892fafdd201"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:3721e8c5490f7c015b5961133bb5b605a3d65eb8aa873506d3291f1216e28b03"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:07c9aa1a2549569dfa2a25f495543570f4753e96b99fbd46eaf7e2f3d1948cc7"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c6a510c29e466c489db8a3f24cad4386f5b0ca7223af93d821bc7ddfe73b172"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:21a714df8b894d4d0554414393db6616e20a25d44c7356c545c23c922dcd4e17"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0395647f41561a00e5dea633b8171d0597899eb8649dc5bf6a6a0597f9848769"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:600ed9e6600ef4815746052833188471c07be38d14f000617791ed1ec1664d53"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:af9ed199b9b02a3cc66695b1d89b512084444fedc1e9240258cadcc36e1a9071"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:21bbbcee52c3a1d694d4f29bafc197a16274294ee6bb33f913398f9f1bc23f2e"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-win32.whl", hash = "sha256:7b29f82b0f5cf1410f8d4135c20653264a91d156a15394a7b3df5cc4ef4572eb"}, - {file = "grpcio_tools-1.46.3-cp38-cp38-win_amd64.whl", hash = "sha256:5a2a1037c0e5b9d3d417640ad233f9aae8a934f01bf54d79dea23ad53282f004"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-linux_armv7l.whl", hash = "sha256:d4dacd7bba601d00a5f9767b3ea58077ce91c2467bff977998b818f699f9a5ff"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:8e472a2ac4e98a827fcfad719d828dda203d21e63a70f7fbeff0b472d9fb15d5"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5466fa708d9ef9980a67e72f839d24c545b0d57d976b4a1cbec150d7d90891c4"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cd3b9bec82650a47eb8c5d5c25479fcc8cd658deaa444fb8fa61118794b6a8c9"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:1bea61acaab74f0ba8a578e7245085fff5021e44756a68dbe83407338776422a"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:790ba7e1de54480c11b70115dfed76dcf79db929b0f808314014a58a8163d07d"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270c63905fccabc50582e2a6e22700f15f87274e651a0b491771a75c9e68cdf"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eddc8509d1d22b46d57cd35284cfe4bee8af2c31693a40a4244b9b2f3795aa36"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ae1e9e478bd433999522cde57f3d6e47bfa498de98e35f827b5ea83f87c45"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-win32.whl", hash = "sha256:8918bf43be899b5967aeeb955bb1a557c6f753db22456505091482511021b87f"}, - {file = "grpcio_tools-1.46.3-cp39-cp39-win_amd64.whl", hash = "sha256:6533916914dc80837d4caa1cf1aec884cc0390ce0543c4091fd817b2e87a87c5"}, + {file = "grpcio-tools-1.47.0.tar.gz", hash = "sha256:f64b5378484be1d6ce59311f86174be29c8ff98d8d90f589e1c56d5acae67d3c"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:3edb04d102e0d6f0149d93fe8cf69a38c20a2259a913701a4c35c119049c8404"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:dd5d330230038374e64fc652fc4c1b25d457a8b67b9069bfce83a17ab675650b"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:498c0bae4975683a5a33b72cf1bd64703b34c826871fd3ee8d295407cd5211ec"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1de1f139f05ab6bbdabc58b06f6ebb5940a92214bbc7246270299387d0af2ae"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fccc282ee97211a33652419dcdfd24a9a60bbd2d56f5c5dd50c7186a0f4d978"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:441a0a378117447c089b944f325f11039329d8aa961ecdb8226c5dd84af6f003"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0eced69e159b3fdd7597d85950f56990e0aa81c11a20a7785fb66f0e47c46b57"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-win32.whl", hash = "sha256:2c5c50886e6e79af5387c6514eb19f1f6b1a0b4eb787f1b7a8f21a74e2444102"}, + {file = "grpcio_tools-1.47.0-cp310-cp310-win_amd64.whl", hash = "sha256:156b5f6654fea51983fd9257d47f1ad7bfb2a1d09ed471e610a7b34b97d40802"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:94114e01c4508d904825bd984e3d2752c0b0e6eb714ac08b99f73421691cf931"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:51352070f13ea3346b5f5ca825f2203528b8218fffc6ac6d951216f812272d8b"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-manylinux_2_17_aarch64.whl", hash = "sha256:53c47b08ee2f59a89e8df5f3c09850d7fac264754cbaeabae65f6fbf78d80536"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:818fca1c7dd4ad1c9c01f91ba37006964f4c57c93856fa4ebd7d5589132844d6"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2364ac3bd7266752c9971dbef3f79d21cd958777823512faa93473cbd973b8f1"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:9dd6e26e3e0555deadcb52b087c6064e4fd02c09180b42e96c66260137d26b50"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a93263955da8d6e449d7ceb84af4e84b82fa760fd661b4ef4549929d9670ab8e"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-win32.whl", hash = "sha256:6804cbd92b9069ae9189d65300e456bcc3945f6ae196d2af254e9635b9c3ef0d"}, + {file = "grpcio_tools-1.47.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7589d6f56e633378047274223f0a75534b2cd7c598f9f2894cb4854378b8b00b"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:6d41ec06f2ccc8adcd400a63508ea8e008fb03f270e0031ff2de047def2ada9d"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:74f607b9084b5325a997d9ae57c0814955e19311111568d029b2a6a66f4869ec"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:7fd10683f4f03400536e7a026de9929430ee198c2cbdf2c584edfa909ccc8993"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7be45d69f0eed912df2e92d94958d1a3e72617469ec58ffcac3e2eb153a7057e"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca548afcfa0ffc47c3cf9eeede81adde15c321bfe897085e90ce8913615584ae"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f19191460435f8bc72450cf26ac0559726f98c49ad9b0969db3db8ba51be98c8"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b2fa3c545c8aa1e8c33ca04b1424be3ff77da631faf37db3350d7459c3bdedde"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-win32.whl", hash = "sha256:0b32002ff4ae860c85feb2aca1b752eb4518e7781c5770b869e7b2dfa9d92cbe"}, + {file = "grpcio_tools-1.47.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5c8ab9b541a869d3b4ef34c291fbfb6ec78ad728e04737fddd91eac3c2193459"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:05b495ed997a9afc9016c696ed7fcd35678a7276fe0bd8b95743a382363ad2b4"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:6c66094fd79ee98bcb504e9f1a3fa6e7ebfd246b4e3d8132227e5020b5633988"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:84e38f46af513a6f62a3d482160fcb94063dbc9fdd1452d09f8010422f144de1"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:058060fbc5a60a1c6cc2cbb3d99f730825ba249917978d48b7d0fd8f2caf01da"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc6567d652c6b70d8c03f4e450a694e62b4d69a400752f8b9c3c8b659dd6b06a"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9ab78cd16b4ac7c6b79c8be194c67e03238f6378694133ce3ce9b123caf24ed5"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ccc8ce33bd31bf12649541b5857fabfee7dd84b04138336a27bf46a28d150c11"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-win32.whl", hash = "sha256:4eced9e0674bfb5c528a3bf2ea2b8596da133148b3e0718915792074204ea226"}, + {file = "grpcio_tools-1.47.0-cp38-cp38-win_amd64.whl", hash = "sha256:45ceb73a97e2d7ff719fc12c02f1ef13014c47bad60a864313da88ccd90cdf36"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:ac5c6aef72618ebc5ee9ad725dd53e1c145ef420b79d21a7c43ca80658d3d8d4"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c2c280197d68d5a28f5b90adf755bd9e28c99f3e47ad4edcfe20497cf3456e1d"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:93d08c02bd82e423353399582f22493a191db459c3f34031b583f13bcf42b95e"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18548f35b0657422d5d40e6fa89994469f4bb77df09f8133ecdccec0e31fc72c"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb44ae747fd299b6513420cb6ead50491dc3691d17da48f28fcc5ebf07f47741"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ae53ae35a9761ceea50a502addb7186c5188969d63ad21cf12e00d939db5b967"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2a6a6e5e08866d643b84c89140bbe504f864f11b87bfff7a5f2af94c5a2be18d"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-win32.whl", hash = "sha256:759064fc8439bbfe5402b2fd3b0685f4ffe07d7cc6a64908c2f88a7c80449ce4"}, + {file = "grpcio_tools-1.47.0-cp39-cp39-win_amd64.whl", hash = "sha256:1a0a91941f6f2a4d97e843a5d9ad7ccccf702af2d9455932f18cf922e65af95e"}, ] hyperlink = [ {file = "hyperlink-21.0.0-py2.py3-none-any.whl", hash = "sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4"}, diff --git a/pyproject.toml b/pyproject.toml index b52d670e3..d32c9cdd1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,13 +26,7 @@ script = "build.py" [tool.poetry.dependencies] dacite = "^1.6.0" -# Due to grpcio binaries not supporting macOS ARM currently (see -# https://github.com/grpc/grpc/issues/27506, -# https://github.com/grpc/grpc/issues/28387, etc) we would have to use -# non-binary. But until Poetry 1.2 is released and -# https://github.com/python-poetry/poetry/pull/5609 merged, it is not supported. -# We cannot use a direct dependency because PyPI fails the upload. -grpcio = "^1.46.3" +grpcio = "^1.47.0" protobuf = "^3.20.1" python = "^3.7" types-protobuf = "^3.19.21" @@ -40,7 +34,8 @@ typing-extensions = "^4.2.0" [tool.poetry.dev-dependencies] black = "^22.3.0" -grpcio-tools = "^1.46.0" +cibuildwheel = "^2.7.0" +grpcio-tools = "^1.47.0" isort = "^5.10.1" mypy = "^0.961" mypy-protobuf = "^3.2.0" @@ -97,6 +92,21 @@ log_cli_format = "%(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(linen timeout = 600 timeout_func_only = true +[tool.cibuildwheel] +# We only want the 3.7 64-bit build of each type. There is no 3.7 build of macOS +# arm, so we have to use 3.8+ there. +build = "cp37-win_amd64 cp37-manylinux_x86_64 cp37-manylinux_aarch64 cp37-macosx_x86_64 cp38-macosx_arm64" +build-verbosity = "1" + +[tool.cibuildwheel.linux] +before-all = "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y && yum install -y openssl-devel" +environment = { PATH = "$PATH:$HOME/.cargo/bin", CARGO_NET_GIT_FETCH_WITH_CLI = "true" } + +[[tool.cibuildwheel.overrides]] +# We need the aarch64 target for Rust +before-all = "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable --target aarch64-unknown-linux-gnu -y && yum install -y openssl-devel" +select = "*_aarch64" + [tool.isort] profile = "black" skip_gitignore = true diff --git a/scripts/fix_wheel.py b/scripts/fix_wheel.py index 4d90c73e3..ea995e21c 100644 --- a/scripts/fix_wheel.py +++ b/scripts/fix_wheel.py @@ -9,45 +9,49 @@ # Get the file from the dist dir dist_files = glob("dist/*.whl") - if len(dist_files) != 1: - raise RuntimeError("Should have single wheel file in dist") - existing_wheel_file = dist_files[0] + if not dist_files: + raise RuntimeError("Should have at least one wheel file in dist") + for existing_wheel_file in dist_files: + # Rename the wheel file and confirm it is changed. We need to make it + # py37 minimum interpreter and abi3 compat. + wheel_file_pieces = existing_wheel_file.split("-") + if len(wheel_file_pieces) < 4: + raise RuntimeError("Expecting at least 4 wheel pieces") + wheel_file_pieces[2] = "cp37" + wheel_file_pieces[3] = "abi3" + new_wheel_file = "-".join(wheel_file_pieces) + if existing_wheel_file == new_wheel_file: + raise RuntimeError("Wheel file already fixed") + print( + f"Converting from {existing_wheel_file} to {new_wheel_file}", + file=sys.stderr, + ) - # Rename the wheel file and confirm it is changed. We need to make it py37 - # minimum interpreter and abi3 compat. - wheel_file_pieces = existing_wheel_file.split("-") - if len(wheel_file_pieces) < 4: - raise RuntimeError("Expecting at least 4 wheel pieces") - wheel_file_pieces[2] = "cp37" - wheel_file_pieces[3] = "abi3" - new_wheel_file = "-".join(wheel_file_pieces) - if existing_wheel_file == new_wheel_file: - raise RuntimeError("Wheel file already fixed") - print(f"Converting from {existing_wheel_file} to {new_wheel_file}", file=sys.stderr) - - # Walk the Zip writing files except the WHEEL file which we must alter the - # tag on the WHEEL file - with zipfile.ZipFile(new_wheel_file, "w") as zipwrite, zipfile.ZipFile( - existing_wheel_file, "r" - ) as zipread: - found_wheel_tag = False - for item in zipread.infolist(): - data = zipread.read(item.filename) - _, _, filename = item.filename.rpartition("/") - # Change the WHEEL tag - if filename == "WHEEL": - lines = data.splitlines() - for i in range(len(lines)): - if lines[i].startswith(b"Tag: "): - pieces = lines[i][len("Tag: ") :].split(b"-") - if len(pieces) < 3: - raise RuntimeError("Expecting at least 3 wheel tag pieces") - pieces[0] = b"cp37" - pieces[1] = b"abi3" - lines[i] = b"Tag: " + b"-".join(pieces) - found_wheel_tag = True - data = b"\n".join(lines) - zipwrite.writestr(item, data) - if not found_wheel_tag: - raise RuntimeError("Did not find WHEEL file with tag entry") - os.remove(existing_wheel_file) + # Walk the Zip writing files except the WHEEL file which we must alter the + # tag on the WHEEL file + with zipfile.ZipFile(new_wheel_file, "w") as zipwrite, zipfile.ZipFile( + existing_wheel_file, "r" + ) as zipread: + found_wheel_tag = False + for item in zipread.infolist(): + data = zipread.read(item.filename) + _, _, filename = item.filename.rpartition("/") + # Change the WHEEL tag + if filename == "WHEEL": + lines = data.splitlines() + for i in range(len(lines)): + if lines[i].startswith(b"Tag: "): + pieces = lines[i][len("Tag: ") :].split(b"-") + if len(pieces) < 3: + raise RuntimeError( + "Expecting at least 3 wheel tag pieces" + ) + pieces[0] = b"cp37" + pieces[1] = b"abi3" + lines[i] = b"Tag: " + b"-".join(pieces) + found_wheel_tag = True + data = b"\n".join(lines) + zipwrite.writestr(item, data) + if not found_wheel_tag: + raise RuntimeError("Did not find WHEEL file with tag entry") + os.remove(existing_wheel_file)