1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-04-27 12:39:04 +00:00
Go to file
matejcik af98a4071a device_tests: allow custom runxfail
We can now selectively runxfail certain tests. This is useful for
accepting PRs into trezor-core:

1. trezor-core is going to get a pytest.ini that sets xfail_strict.
   That means that if an `xfail`ed test actually passes, that will
   break the test suite. So it will be visible when we implement
   a feature for which tests exist.
2. To allow PRs to pass the test suite without touching python-trezor
   directly, we add a new pytest.ini option: run_xfail.
   This adds a list of markers which will ignore `xfail`.
   So:
   2.1 First, the python-trezor PR marks the tests with the name
       of the feature. This commit already does that: Lisk tests
       are marked `@pytest.mark.lisk`, NEMs are `@pytest.mark.nem`,
       etc.
       The tests will be also marked with `xfail`, because the
       feature is not in core yet.
   2.2 Then, the trezor-core PR implements the feature, which makes
       the `xfail`ed tests pass. That breaks the test suite.
   2.3 To fix the test suite, the core PR also adds a `run_xfail`
       to `pytest.ini`: `run_xfail = lisk`.
       (it can take a list: `run_xfail = lisk nem stellar`)
       That will make the test suite behave as if the tests are not
       `xfail`ed. If the feature is implemented correctly, the tests
       will pass.
   2.4 When the PR is accepted to core, the next step should be
       a PR to python-trezor that removes the `xfail`s. After that,
       we should also remove the `run_xfail` option, just to be tidy.
2018-05-22 17:29:03 +02:00
bash_completion.d add initial bash_completion script 2016-06-22 17:26:11 +02:00
docs Improve / simplify documentation 2017-12-07 21:57:23 +01:00
tools protobuf: update generators and messages to be identical with trezor-core 2018-05-09 17:15:13 +02:00
trezorlib device_tests: allow custom runxfail 2018-05-22 17:29:03 +02:00
vendor vendor: trezor-common updated 2018-05-14 15:16:26 +02:00
.flake8 flake8: make flake8 better and more strict 2018-04-10 15:58:34 +02:00
.gitignore build: preprocess messages and assets in setup.py 2018-04-10 15:58:34 +02:00
.gitmodules add submodule trezor-common 2018-04-10 15:58:34 +02:00
.travis.yml travis: set virtualenv version to restore build on py33 2018-05-18 10:58:28 +02:00
CHANGELOG.md add changelog 2018-03-05 19:11:45 +01:00
COPYING python-trezor is LGPLv3 2015-01-30 23:55:29 +01:00
MANIFEST.in build: include tools in sdist 2018-04-10 15:58:34 +02:00
README.rst docs: contributing info for the new submodule 2018-04-10 15:58:34 +02:00
requirements-dev.txt build: add flake8 to dev requirements 2018-05-04 17:50:49 +02:00
requirements-optional.txt build: move ethereum requirements to their own extra 2018-05-07 13:05:48 +02:00
requirements.txt build: require typing module for python < 3.4 2018-05-09 17:43:41 +02:00
setup.py build: require typing module for python < 3.4 2018-05-09 17:43:41 +02:00
tox.ini transport: fix all_transports when required modules are missing () 2018-03-09 10:58:24 +01:00
trezorctl stellar: xdr parse move to trezorctl; client works with messages 2018-05-17 17:17:09 +02:00
trigger-travis.sh travis: fix bash syntax bug in trigger-travis.sh 2018-05-07 13:36:55 +02:00

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
-------

Linux requirements:

.. code::

  sudo apt-get install python3-dev cython3 libusb-1.0-0-dev libudev-dev git

Linux & Mac Python requirements:

.. code::

  sudo -H pip3 install setuptools
  sudo -H pip3 install -r requirements.txt
  sudo -H pip3 install trezor

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/ <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:

=== === ===
 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 <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:

.. 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.