Release/2.0.0
PyOTA v2.0.0
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.
- If you are unable to install the latest version of PyOTA, run
- [#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.
- If you install PyOTA using pip, you do not need to do anything special; dependencies will be updated automatically when you run
- [#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!
- This change introduces a dependency on the
- [#51 (closed)] Removed address caches for security reasons.
- Reversed the behavior of the
head_to_tail
parameter inBundle.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.
- Previously, setting
-
Digest
now requires that its length be a multiple of 81 trytes. - Removed
iota
symlink at the top level of the package structure, renamedsrc
toiota
.- 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
.
- This replaces
- 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 optionalhash
argument (thanks @alon-e for reporting!). - [#41 (closed)] Fixed error when invoking
help(api)
in the REPL script. -
Address.with_valid_checksum
now also copiesbalance
,key_index
andsecurity_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.
- After v2.0.0,
- 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