Skip to content
This repository has been archived by the owner on Jan 13, 2023. It is now read-only.

PyOTA v2.0.0

Compare
Choose a tag to compare
@todofixthis todofixthis released this 03 Oct 07:06
· 461 commits to master since this release

⚠️ 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] 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] 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] 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] Implemented multisig support.
  • [#28] Added support for address security levels.
  • [#67] Added support for attachment timestamps (thanks @normpad!).
  • [#53] Reduced default min_weight_magnitude (thanks @johngrantuk!):
    • New mainnet value: 14
    • New testnet value: 9
  • [#18] 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] Seed.random now generates 81-tryte seeds by default.
    • Previously, it was generating 82-tryte seeds.
  • [#42] Transaction.from_tryte_string now accepts optional hash argument (thanks @alon-e for reporting!).
  • [#41] Fixed error when invoking help(api) in the REPL script.
  • Address.with_valid_checksum now also copies balance, key_index and security_level.
  • [#47] 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] 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] Added example script demonstrating how to route PoW to local node (thanks @johngrantuk)!.
  • [#31] 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:

Signature/Checksums

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# 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] 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] 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:
        * https://forum.iota.org/t/snapshot-public-validation-22-09-2017/4256
    * Thanks @alon-e for assistance with PyKerl implementation!
* [#51] 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] Implemented multisig support.
* [#28] Added support for address security levels.
* [#67] Added support for attachment timestamps (thanks @normpad!).
* [#53] Reduced default `min_weight_magnitude` (thanks @johngrantuk!):
    * New mainnet value: 14
    * New testnet value: 9
* [#18] 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](https://pypi.python.org/pypi/PyOTA-CCurl).
  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] `Seed.random` now generates 81-tryte seeds by default.
    * Previously, it was generating 82-tryte seeds.
* [#42] `Transaction.from_tryte_string` now accepts optional `hash` argument (thanks @alon-e for reporting!).
* [#41] Fixed error when invoking `help(api)` in the REPL script.
* `Address.with_valid_checksum` now also copies `balance`, `key_index` and `security_level`.
* [#47] 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] 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](https://github.com/iotaledger/iota.lib.py/issues/) 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] Added example script demonstrating how to route PoW to local node (thanks @johngrantuk)!.
* [#31] 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:
* @alon-e
* @curvv
* @cychotic
* @elk
* @ivoscc
* @johngrantuk
* @labovich
* @normpad
* @th0br0
* @vynes

# Binary Distribution Checksums
* PyOTA-2.0.0-py2.py3-none-any.whl
    * sha256: 0e2af880dfc0f2451361e3042dbb0e93ca195b524c6bb0267ca3450932981ae0
    * md5: d0e4b0282788ab8271a3b44c1500dab1
* PyOTA-2.0.0.tar.gz
    * sha256: 8d1a9cc871ff6f35475e9a8ae3d2ae6cdf59781fb1bd9a7ecfd76eed98880369
    * md5: 23b92148c49ac535cb4aa10a0957786f
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEc9vOP4UernObqSUWjIY/jl7U00MFAlnTNsoACgkQjIY/jl7U
00PgqA//aOKgD9mtSAUr+r9xeOhBlgbERQuhvKqDPcdyqKe7We6zw0FwJGMw4Yq9
yxCHyBljoLm4BLp9lTMWi0xLkNhO32Ry0Nb47VBGBJ9xuAjU4nMr7hLPYKaP8bh+
WQs5BAeolXHYqA8QoBJRmfLguRQNxymDXKFX2YoGXGgAErRUTonXy1aXiVKF6flg
haRq3dxDyspqI4fMr+YY65bEwcIKBvN1S9QKKIMDrXuA0qgnB8EKMCOq3LU7/Dfu
SuBiLv3fqsUMXAbVaF1YkAeVkqTPN9HmjJTMzuDwSwvjDmNxp9UMJ5PUAiEY6Wcq
Sh6FHpByLgdtRD1JL9S76lFpq0PHKNska3Fs/TGYI6G38qhNl2m3oWlQASzsvjY5
bs4iEtUmr+9V+YLm8ka86COjlBY5RpNazxiQwn61DH8QznC/u1iK8e6TXU868tLe
2i541LVc7YDcHYpPWjGAhLs/lZhwH3Ujslf6sNldLVFwCcqDLc2j/83DZmzpI26E
lC6SqpxL9Rc/ukalBwOBBUWaQfDahZllLrW+LQCzRdHGof3IKh0XkLLWtXf/dAV9
dSPtCs6H83BGvdlfD5VtFkiGAVy+SiLIze2r252JOMtYWQm5hKSy3+WpMLg6CZQd
OU07Epu5ulmJTSMu6/A8PvM8nkIZPZ2+tWTpVXALAcsXx6q4KEE=
=txf7
-----END PGP SIGNATURE-----