Skip to content

Release/2.0.0

Phoenix requested to merge release/2.0.0 into master

PyOTA v2.0.0

️ This release contains several changes that are not backwards compatible with the previous version. Please review the Backwards-Incompatible Changes before upgrading!

Backwards-Incompatible Changes

  • PyOTA now requires pip v9 or later.
    • If you are unable to install the latest version of PyOTA, run pip install --upgrade pip first.
  • [#39 (closed)] PyOTA now requires requests 2.4.1 or later.
    • If you install PyOTA using pip, you do not need to do anything special; dependencies will be updated automatically when you run pip install --upgrade pyota.
    • If you install PyOTA by cloning the GitHub repo, you must re-run pip install . to install missing dependencies.
  • [#61 (closed)] PyOTA now uses the new Kerl and Curl-P-81 algorithms.
    • This change introduces a dependency on the pysha3 library. See previous bullet point for installation instructions.
    • These changes are coordinated with the Tangle snapshot created on 21 August, 2017.
    • If your application maintains a local database of keys/addresses, you may need to regenerate them.
    • More information:
    • Thanks @alon-e for assistance with PyKerl implementation!
  • [#51 (closed)] Removed address caches for security reasons.
  • Reversed the behavior of the head_to_tail parameter in Bundle.as_tryte_strings.
    • Previously, setting head_to_tail=True would return transactions in reverse order (and mutatis mutandis), which is incorrect. Now it returns the transactions in the correct order.
  • Digest now requires that its length be a multiple of 81 trytes.
  • Removed iota symlink at the top level of the package structure, renamed src to iota.
    • This only impacts developers who have cloned the repository; if you install PyOTA via pip, this will not affect you.

New Features

  • [#10 (closed)] Implemented multisig support.
  • [#28 (closed)] Added support for address security levels.
  • [#67 (closed)] Added support for attachment timestamps (thanks @normpad!).
  • [#53 (closed)] Reduced default min_weight_magnitude (thanks @johngrantuk!):
    • New mainnet value: 14
    • New testnet value: 9
  • [#18 (closed)] Added convert_value_to_standard_unit (thanks @Vynes!).
  • Installing via pip now automatically installs iota-cli app into env path.
    • This replaces examples/repl.py.
  • Added support for PyOTA-CCurl extension. This is an optional C extension that improves the performance of Curl-P-81 significantly (speedups of 60x are common).
    • Thanks @Elk for making the extension compatible with Python 2!

Enhancements and Bugfixes

  • TryteString (and subclasses) now support creating new instances from unicode values. It is no longer necessary to convert values into byte strings first.
  • [#44 (closed)] Seed.random now generates 81-tryte seeds by default.
    • Previously, it was generating 82-tryte seeds.
  • [#42 (closed)] Transaction.from_tryte_string now accepts optional hash argument (thanks @alon-e for reporting!).
  • [#41 (closed)] Fixed error when invoking help(api) in the REPL script.
  • Address.with_valid_checksum now also copies balance, key_index and security_level.
  • [#47 (closed)] Added example script showing proof-of-concept for integrating with JS MAM library.
    • A Python implementation of MAM is coming; for now it is necessary to use the JS library.
  • [#63 (closed)] Fixed conflict when importing PyOTA in a Django project (thanks @labovich!).
  • Improved PyCurl performance by ~7%.
  • Split out the transactions module into its own package.
    • Existing imports should still work; please file an issue on the PyOTA Issue Tracker if you notice any broken imports.
  • Made JSON representations of certain objects more comprehensive.
  • Added IPython repr integrations.
  • Improved documentation, fixed a few minor issues.
  • Fixed incorrect behavior of examples/address_generator.py (thanks @ivoscc!).
  • Fixed node URI in examples/sandbox.py.
  • [#34 (closed)] Added example script demonstrating how to route PoW to local node (thanks @johngrantuk)!.
  • [#31 (closed)] Added example script demonstrating how to send IOTAs to an address (thanks @johngrantuk!).
  • PyOTA now ships universal wheels.
  • Travis CI now only deploys tagged releases to PyPI.
    • After v2.0.0, master will only contain the latest production release of PyOTA.
  • Added contributor guide.
  • Removed unnecessary dependencies from Python 3 installs. If you use Python 3, you may uninstall the following libraries:
    • mock
    • typing

Huge thanks to @normpad and @alon-e for helping test the v2.0.0 beta and making sure it is stable for production release!

Additional thanks to the following individuals for contributing code and identifying issues during the development of PyOTA v2:

Merge request reports