From 4396ebaa72e716fc3d1fbb516cdc1a656f4742ae Mon Sep 17 00:00:00 2001 From: Sam Korn Date: Fri, 1 Jul 2022 11:04:45 -0600 Subject: [PATCH 01/16] fix tox build and tests Signed-off-by: Sam Korn --- .gitignore | 1 + CHANGELOG.md | 1 + README.md | 9 +++++++++ pyproject.toml | 7 +++++++ requirements-dev.txt | 2 ++ tox.ini | 12 +++++++++--- 6 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 pyproject.toml create mode 100644 requirements-dev.txt diff --git a/.gitignore b/.gitignore index 511e251..726b07a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ libbdkffi.dylib *.swp src/bdkpython/bdk.py +src/bdkpython/*.so *.whl build/ diff --git a/CHANGELOG.md b/CHANGELOG.md index a263f19..a0dff5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic - Add sqlite database support - Fix memory database configuration enum, remove junk field - Remove hard coded sync progress value (was always returning 21.0) +- Fix tests and tox build workflow ## [0.0.1-0.0.5] ### Added diff --git a/README.md b/README.md index 96ad34b..a482f5c 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,15 @@ python3 setup.py --verbose bdist_wheel ```
+## Run tox to build and test +```shell +# install dev requirements +pip install --requirement requirements-dev.txt + +# build and test +tox +``` + ## Install locally ```shell pip install ./dist/bdkpython--py3-none-any.whl diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..2012f16 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,7 @@ +[build-system] +requires = ["setuptools", "wheel", "setuptools-rust"] + +[tool.pytest.ini_options] +pythonpath = [ + "." +] \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..b95a8a8 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,2 @@ +pytest==7.1.2 +tox==3.25.1 diff --git a/tox.ini b/tox.ini index 95f6045..c01a149 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,16 @@ [tox] envlist = + py38 py39 + [testenv] -deps = - pytest - bdk +usedevelop=true +deps = + -rrequirements.txt + -rrequirements-dev.txt commands = + python3 setup.py -v build + python3 setup.py -v install pytest --verbose --override-ini console_output_style=count + python3 setup.py --verbose bdist_wheel From 7a9a6f516985bd7608a59d7a62a5a352d1a88a02 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Fri, 5 Aug 2022 09:45:33 -0400 Subject: [PATCH 02/16] Bump bdk-ffi to v0.8.0 tag --- bdk-ffi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bdk-ffi b/bdk-ffi index 80ed21e..138200d 160000 --- a/bdk-ffi +++ b/bdk-ffi @@ -1 +1 @@ -Subproject commit 80ed21e4c9e61d6224e074258229a4d6da6cc049 +Subproject commit 138200db078cbd2b8a8d32ca8f4360bcd4b1eccd From d633d6d2a915ec4bc311d72f8c02e7b5f0a7bf19 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Fri, 5 Aug 2022 10:30:23 -0400 Subject: [PATCH 03/16] Update changelog to reflect 0.2.0 changes --- CHANGELOG.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0dff5c..bc24f09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic ## [Unreleased] +## [0.1.0-0.2.0] +### Added +- Update BDK to version `0.20.0` +- APIs Added + - TxBuilder.add_data(data) + - Wallet.list_unspent() returns a list of local UTXOs + - Add coin control methods on TxBuilder + +### Fixed +- Tox tests + ## [0.0.5-0.1.0] ### Added - Community related files (bug report, feature request, and pull request templates) @@ -35,4 +46,5 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic [Semantic Versioning]: https://semver.org/spec/v2.0.0.html [unreleased]: https://github.com/bitcoindevkit/bdk-python/compare/v0.0.5...HEAD [0.0.1-0.0.5]: https://github.com/bitcoindevkit/bdk-python/compare/58f189f987cc644a1d86e965623c8f50904588ad...v0.0.5 -[0.0.5-0.1.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.0.5...v0.1.0 \ No newline at end of file +[0.0.5-0.1.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.0.5...v0.1.0 +[0.1.0-0.2.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.1.0...v0.2.0 \ No newline at end of file From 66376f05ecdcf09245ad8ab175ae6d7ae558dbde Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Fri, 5 Aug 2022 10:31:24 -0400 Subject: [PATCH 04/16] Refactors to setup.py --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 25e6e03..f44f715 100644 --- a/setup.py +++ b/setup.py @@ -52,7 +52,7 @@ """ rust_ext = RustExtension( - "bdkpython.bdkffi", + target="bdkpython.bdkffi", path="./bdk-ffi/Cargo.toml", binding=Binding.NoBinding, ) @@ -60,7 +60,7 @@ setup( name='bdkpython', version='0.2.0.dev0', - description="The Python language bindings for the Bitcoin Dev Kit", + description="The Python language bindings for the Bitcoin Development Kit", long_description=LONG_DESCRIPTION, long_description_content_type='text/markdown', rust_extensions=[rust_ext], From d916fbd7bea91aeadd022f6c642f89cf62d57f64 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Sun, 7 Aug 2022 13:26:41 -0400 Subject: [PATCH 05/16] Fix CHANGELOG.md Co-authored-by: Steve Myers --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc24f09..62b78bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,7 +44,7 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic [Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ [Semantic Versioning]: https://semver.org/spec/v2.0.0.html -[unreleased]: https://github.com/bitcoindevkit/bdk-python/compare/v0.0.5...HEAD +[unreleased]: https://github.com/bitcoindevkit/bdk-python/compare/v0.2.0...HEAD [0.0.1-0.0.5]: https://github.com/bitcoindevkit/bdk-python/compare/58f189f987cc644a1d86e965623c8f50904588ad...v0.0.5 [0.0.5-0.1.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.0.5...v0.1.0 [0.1.0-0.2.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.1.0...v0.2.0 \ No newline at end of file From fbf9792b38cef473bcafd7d9c6295912dfdce445 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Sun, 7 Aug 2022 15:48:59 -0400 Subject: [PATCH 06/16] Bump version to 0.3.0.dev0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f44f715..6aacf32 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ setup( name='bdkpython', - version='0.2.0.dev0', + version='0.3.0.dev0', description="The Python language bindings for the Bitcoin Development Kit", long_description=LONG_DESCRIPTION, long_description_content_type='text/markdown', From 810e22dc9c4526199388bb0d316f73852ad022c4 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Tue, 20 Sep 2022 08:09:36 -0400 Subject: [PATCH 07/16] Bump bdk-ffi submodule to v0.9.0 tag --- bdk-ffi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bdk-ffi b/bdk-ffi index 138200d..485f4f7 160000 --- a/bdk-ffi +++ b/bdk-ffi @@ -1 +1 @@ -Subproject commit 138200db078cbd2b8a8d32ca8f4360bcd4b1eccd +Subproject commit 485f4f72ce4d625e988effa67701adab0039aa64 From 02a572cbc6cd47bbc1aec31f48fd5039a5d93e2e Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 22 Sep 2022 10:25:33 -0400 Subject: [PATCH 08/16] Remove changelog This is in line with the bdk-jvm, bdk-android, and bdk-swift libraries, who all rely on the bdk-ffi changelog. --- CHANGELOG.md | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 62b78bb..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,50 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning]. - -## [Unreleased] - -## [0.1.0-0.2.0] -### Added -- Update BDK to version `0.20.0` -- APIs Added - - TxBuilder.add_data(data) - - Wallet.list_unspent() returns a list of local UTXOs - - Add coin control methods on TxBuilder - -### Fixed -- Tox tests - -## [0.0.5-0.1.0] -### Added -- Community related files (bug report, feature request, and pull request templates) -- Changelog -- MIT and Apache 2.0 licenses -- Update BDK to version `0.19.0` -- Add `BumpFeeTxBuilder` to bump the fee on an unconfirmed tx created by the Wallet -- Add `Blockchain.broadcast` function (does not return anything) -- Add TxBuilder for creating new spending `PartiallySignedBitcoinTransaction` -- Add TxBuilder `add_recipient`, `fee_rate`, and `finish` functions -- Add TxBuilder `drain_wallet` and `drain_to` functions -- Update generate cli tool to generate all binding languages and rename to bdk-ffi-bindgen -- Add sqlite database support -- Fix memory database configuration enum, remove junk field -- Remove hard coded sync progress value (was always returning 21.0) -- Fix tests and tox build workflow - -## [0.0.1-0.0.5] -### Added -- Readme -- Rust binary to build -- CI workflow for tessting PRs -- Publishing workflow using GitHub Actions -- Basic examples -- Release on PyPI - -[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ -[Semantic Versioning]: https://semver.org/spec/v2.0.0.html -[unreleased]: https://github.com/bitcoindevkit/bdk-python/compare/v0.2.0...HEAD -[0.0.1-0.0.5]: https://github.com/bitcoindevkit/bdk-python/compare/58f189f987cc644a1d86e965623c8f50904588ad...v0.0.5 -[0.0.5-0.1.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.0.5...v0.1.0 -[0.1.0-0.2.0]: https://github.com/bitcoindevkit/bdk-python/compare/v0.1.0...v0.2.0 \ No newline at end of file From 96889b43a864eaa595ce10fa767d7bff8a64783d Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 22 Sep 2022 11:02:05 -0400 Subject: [PATCH 09/16] Add documentation on local testing --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a482f5c..b3a858f 100644 --- a/README.md +++ b/README.md @@ -34,14 +34,18 @@ python3 setup.py --verbose bdist_wheel ```
-## Run tox to build and test +## Run tox to build and test locally ```shell # install dev requirements pip install --requirement requirements-dev.txt +# build bindings glue code (located at ./src/bdkpython/bdk.py) +source ./generate.sh + # build and test -tox +tox -vv ``` +
## Install locally ```shell From d539d8eaf83e8a9b94bb728534d002e1dc8617c4 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 22 Sep 2022 11:02:41 -0400 Subject: [PATCH 10/16] Update tests for bdk-ffi v0.9.0 --- tests/test_bdk.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_bdk.py b/tests/test_bdk.py index b667b30..e546592 100644 --- a/tests/test_bdk.py +++ b/tests/test_bdk.py @@ -38,8 +38,8 @@ def test_wallet_balance(self): ) wallet.sync(blockchain, None) balance = wallet.get_balance() - # print(f"Balance is {balance} sat") - assert balance > 0, "Balance is 0, send testnet coins to tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e" + # print(f"Balance is {balance.total} sat") + assert balance.total > 0, "Balance is 0, send testnet coins to tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e" if __name__ == '__main__': From 4ff428a9a64b2745bbf5b8be882df9172fcc3f20 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 22 Sep 2022 11:18:35 -0400 Subject: [PATCH 11/16] Update simple example in setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6aacf32..f079730 100644 --- a/setup.py +++ b/setup.py @@ -48,7 +48,7 @@ # print wallet balance wallet.sync(blockchain, None) balance = wallet.get_balance() -print(f"Wallet balance is: {balance}") +print(f"Wallet balance is: {balance.total}") """ rust_ext = RustExtension( From 4ff3f71cb8645a3a3f1b089d67923a07e5d9614c Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 3 Nov 2022 11:32:32 -0400 Subject: [PATCH 12/16] Bump bdk-ffi submodule to v0.10.0 (bdk version 0.23.0) --- README.md | 2 +- bdk-ffi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b3a858f..c89f245 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ python -m unittest --verbose tests/test_bdk.py ## Build the package ```shell -# Install dependecies +# Install dependencies pip install --requirement requirements.txt # Generate the bindings first diff --git a/bdk-ffi b/bdk-ffi index 485f4f7..e6cf423 160000 --- a/bdk-ffi +++ b/bdk-ffi @@ -1 +1 @@ -Subproject commit 485f4f72ce4d625e988effa67701adab0039aa64 +Subproject commit e6cf4237218be9c6143936e7d0056e5270d4c227 From 82126ece78042c940cde44ecac7701d113300eed Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 3 Nov 2022 15:22:25 -0400 Subject: [PATCH 13/16] Add publishing CI workflow --- .github/workflows/build.yml | 35 +-------- .github/workflows/publish.yml | 141 ++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 24c75c7..e4e8293 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,5 @@ +name: Build wheels on: [push, pull_request] -name: Build and publish wheels # We use manylinux2014 because older CentOS versions used by 2010 and 1 have a very old glibc version, which # makes it very hard to use GitHub's javascript actions (checkout, upload-artifact, etc). @@ -107,36 +107,3 @@ jobs: with: name: bdkpython-win-${{ matrix.python }} path: dist/*.whl - - publish-pypi: - name: 'Publish on PyPI' - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - runs-on: ubuntu-latest - needs: [build-manylinux2014-x86_64-wheel, build-macos-universal-wheel, build-windows-wheel] - # needs: [build-macos-universal-wheel] - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: 'Download artifacts in dist/ directory' - uses: actions/download-artifact@v2 - with: - path: dist/ - - # - name: Display structure of downloaded files - # run: ls -R - - # - name: 'Publish on test PyPI' - # uses: pypa/gh-action-pypi-publish@release/v1 - # with: - # user: __token__ - # password: ${{ secrets.TEST_PYPI_API_TOKEN }} - # repository_url: https://test.pypi.org/legacy/ - # packages_dir: dist/*/ - - - name: 'Publish on PyPI' - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} - packages_dir: dist/*/ \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..aeb16e6 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,141 @@ +name: Build and publish wheels on PyPI +on: [workflow_dispatch] + +# We use manylinux2014 because older CentOS versions used by 2010 and 1 have a very old glibc version, which +# makes it very hard to use GitHub's javascript actions (checkout, upload-artifact, etc). +# They mount their own nodejs interpreter inside your container, but since that's not statically linked it +# tries to load glibc and fails because it requires a more recent version. + +jobs: + build-manylinux2014-x86_64-wheel: + name: 'Build Manylinux 2014 x86_64 wheel' + runs-on: ubuntu-latest + container: + image: quay.io/pypa/manylinux2014_x86_64 + env: + PLAT: manylinux2014_x86_64 + PYBIN: '/opt/python/${{ matrix.python }}/bin' + strategy: + matrix: + python: # Update this list whenever the docker image is updated (check /opt/python/) + - cp36-cp36m + - cp37-cp37m + - cp38-cp38 + - cp39-cp39 + - cp310-cp310 + - pp37-pypy37_pp73 + - pp38-pypy38_pp73 + steps: + - name: checkout + uses: actions/checkout@v2 + with: + submodules: true + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - name: install requirements + run: ${PYBIN}/pip install -r requirements.txt + - name: generate bindings + run: bash generate.sh + - name: build wheel + run: ${PYBIN}/pip wheel . --no-deps -w /tmp/wheelhouse + - name: repair wheel + run: auditwheel repair /tmp/wheelhouse/* --plat "$PLAT" -w /tmp/wheelhouse-repaired + - uses: actions/upload-artifact@v2 + with: + name: bdkpython-manylinux2014-x86_64-${{ matrix.python }} + path: /tmp/wheelhouse-repaired/*.whl + + build-macos-universal-wheel: + name: 'Build macOS universal wheel' + runs-on: macos-latest + strategy: + matrix: + python: + - '3.7' + - '3.8' + - '3.9' + - '3.10' + steps: + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + - run: python3 --version + - name: checkout + uses: actions/checkout@v2 + with: + submodules: true + - run: rustup target add aarch64-apple-darwin + - run: pip3 install --user -r requirements.txt + - run: pip3 install --user wheel + - run: bash generate.sh + - name: build wheel + env: + ARCHFLAGS: "-arch x86_64 -arch arm64" + run: python3 setup.py -v bdist_wheel + - uses: actions/upload-artifact@v2 + with: + name: bdkpython-macos-${{ matrix.python }} + path: dist/*.whl + + build-windows-wheel: + name: 'Build windows wheel' + runs-on: windows-latest + strategy: + matrix: + python: + - '3.7' + - '3.8' + - '3.9' + - '3.10' + steps: + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + - run: python --version + - name: checkout + uses: actions/checkout@v2 + with: + submodules: true + - run: pip install --user -r requirements.txt + - run: ./generate.sh + shell: bash + - run: pip install --user wheel + - name: build wheel + run: python setup.py -v bdist_wheel + - uses: actions/upload-artifact@v2 + with: + name: bdkpython-win-${{ matrix.python }} + path: dist/*.whl + + publish-pypi: + name: 'Publish on PyPI' + runs-on: ubuntu-latest + needs: [build-manylinux2014-x86_64-wheel, build-macos-universal-wheel, build-windows-wheel] + # needs: [build-macos-universal-wheel] + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: 'Download artifacts in dist/ directory' + uses: actions/download-artifact@v2 + with: + path: dist/ + + # - name: Display structure of downloaded files + # run: ls -R + + # - name: 'Publish on test PyPI' + # uses: pypa/gh-action-pypi-publish@release/v1 + # with: + # user: __token__ + # password: ${{ secrets.TEST_PYPI_API_TOKEN }} + # repository_url: https://test.pypi.org/legacy/ + # packages_dir: dist/*/ + + - name: 'Publish on PyPI' + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + packages_dir: dist/*/ \ No newline at end of file From ec7b3769b59ecfa1b02a193c357d62aeca66a9b6 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Wed, 9 Nov 2022 12:52:15 -0500 Subject: [PATCH 14/16] Bump bdk-ffi submodule to v0.11.0 (bdk version 0.24.0) Signed-off-by: thunderbiscuit --- bdk-ffi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bdk-ffi b/bdk-ffi index e6cf423..0648075 160000 --- a/bdk-ffi +++ b/bdk-ffi @@ -1 +1 @@ -Subproject commit e6cf4237218be9c6143936e7d0056e5270d4c227 +Subproject commit 0648075555b86365e2408fab484782a2b793b545 From 2a9721899128c79ada6b13922ed04689c3f2f01d Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Wed, 9 Nov 2022 15:26:51 -0500 Subject: [PATCH 15/16] Bump library development version to 0.6.0.dev0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f079730..8462a6a 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ setup( name='bdkpython', - version='0.3.0.dev0', + version='0.6.0.dev0', description="The Python language bindings for the Bitcoin Development Kit", long_description=LONG_DESCRIPTION, long_description_content_type='text/markdown', From cca5a733753a04bf566b9867854a0c1a9c9794a2 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Tue, 15 Nov 2022 10:09:04 -0500 Subject: [PATCH 16/16] Add notice of archival and move to bdk-ffi repository --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index c89f245..5d55c92 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ # bdk-python + +⚠️⚠️ The code in this repository has been moved to [bdk-ffi](https://github.com/bitcoindevkit/bdk-ffi), and development is continuing there. This repository is now considered an archive, and will not accept new pull requests or issues. ⚠️⚠️ + +
+
+
+ The Python language bindings for the [bitcoindevkit](https://github.com/bitcoindevkit). See the [package on PyPI](https://pypi.org/project/bdkpython/).