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
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
deleted file mode 100644
index a263f19..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,37 +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.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)
-
-## [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.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
diff --git a/README.md b/README.md
index 96ad34b..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/).
@@ -23,7 +30,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
@@ -34,6 +41,19 @@ python3 setup.py --verbose bdist_wheel
```
+## 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 -vv
+```
+
+
## Install locally
```shell
pip install ./dist/bdkpython--py3-none-any.whl
diff --git a/bdk-ffi b/bdk-ffi
index 80ed21e..0648075 160000
--- a/bdk-ffi
+++ b/bdk-ffi
@@ -1 +1 @@
-Subproject commit 80ed21e4c9e61d6224e074258229a4d6da6cc049
+Subproject commit 0648075555b86365e2408fab484782a2b793b545
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/setup.py b/setup.py
index 25e6e03..8462a6a 100644
--- a/setup.py
+++ b/setup.py
@@ -48,19 +48,19 @@
# 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(
- "bdkpython.bdkffi",
+ target="bdkpython.bdkffi",
path="./bdk-ffi/Cargo.toml",
binding=Binding.NoBinding,
)
setup(
name='bdkpython',
- version='0.2.0.dev0',
- description="The Python language bindings for the Bitcoin Dev Kit",
+ 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',
rust_extensions=[rust_ext],
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__':
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