diff --git a/README.md b/README.md new file mode 100644 index 000000000..65b055d1f --- /dev/null +++ b/README.md @@ -0,0 +1,144 @@ +python-trezor +============= + +[![image](https://travis-ci.org/trezor/python-trezor.svg?branch=master)](https://travis-ci.org/trezor/python-trezor) + +[![image](https://badges.gitter.im/trezor/community.svg)](https://gitter.im/trezor/community) + +Python library and commandline client for communicating with TREZOR +Hardware Wallet + +See for more information + +Install +------- + +Python-trezor requires Python 3.3 or higher, and libusb 1.0. The easiest +way to install it is with `pip`. The rest of this guide assumes you have +a working `pip`; if not, you can refer to [this +guide](https://packaging.python.org/tutorials/installing-packages/). + +### Trezor T only + +On a typical Linux / Mac / BSD system, you already have all you need. +Install `trezor` with: + +```sh +pip3 install --upgrade setuptools +pip3 install trezor +``` + +On Windows, you also need to install +[libusb](https://github.com/libusb/libusb/wiki/Windows) and the +appropriate [drivers](https://zadig.akeo.ie/). This is, unfortunately, a +topic bigger than this README. + +### Trezor One support + +In addition to the above, you need to install development headers for +HIDAPI. + +On a Debian or Ubuntu based system, you can install these: + +```sh +sudo apt-get install python3-dev python3-pip cython3 libusb-1.0-0-dev libudev-dev +``` + +When installing the trezor library, you need to specify that you want +`hidapi`: + +```sh +pip3 install --upgrade setuptools +pip3 install trezor[hidapi] +``` + +### Ethereum support + +Ethereum requires additional python packages. Instead of +`pip3 install trezor`, specify `pip3 install trezor[ethereum]`. + +You can combine it with the above, to get both HIDAPI and Ethereum +support: + +```sh +pip3 install trezor[ethereum,hidapi] +``` + +### FreeBSD + +On FreeBSD you can install the packages: + +```sh +pkg install security/py-trezor +``` + +or build via ports: + +```sh +cd /usr/ports/security/py-trezor +make install clean +``` + +Command line client (trezorctl) +------------------------------ + +The included `trezorctl` python script can perform various tasks such as +changing setting in the Trezor, signing transactions, retrieving account +info and addresses. See the [docs/](docs/) sub folder for detailed +examples and options. + +NOTE: An older version of the `trezorctl` command is [available for +Debian Stretch](https://packages.debian.org/en/stretch/python-trezor) +(and comes pre-installed on [Tails OS](https://tails.boum.org/)). + +Python Library +-------------- + +You can use this python library to interact with a Bitcoin Trezor and +use its capabilities in your application. See examples here in the +[tools/](tools/) sub folder. + +PIN Entering +------------ + +When you are asked for PIN, you have to enter scrambled PIN. Follow the +numbers shown on TREZOR display and enter the their positions using the +numeric keyboard mapping: + + +
789 +
456 +
123 +
+ +Example: your PIN is **1234** and TREZOR is displaying the following: + + +
283 +
546 +
791 +
+ +You have to enter: **3795** + +Contributing +------------ + +Python-trezor pulls coins info and protobuf messages from +[trezor-common](https://github.com/trezor/trezor-common) repository. If +you are developing new features for Trezor, you will want to start +there. Once your changes are accepted to `trezor-common`, you can make a +PR against this repository. Don't forget to update the submodule with: + +```sh +git submodule update --init --remote +``` + +Then, rebuild the protobuf messages and get `coins.json` by running: + +```sh +python3 setup.py prebuild +``` + +To get support for BTC-like coins, these steps are enough and no further +changes to the library are necessary. diff --git a/README.rst b/README.rst deleted file mode 100644 index d86653094..000000000 --- a/README.rst +++ /dev/null @@ -1,137 +0,0 @@ -python-trezor -============= - -.. image:: https://travis-ci.org/trezor/python-trezor.svg?branch=master - :target: https://travis-ci.org/trezor/python-trezor - -.. image:: https://badges.gitter.im/trezor/community.svg - :target: https://gitter.im/trezor/community - -Python library and commandline client for communicating with TREZOR Hardware Wallet - -See https://trezor.io for more information - - -Install -------- - -Python-trezor requires Python 3.3 or higher, and libusb 1.0. The easiest way to install it is with ``pip``. -The rest of this guide assumes you have a working ``pip``; if not, you can refer to -`this guide `_. - -Trezor T only -~~~~~~~~~~~~~ - -On a typical Linux / Mac / BSD system, you already have all you need. Install ``trezor`` with: - -.. code:: - - pip3 install --upgrade setuptools - pip3 install trezor - -On Windows, you also need to install `libusb `_ -and the appropriate `drivers `_. This is, unfortunately, a topic bigger -than this README. - -Trezor One support -~~~~~~~~~~~~~~~~~~ - -In addition to the above, you need to install development headers for HIDAPI. - -On a Debian or Ubuntu based system, you can install these: - -.. code:: - - sudo apt-get install python3-dev python3-pip cython3 libusb-1.0-0-dev libudev-dev - -When installing the `trezor` library, you need to specify that you want ``hidapi``: - -.. code:: - - pip3 install --upgrade setuptools - pip3 install trezor[hidapi] - -Ethereum support -~~~~~~~~~~~~~~~~ - -Ethereum requires additional python packages. Instead of ``pip3 install trezor``, specify -``pip3 install trezor[ethereum]``. - -You can combine it with the above, to get both HIDAPI and Ethereum support: - -.. code:: - - pip3 install trezor[ethereum,hidapi] - -FreeBSD -~~~~~~~ - -On FreeBSD you can install the packages: - -.. code:: - - pkg install security/py-trezor - -or build via ports: - -.. code:: - - cd /usr/ports/security/py-trezor - make install clean - - -Commandline client (trezorctl) ------------------------------- - -The included ``trezorctl`` python script can perform various tasks such as changing setting in the Trezor, signing transactions, retrieving account info and addresses. See the `docs/ `_ sub folder for detailed examples and options. - -NOTE: An older version of the ``trezorctl`` command is `available for Debian Stretch `_ (and comes pre-installed on `Tails OS `_). - - -Python Library --------------- - -You can use this python library to interact with a Bitcoin Trezor and use its capabilities in your application. -See examples here in the `tools/ `_ sub folder. - - -PIN Entering ------------- - -When you are asked for PIN, you have to enter scrambled PIN. Follow the numbers shown on TREZOR display and enter the their positions using the numeric keyboard mapping: - -=== === === - 7 8 9 - 4 5 6 - 1 2 3 -=== === === - -Example: your PIN is **1234** and TREZOR is displaying the following: - -=== === === - 2 8 3 - 5 4 6 - 7 9 1 -=== === === - -You have to enter: **3795** - - -Contributing ------------- - -Python-trezor pulls coins info and protobuf messages from `trezor-common `_ repository. If you are -developing new features for Trezor, you will want to start there. Once your changes are accepted to ``trezor-common``, you can make a PR -against this repository. Don't forget to update the submodule with: - -.. code:: - - git submodule update --init --remote - -Then, rebuild the protobuf messages and get ``coins.json`` by running: - -.. code:: - - python3 setup.py prebuild - -To get support for BTC-like coins, these steps are enough and no further changes to the library are necessary. diff --git a/setup.py b/setup.py index f1b03a070..1a8aee30c 100755 --- a/setup.py +++ b/setup.py @@ -25,6 +25,12 @@ CWD = os.path.dirname(os.path.realpath(__file__)) TREZOR_COMMON = os.path.join(CWD, 'vendor', 'trezor-common') +def read(name): + filename = os.path.join(CWD, name) + with open(filename, 'r') as f: + return f.read() + + class PrebuildCommand(Command): description = 'update vendored files (coins.json, protobuf messages)' user_options = [] @@ -78,6 +84,11 @@ setup( author='TREZOR', author_email='info@trezor.io', description='Python library for communicating with TREZOR Hardware Wallet', + long_description='{}\n\n{}'.format( + read('README.md'), + read('CHANGELOG.md'), + ), + long_description_content_type='text/markdown', url='https://github.com/trezor/python-trezor', packages=find_packages(), package_data={