From 807663d097e897d9c1de5485851692bdee9ae171 Mon Sep 17 00:00:00 2001 From: Fabian Schuh Date: Fri, 13 May 2022 16:04:43 +0200 Subject: [PATCH] ci: Integrate semantic-release --- .github/workflows/release.yml | 51 ++++++++++ .pre-commit-config.yaml | 65 ++++++------- AUTHORS | 29 ------ CHANGELOG.md | 170 ++++++++++++++++++++++++++++++++++ MANIFEST.in | 3 +- Makefile | 65 +++++-------- RELEASE_NOTES.md | 168 --------------------------------- requirements.txt | 2 +- setup.cfg | 40 +++++++- setup.py | 48 ++-------- tox.ini | 17 ++-- 11 files changed, 326 insertions(+), 332 deletions(-) create mode 100644 .github/workflows/release.yml delete mode 100644 AUTHORS delete mode 100644 RELEASE_NOTES.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..05a1411c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,51 @@ +name: Semantic Release + +on: + push: + branches: + - master + +jobs: + test: + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: [3.6, 3.7, 3.8] + + steps: + - name: Install secp256k1 + run: sudo apt-get install libsecp256k1-0 libsecp256k1-dev + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Test with tox + run: tox + + release: + name: Semantic Release + runs-on: ubuntu-latest + concurrency: push + needs: + - test + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + ref: ${{ needs.beautify.outputs.new_sha }} + + - name: Fetch master + run: git fetch --prune origin +refs/heads/master:refs/remotes/origin/master + + - name: Python Semantic Release + uses: relekang/python-semantic-release@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + repository_username: ${{ secrets.PYPI_USERNAME }} + repository_password: ${{ secrets.PYPI_PASSWORD }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 25c26d9b..afe318ae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,45 +1,34 @@ +--- # Read up on pre-commit # https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/ repos: + # Check that the commit message adheres to the Angular convention (this is + # needed so that Semantic Release works) + - repo: https://github.com/commitizen-tools/commitizen + rev: v2.24.0 + hooks: + - id: commitizen + stages: [commit-msg] -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.5.0 - hooks: - - id: trailing-whitespace - - id: check-docstring-first - - id: check-executables-have-shebangs - - id: check-json - - id: check-yaml - - id: end-of-file-fixer - - id: fix-encoding-pragma - - id: check-merge-conflict - - id: no-commit-to-branch - args: [--branch, master] + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.2.0 + hooks: + - id: trailing-whitespace + - id: check-docstring-first + - id: check-executables-have-shebangs + - id: check-json + - id: check-yaml + - id: end-of-file-fixer + - id: fix-encoding-pragma -- repo: https://github.com/ambv/black - rev: 19.10b0 - hooks: - - id: black - language_version: python3 - -- repo: https://github.com/myint/docformatter - rev: v1.3.1 - hooks: - - id: docformatter - args: [ - -i, - --wrap-summaries=88, - --wrap-descriptions=88, - --pre-summary-newline, - ] - -- repo: https://gitlab.com/pycqa/flake8 - rev: 3.7.9 - hooks: + - repo: https://github.com/PyCQA/flake8 + rev: 4.0.1 + hooks: - id: flake8 - additional_dependencies: [ - 'pep8-naming', - 'flake8-comprehensions', - 'flake8-bugbear', - ] + + - repo: https://github.com/ambv/black + rev: 22.3.0 + hooks: + - id: black + language_version: python3 diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 154be825..00000000 --- a/AUTHORS +++ /dev/null @@ -1,29 +0,0 @@ - 409 Fabian Schuh - 215 Fabian Schuh - 127 Vladimir Kamarzin - 94 Fabian Schuh - 68 pyup-bot - 27 jhtitor - 11 Christopher Sanborn <23085117+christophersanborn@users.noreply.github.com> - 4 Chris Beaven - 4 Stefan Schiessl - 3 Mika Koivistoinen - 3 RuneStone - 2 Rune - 2 Stefan Schießl - 2 Zapata - 2 brickgao - 1 Abit - 1 Alexey Alexeyev - 1 BrianZhang - 1 BroncoTc - 1 Dmitriy Korniychuk - 1 Eric Frias - 1 Haruka Ma - 1 Tydus - 1 algruun - 1 avral - 1 grcgrc - 1 henry - 1 kvertiui - 1 mikakoi diff --git a/CHANGELOG.md b/CHANGELOG.md index efb4f9be..c9a649d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog Note: version releases in the 0.x.y range may introduce breaking changes. + + ## 0.7.0 - minor: Add liquidity pool support @@ -33,3 +35,171 @@ Note: version releases in the 0.x.y range may introduce breaking changes. - patch: Status Quo +Release 0.3.0 +============= + +The major change of this release was to merge common code with other +graphene-based blockchains into python-graphene to reduce redunance and +simply code maintainability. + +Features +-------- +d1484a0 Fix issue with backend showing wrong percentage change after a while +ba23069 Allow to create an account that only references to another account +23b2c7a Implement issuing of shares as part of Asset() +ab40514 Simplify use of custom authorties +c349316 Merge pull request #179 from jhtitor/few_asset_ops +9c2c3bf Add test for Asset_claim_pool operation. +5ad23c4 Add asset_claim_pool operation. +42deeda Add tests for global_settle and claim_fees operations. +dd4cb96 Add asset_global_settle and asset_claim_fees operations. +0a25a4d New operation +1f1e355 Merge 'upstream/develop' into few_asset_ops +681b0fa Implement asset-settle +74fa037 Finish up unittests using new caching system +63a4030 Import Object from graphenecommon +43a2170 Simplify Key classes +acc54d5 move general stuff to graphene +2a0b813 Simplyify dealing with Prefixes +3a9f16d Migrate common stuff to python-graphene +9c9b15a Separation of wallet.py +f41bd77 Bid Collateral Operation +54dcfbf Bid Collateral Operation + +Fixes +----- +436fb40 Fix Amount in Open Order and improve unittest (Fix #76) +acf9a29 Fix #180 +b061399 Fix #185 +b64f222 fix precommit to use python3 +bf6a3dc Merge pull request #171 from bitfag/fix-order-rounding +6cc984a Fix Object() class and add unit test +abf4046 Fix incorrect initialization of FilledOrder and Order +d52f7da Fix price feeds +ac91f9e Fix buy/sell of near-precision amounts +2695525 Fix messages and account +055635f Fix unittesting +4b72616 Fix fox.ini with blake +3bb9b8b Fix __init__ +bc73a8a #128 Proposal fix, now, at least method accountopenorders won't raise KeyError "limit_orders" +35a3aaf Fix #151 +8d66b43 Fix getActiveKeyForAccount failing when multiple keys installed +61712db Ensure we do have a default expiration time for new orders +949850b Properly initialize blockchain instance +8f9bc23 Also import the exceptions +4d27455 Also import the exceptions +1e7d98c Merge branch 'feature/cleanup-txbuilder' into develop +cf8fafb Ensure we can verify messages on different networks too +e13f77f define required type_id +20258e2 Re-enable computation of mcr +5efb1d4 Merge pull request #162 from jhtitor/memo_pad +4a633ca Merge pull request #160 from Algruun/master +e2ef0a4 Verify memo checksum during decoding. +1c50b37 Always add final padding during memo encryption. +b3f1bda Make memo _pad work with bytes, instead of strings. +588b8e7 Add memo tests for padding edge cases. +0b2b137 Message, ensure we can sign on different blockchain too +9644bf5 Ensure we can deal with \r as well +cd91155 Also store plain message and meta separately +dae6918 After verification fill in class members +3aa81cc Makefile rename back temporary test +54600bb use twine for pypi upload + + +Testnet +------- +1ec6faa Add HTLC class +e4d743d HTLC implementation +13e0168 Switch tests back to main net (breaks HLTC unit tests since ops are not available on mainnet) +65c451b Implement HTLC base operations + +Dependencies +------------ +802d576 bump dependency for pygraphene +b67724c Bump requirement for pygraphene + +Code Style and Cleanups +----------------------- +c95d093 linting +0e155e9 tox and requirements for black and flake8 +2e48137 pre-commit installation +8b5294d testing pre-commit +80013b1 linting +c96dac6 Isort +812e6e3 Black reformatting +3a6c491 remove obsolete modules +3918218 cleanup +960f3aa Remove logging module +7e5d506 Cleanup base.memo +3e15f87 Improve class dealing and unittesting + +Documentation +------------- +431582f Updates to documentation +1a06cfc Update documentation +ebb1f2d Add Hackthedex link in readme.md #153 +70b8260 [message] Better exception message + +Release 0.2.0rc0 +================ + +Storage: +-------- + +* internal storage now makes use of pygraphene 1.0.0 framework +* `bitshares.storage` now comes with the prebuilt inRam and SQLite stores from pygraphene +* `BitShares()` can be provided with a custom config store using key word `config_store=` and `wallet=` (wallet instance) +* `Wallet()` (internally used by `BitShares()`) can be provided with a custom config store using key word `key_store=` +* Interfaces for stores are defined in pygraphene +* The Interface for the wallet is defined in `wallet.py` +* Instead of using + + ``` + from bitshares.storage import configStorage as config + ``` + + use + + ``` + BitShares().config + ``` + + or + + ``` + from bitshares.storage import get_default_config_store + config = get_default_config_store() + ``` + +Testing: +-------- + +* pybitshares now contains a framework (fixtures) to simplify access to data provided by the blockchain/database +* Major improvements to coverage + +Features: +--------- + +* Add custom operation to bitsharesbase + +Fixes: +------ + +* 357aa63 Adjust "for_sale" when invert()-ing an Order +* 5924ac1 Allow to read more trading data #111 +* 26a72fc Commenting #132 +* f1b27d1 Set default expiration to 30 seconds #132 +* bd69b2c Fix bitshares->blockchain attrribute #132 +* a19b9ed Fix #136 +* f616874 Revert "fix Vesting" +* b430d3b Set default order expiration to 1yr +* a949570 fix Vesting +* f70f20f Ensure we don't through in case 'secs=None' +* 0dabd9a Use PublicKey's internal sorting algorithm +* 8b7b134 Fix incompatibility with new graphene framework +* 9ce8068 Fix init of FilledOrder from history op +* 51c2277 Fix unittests for pygraphene@develop +* 803f828 further improvements +* 305efe2 Raise Exception in case the key has been included already +* 5b2736a fix store to deal with proper sqlite file etc +* 7e5ff23 unit tests now with fixtures diff --git a/MANIFEST.in b/MANIFEST.in index c05265fa..2fa85afb 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,3 @@ include *.md -include requirements*.txt +include requirements.txt +include requirements-test.txt diff --git a/Makefile b/Makefile index 2525fb2f..fe4a0622 100644 --- a/Makefile +++ b/Makefile @@ -1,75 +1,54 @@ -.PHONY: clean-pyc clean-build docs - +.PHONY: clean clean: clean-build clean-pyc +.PHONY: clean-build clean-build: - rm -fr build/ - rm -fr dist/ - rm -fr *.egg-info - rm -fr __pycache__/ .eggs/ .cache/ .tox/ + rm -rf build/ + rm -rf dist/ + rm -rf *.egg-info + rm -rf __pycache__/ .eggs/ .cache/ + rm -rf .tox/ .pytest_cache/ .benchmarks/ +.PHONY: clean-pyc clean-pyc: find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '*~' -exec rm -f {} + +.PHONY: lint lint: - flake8 bitsharesapi bitsharesbase examples + flake8 bitshares* +.PHONY: test test: python3 setup.py test +.PHONY: tox +tox: + tox + +.PHONY: build build: python3 setup.py build +.PHONY: install install: build python3 setup.py install +.PHONY: install-user install-user: build python3 setup.py install --user +.PHONY: git git: git push --all git push --tags +.PHONY: check check: python3 setup.py check -dist: - python3 setup.py sdist bdist_wheel - python3 setup.py bdist_wheel - -upload: - twine upload --repository-url https://upload.pypi.org/legacy/ dist/* - +.PHONY: docs docs: - SPHINX_APIDOC_OPTIONS="members,undoc-members,show-inheritance,inherited-members" sphinx-apidoc -d 6 -e -f -o docs . *.py tests + sphinx-apidoc -d 6 -e -f -o docs . *.py tests make -C docs clean html - -docs_store: - git add docs - -git commit -m "Updating docs/" - -authors: - git shortlog -e -s -n > AUTHORS - -authors_store: - git add AUTHORS - -git commit -m "Updating Authors" - -semver: semver-release semver-updates - -semver-release: - -semversioner release - -semver-updates: - semversioner changelog > CHANGELOG.md - $(eval CURRENT_VERSION = $(shell semversioner current-version)) - sed -i "s/^__version__.*/__version__ = \"$(CURRENT_VERSION)\"/" setup.py - -git add .changes setup.py CHANGELOG.md - -git commit -m "semversioner release updates" --no-verify - -git flow release start $(CURRENT_VERSION) - git flow release finish $(CURRENT_VERSION) - -prerelease: test docs docs_store authors authors_store -release: prerelease semver clean build check dist upload git diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md deleted file mode 100644 index bc993d5e..00000000 --- a/RELEASE_NOTES.md +++ /dev/null @@ -1,168 +0,0 @@ -Release 0.3.0 -============= - -The major change of this release was to merge common code with other -graphene-based blockchains into python-graphene to reduce redunance and -simply code maintainability. - -Features --------- -d1484a0 Fix issue with backend showing wrong percentage change after a while -ba23069 Allow to create an account that only references to another account -23b2c7a Implement issuing of shares as part of Asset() -ab40514 Simplify use of custom authorties -c349316 Merge pull request #179 from jhtitor/few_asset_ops -9c2c3bf Add test for Asset_claim_pool operation. -5ad23c4 Add asset_claim_pool operation. -42deeda Add tests for global_settle and claim_fees operations. -dd4cb96 Add asset_global_settle and asset_claim_fees operations. -0a25a4d New operation -1f1e355 Merge 'upstream/develop' into few_asset_ops -681b0fa Implement asset-settle -74fa037 Finish up unittests using new caching system -63a4030 Import Object from graphenecommon -43a2170 Simplify Key classes -acc54d5 move general stuff to graphene -2a0b813 Simplyify dealing with Prefixes -3a9f16d Migrate common stuff to python-graphene -9c9b15a Separation of wallet.py -f41bd77 Bid Collateral Operation -54dcfbf Bid Collateral Operation - -Fixes ------ -436fb40 Fix Amount in Open Order and improve unittest (Fix #76) -acf9a29 Fix #180 -b061399 Fix #185 -b64f222 fix precommit to use python3 -bf6a3dc Merge pull request #171 from bitfag/fix-order-rounding -6cc984a Fix Object() class and add unit test -abf4046 Fix incorrect initialization of FilledOrder and Order -d52f7da Fix price feeds -ac91f9e Fix buy/sell of near-precision amounts -2695525 Fix messages and account -055635f Fix unittesting -4b72616 Fix fox.ini with blake -3bb9b8b Fix __init__ -bc73a8a #128 Proposal fix, now, at least method accountopenorders won't raise KeyError "limit_orders" -35a3aaf Fix #151 -8d66b43 Fix getActiveKeyForAccount failing when multiple keys installed -61712db Ensure we do have a default expiration time for new orders -949850b Properly initialize blockchain instance -8f9bc23 Also import the exceptions -4d27455 Also import the exceptions -1e7d98c Merge branch 'feature/cleanup-txbuilder' into develop -cf8fafb Ensure we can verify messages on different networks too -e13f77f define required type_id -20258e2 Re-enable computation of mcr -5efb1d4 Merge pull request #162 from jhtitor/memo_pad -4a633ca Merge pull request #160 from Algruun/master -e2ef0a4 Verify memo checksum during decoding. -1c50b37 Always add final padding during memo encryption. -b3f1bda Make memo _pad work with bytes, instead of strings. -588b8e7 Add memo tests for padding edge cases. -0b2b137 Message, ensure we can sign on different blockchain too -9644bf5 Ensure we can deal with \r as well -cd91155 Also store plain message and meta separately -dae6918 After verification fill in class members -3aa81cc Makefile rename back temporary test -54600bb use twine for pypi upload - - -Testnet -------- -1ec6faa Add HTLC class -e4d743d HTLC implementation -13e0168 Switch tests back to main net (breaks HLTC unit tests since ops are not available on mainnet) -65c451b Implement HTLC base operations - -Dependencies ------------- -802d576 bump dependency for pygraphene -b67724c Bump requirement for pygraphene - -Code Style and Cleanups ------------------------ -c95d093 linting -0e155e9 tox and requirements for black and flake8 -2e48137 pre-commit installation -8b5294d testing pre-commit -80013b1 linting -c96dac6 Isort -812e6e3 Black reformatting -3a6c491 remove obsolete modules -3918218 cleanup -960f3aa Remove logging module -7e5d506 Cleanup base.memo -3e15f87 Improve class dealing and unittesting - -Documentation -------------- -431582f Updates to documentation -1a06cfc Update documentation -ebb1f2d Add Hackthedex link in readme.md #153 -70b8260 [message] Better exception message - -Release 0.2.0rc0 -================ - -Storage: --------- - -* internal storage now makes use of pygraphene 1.0.0 framework -* `bitshares.storage` now comes with the prebuilt inRam and SQLite stores from pygraphene -* `BitShares()` can be provided with a custom config store using key word `config_store=` and `wallet=` (wallet instance) -* `Wallet()` (internally used by `BitShares()`) can be provided with a custom config store using key word `key_store=` -* Interfaces for stores are defined in pygraphene -* The Interface for the wallet is defined in `wallet.py` -* Instead of using - - ``` - from bitshares.storage import configStorage as config - ``` - - use - - ``` - BitShares().config - ``` - - or - - ``` - from bitshares.storage import get_default_config_store - config = get_default_config_store() - ``` - -Testing: --------- - -* pybitshares now contains a framework (fixtures) to simplify access to data provided by the blockchain/database -* Major improvements to coverage - -Features: ---------- - -* Add custom operation to bitsharesbase - -Fixes: ------- - -* 357aa63 Adjust "for_sale" when invert()-ing an Order -* 5924ac1 Allow to read more trading data #111 -* 26a72fc Commenting #132 -* f1b27d1 Set default expiration to 30 seconds #132 -* bd69b2c Fix bitshares->blockchain attrribute #132 -* a19b9ed Fix #136 -* f616874 Revert "fix Vesting" -* b430d3b Set default order expiration to 1yr -* a949570 fix Vesting -* f70f20f Ensure we don't through in case 'secs=None' -* 0dabd9a Use PublicKey's internal sorting algorithm -* 8b7b134 Fix incompatibility with new graphene framework -* 9ce8068 Fix init of FilledOrder from history op -* 51c2277 Fix unittests for pygraphene@develop -* 803f828 further improvements -* 305efe2 Raise Exception in case the key has been included already -* 5b2736a fix store to deal with proper sqlite file etc -* 7e5ff23 unit tests now with fixtures diff --git a/requirements.txt b/requirements.txt index 6ca0859c..c8aa88dc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -graphenelib>=1.4.0,<2.0.0 +graphenelib>=1.5.0,<2.0.0 Events==0.3 diff --git a/setup.cfg b/setup.cfg index a544e8b6..10354bc3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,12 +1,42 @@ [metadata] -description-file = README.md +name = bitshares +description = Python library for bitshares +description_file = README.md +author = Fabian Schuh +author_email = Fabian@chainsquad.com +maintainer = Fabian Schuh +maintainer_email = Fabian@chainsquad.com +url = https://github.com/bitshares/python-bitshares +keywords = + bitshares + library + api + rpc +# See https://pypi.org/classifiers/ +classifiers = + License :: OSI Approved :: MIT License + Operating System :: OS Independent + Programming Language :: Python :: 3 + Development Status :: 5 - Production/Stable + Environment :: Console + Intended Audience :: Developers + Topic :: Office/Business :: Financial + Programming Language :: Python :: 3 :: Only + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Topic :: Software Development :: Version Control :: Git +[options] +python_requires = >= 3.6 +packages = find: +setup_requires = + pytest-runner [aliases] test=pytest [coverage:run] source=bitsharesbase,bitsharesapi,bitshares -branch=True omit= tests/* .tox/* @@ -27,8 +57,6 @@ exclude_lines = if __name__ == .__main__.: if sys.version > '3': -[coverage:html] - [flake8] select = C,E,F,W,B,B950 ignore = E501,F401,E203,W503,B950,E722,B001 @@ -50,3 +78,7 @@ multi_line_output = 3 line_length = 88 known_third_party = include_trailing_comma = true + +[semantic_release] +version_variable = setup.py:__version__ +upload_to_repository = true diff --git a/setup.py b/setup.py index 82510dd5..c7fd4b01 100755 --- a/setup.py +++ b/setup.py @@ -3,50 +3,16 @@ from setuptools import setup -# Work around mbcs bug in distutils. -# http://bugs.python.org/issue10945 -import codecs - -try: - codecs.lookup("mbcs") -except LookupError: - ascii = codecs.lookup("ascii") - codecs.register(lambda name, enc=ascii: {True: enc}.get(name == "mbcs")) - __version__ = "0.7.0" -URL = "https://github.com/bitshares/python-bitshares" setup( - name="bitshares", version=__version__, - description="Python library for bitshares", - long_description=open("README.md").read(), - download_url="{}/tarball/{}".format(URL, __version__), - author="Fabian Schuh", - author_email="Fabian@chainsquad.com", - maintainer="Fabian Schuh", - maintainer_email="Fabian@chainsquad.com", - url=URL, - keywords=["bitshares", "library", "api", "rpc"], - packages=[ - "bitshares", - "bitsharesapi", - "bitsharesbase", - "bitshares.aio", - "bitsharesapi.aio", - ], - classifiers=[ - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python :: 3", - "Development Status :: 3 - Alpha", - "Intended Audience :: Developers", - "Intended Audience :: Financial and Insurance Industry", - "Topic :: Office/Business :: Financial", - ], install_requires=open("requirements.txt").readlines(), - setup_requires=["pytest-runner"], - tests_require=["pytest"], - include_package_data=True, - python_requires=">=3.6.1", + tests_require=open("requirements-test.txt").readlines(), + include_package_data=True, # needed for data from manifest + # Use git repo data (latest tag, current commit hash, etc) for building a + # version number according PEP 440. Conflicts with semantic-release + setuptools_git_versioning={ + "enabled": False, + }, ) diff --git a/tox.ini b/tox.ini index 14dd0320..5d7aea8f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,18 @@ [tox] -envlist = py36,py37,lint,docs -#envlist = py36,lint,docs +envlist = py{36,37,38}-{linux,windows},lint,docs skip_missing_interpreters = true +[gh-actions] +python = + 3.6: py36 + 3.7: py37 + 3.8: py38, lint, docs + [testenv] +platform = linux: linux + windows: win32 deps=-rrequirements-test.txt +extras = linux: speedups commands= coverage run setup.py test coverage report @@ -14,13 +22,8 @@ commands= [testenv:lint] deps = flake8 - black - isort - commands = flake8 bitshares* -# black --check --verbose bitshares bitsharesbase bitsharesapi -# isort --check-only --recursive bitshares* [testenv:docs] basepython=