chore(python): replace pipenv with poetry

pull/1303/head
Pavol Rusnak 4 years ago committed by matejcik
parent 98ea241e97
commit 4fdb62c2e2

@ -17,10 +17,6 @@ variables:
# Apply timeout to pytest-based tests # Apply timeout to pytest-based tests
PYTEST_TIMEOUT: "300" PYTEST_TIMEOUT: "300"
# Pipenv cache
PIPENV_VENV_IN_PROJECT: "true"
PIPENV_CACHE_DIR: ".cache/"
# No need for TLS because everything runs on the same machine # No need for TLS because everything runs on the same machine
DOCKER_TLS_CERTDIR: "" DOCKER_TLS_CERTDIR: ""
stages: stages:
@ -33,7 +29,7 @@ stages:
before_script: before_script:
- . $HOME/.nix-profile/etc/profile.d/nix.sh || true - . $HOME/.nix-profile/etc/profile.d/nix.sh || true
- nix-shell --run "pipenv sync" - nix-shell --run "poetry install"
- export LEGACY_VERSION=$(nix-shell --run "./tools/version.sh legacy/firmware/version.h") - export LEGACY_VERSION=$(nix-shell --run "./tools/version.sh legacy/firmware/version.h")
- export CORE_VERSION=$(nix-shell --run "./tools/version.sh core/embed/firmware/version.h") - export CORE_VERSION=$(nix-shell --run "./tools/version.sh core/embed/firmware/version.h")

@ -22,17 +22,17 @@ env:
install: install:
- pip install --upgrade pip wheel setuptools - pip install --upgrade pip wheel setuptools
- pip install pipenv - pip install poetry
- pipenv sync - poetry install
# make sure pipenv is installable without protobuf - install protoc later # make sure poetry is installable without protobuf - install protoc later
- curl -LO "https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-linux-x86_64.zip" - curl -LO "https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-linux-x86_64.zip"
- unzip "protoc-${PROTOBUF_VERSION}-linux-x86_64.zip" -d protoc - unzip "protoc-${PROTOBUF_VERSION}-linux-x86_64.zip" -d protoc
- export PATH="$(pwd)/protoc/bin:$PATH" - export PATH="$(pwd)/protoc/bin:$PATH"
script: script:
- pipenv run make style_check - poetry run make style_check
- pipenv run make defs_check - poetry run make defs_check
- pipenv run make gen_check - poetry run make gen_check
- ci/check_fixup.sh - ci/check_fixup.sh
notifications: notifications:

@ -1,77 +0,0 @@
[[source]]
url = "https://pypi.org/simple"
name = "pypi"
verify_ssl = true
[packages]
# all
trezor = {editable = true,path = "./python"}
scons = "*"
protobuf = "*"
pyblake2 = "*"
Pyro4 = "*"
nanopb = "==0.4.3"
virtualenv = "==20.0.23" # https://github.com/pypa/virtualenv/issues/1873
## test tools
pytest = "*"
mock = "*"
coverage = "<5" # coverage 5+ uses binary sqlite format
flaky = ">=3.6.1" # https://github.com/box/flaky/issues/156
pytest-ordering = "*"
pytest-random-order = "*"
pytest-timeout = "*"
tox = "*"
dominate = "*"
flake8-requirements = ">=1.3.2"
# hardware tests
pyserial = "*"
## test requirements
shamir-mnemonic = "*"
fido2 = ">=0.8.0"
## typing
mypy = "*"
typing-extensions = ">=3.7.4"
## style
isort = "<5" # 5 changes lots of stuff that need to be addressed first: https://timothycrosley.github.io/isort/docs/upgrade_guides/5.0.0/
flake8 = ">=3.7.0"
black = "*"
mako = ">=1.0.7"
munch = ">=2.3.2"
autoflake = "*"
# common
demjson = "*"
graphviz = "*"
## cointool
click = ">=6"
ed25519 = ">=1.4"
requests = ">=2.19"
termcolor = ">=0.1.2"
Pillow = ">=5.2.0"
# crypto
ecdsa = ">=0.13.3"
curve25519-donna = "*"
pyasn1 = "*"
# legacy
setuptools = ">=24.2.0"
typing = "*"
# storage
cryptography = "*"
hypothesis = "*"
attrs = "*"
inotify = "*"
[dev-packages]
scan-build = "*"
[pipenv]
allow_prereleases = true

824
Pipfile.lock generated

@ -1,824 +0,0 @@
{
"_meta": {
"hash": {
"sha256": "9cc4c6e7ef24ed10b223c63551933794ca37d1a40c0327f52506552af506e9c5"
},
"pipfile-spec": 6,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"appdirs": {
"hashes": [
"sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41",
"sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"
],
"version": "==1.4.4"
},
"attrs": {
"hashes": [
"sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594",
"sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"
],
"index": "pypi",
"version": "==20.2.0"
},
"autoflake": {
"hashes": [
"sha256:61a353012cff6ab94ca062823d1fb2f692c4acda51c76ff83a8d77915fba51ea"
],
"index": "pypi",
"version": "==1.4"
},
"black": {
"hashes": [
"sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"
],
"index": "pypi",
"version": "==20.8b1"
},
"certifi": {
"hashes": [
"sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
"sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
],
"version": "==2020.6.20"
},
"cffi": {
"hashes": [
"sha256:005f2bfe11b6745d726dbb07ace4d53f057de66e336ff92d61b8c7e9c8f4777d",
"sha256:09e96138280241bd355cd585148dec04dbbedb4f46128f340d696eaafc82dd7b",
"sha256:0b1ad452cc824665ddc682400b62c9e4f5b64736a2ba99110712fdee5f2505c4",
"sha256:0ef488305fdce2580c8b2708f22d7785ae222d9825d3094ab073e22e93dfe51f",
"sha256:15f351bed09897fbda218e4db5a3d5c06328862f6198d4fb385f3e14e19decb3",
"sha256:22399ff4870fb4c7ef19fff6eeb20a8bbf15571913c181c78cb361024d574579",
"sha256:23e5d2040367322824605bc29ae8ee9175200b92cb5483ac7d466927a9b3d537",
"sha256:2791f68edc5749024b4722500e86303a10d342527e1e3bcac47f35fbd25b764e",
"sha256:2f9674623ca39c9ebe38afa3da402e9326c245f0f5ceff0623dccdac15023e05",
"sha256:3363e77a6176afb8823b6e06db78c46dbc4c7813b00a41300a4873b6ba63b171",
"sha256:33c6cdc071ba5cd6d96769c8969a0531be2d08c2628a0143a10a7dcffa9719ca",
"sha256:3b8eaf915ddc0709779889c472e553f0d3e8b7bdf62dab764c8921b09bf94522",
"sha256:3cb3e1b9ec43256c4e0f8d2837267a70b0e1ca8c4f456685508ae6106b1f504c",
"sha256:3eeeb0405fd145e714f7633a5173318bd88d8bbfc3dd0a5751f8c4f70ae629bc",
"sha256:44f60519595eaca110f248e5017363d751b12782a6f2bd6a7041cba275215f5d",
"sha256:4d7c26bfc1ea9f92084a1d75e11999e97b62d63128bcc90c3624d07813c52808",
"sha256:529c4ed2e10437c205f38f3691a68be66c39197d01062618c55f74294a4a4828",
"sha256:6642f15ad963b5092d65aed022d033c77763515fdc07095208f15d3563003869",
"sha256:85ba797e1de5b48aa5a8427b6ba62cf69607c18c5d4eb747604b7302f1ec382d",
"sha256:8f0f1e499e4000c4c347a124fa6a27d37608ced4fe9f7d45070563b7c4c370c9",
"sha256:a624fae282e81ad2e4871bdb767e2c914d0539708c0f078b5b355258293c98b0",
"sha256:b0358e6fefc74a16f745afa366acc89f979040e0cbc4eec55ab26ad1f6a9bfbc",
"sha256:bbd2f4dfee1079f76943767fce837ade3087b578aeb9f69aec7857d5bf25db15",
"sha256:bf39a9e19ce7298f1bd6a9758fa99707e9e5b1ebe5e90f2c3913a47bc548747c",
"sha256:c11579638288e53fc94ad60022ff1b67865363e730ee41ad5e6f0a17188b327a",
"sha256:c150eaa3dadbb2b5339675b88d4573c1be3cb6f2c33a6c83387e10cc0bf05bd3",
"sha256:c53af463f4a40de78c58b8b2710ade243c81cbca641e34debf3396a9640d6ec1",
"sha256:cb763ceceae04803adcc4e2d80d611ef201c73da32d8f2722e9d0ab0c7f10768",
"sha256:cc75f58cdaf043fe6a7a6c04b3b5a0e694c6a9e24050967747251fb80d7bce0d",
"sha256:d80998ed59176e8cba74028762fbd9b9153b9afc71ea118e63bbf5d4d0f9552b",
"sha256:de31b5164d44ef4943db155b3e8e17929707cac1e5bd2f363e67a56e3af4af6e",
"sha256:e66399cf0fc07de4dce4f588fc25bfe84a6d1285cc544e67987d22663393926d",
"sha256:f0620511387790860b249b9241c2f13c3a80e21a73e0b861a2df24e9d6f56730",
"sha256:f4eae045e6ab2bb54ca279733fe4eb85f1effda392666308250714e01907f394",
"sha256:f92cdecb618e5fa4658aeb97d5eb3d2f47aa94ac6477c6daf0f306c5a3b9e6b1",
"sha256:f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591"
],
"version": "==1.14.3"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"click": {
"hashes": [
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
],
"index": "pypi",
"version": "==7.1.2"
},
"colorama": {
"hashes": [
"sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff",
"sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==0.4.3"
},
"construct": {
"hashes": [
"sha256:97ba13edcd98546f10f7555af41c8ce7ae9d8221525ec4062c03f9adbf940661"
],
"markers": "python_version >= '3.6'",
"version": "==2.10.56"
},
"coverage": {
"hashes": [
"sha256:08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6",
"sha256:0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650",
"sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5",
"sha256:19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d",
"sha256:23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351",
"sha256:245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755",
"sha256:331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef",
"sha256:386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca",
"sha256:3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca",
"sha256:60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9",
"sha256:63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc",
"sha256:6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5",
"sha256:6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f",
"sha256:7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe",
"sha256:826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888",
"sha256:93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5",
"sha256:9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce",
"sha256:af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5",
"sha256:bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e",
"sha256:bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e",
"sha256:c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9",
"sha256:dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437",
"sha256:df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1",
"sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c",
"sha256:e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24",
"sha256:e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47",
"sha256:eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2",
"sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28",
"sha256:ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c",
"sha256:efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7",
"sha256:fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0",
"sha256:ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025"
],
"index": "pypi",
"version": "==4.5.4"
},
"cryptography": {
"hashes": [
"sha256:21b47c59fcb1c36f1113f3709d37935368e34815ea1d7073862e92f810dc7499",
"sha256:451cdf60be4dafb6a3b78802006a020e6cd709c22d240f94f7a0696240a17154",
"sha256:4549b137d8cbe3c2eadfa56c0c858b78acbeff956bd461e40000b2164d9167c6",
"sha256:48ee615a779ffa749d7d50c291761dc921d93d7cf203dca2db663b4f193f0e49",
"sha256:559d622aef2a2dff98a892eef321433ba5bc55b2485220a8ca289c1ecc2bd54f",
"sha256:5d52c72449bb02dd45a773a203196e6d4fae34e158769c896012401f33064396",
"sha256:65beb15e7f9c16e15934569d29fb4def74ea1469d8781f6b3507ab896d6d8719",
"sha256:680da076cad81cdf5ffcac50c477b6790be81768d30f9da9e01960c4b18a66db",
"sha256:762bc5a0df03c51ee3f09c621e1cee64e3a079a2b5020de82f1613873d79ee70",
"sha256:89aceb31cd5f9fc2449fe8cf3810797ca52b65f1489002d58fe190bfb265c536",
"sha256:983c0c3de4cb9fcba68fd3f45ed846eb86a2a8b8d8bc5bb18364c4d00b3c61fe",
"sha256:99d4984aabd4c7182050bca76176ce2dbc9fa9748afe583a7865c12954d714ba",
"sha256:9d9fc6a16357965d282dd4ab6531013935425d0dc4950df2e0cf2a1b1ac1017d",
"sha256:a7597ffc67987b37b12e09c029bd1dc43965f75d328076ae85721b84046e9ca7",
"sha256:ab010e461bb6b444eaf7f8c813bb716be2d78ab786103f9608ffd37a4bd7d490",
"sha256:b12e715c10a13ca1bd27fbceed9adc8c5ff640f8e1f7ea76416352de703523c8",
"sha256:b2bded09c578d19e08bd2c5bb8fed7f103e089752c9cf7ca7ca7de522326e921",
"sha256:b372026ebf32fe2523159f27d9f0e9f485092e43b00a5adacf732192a70ba118",
"sha256:cb179acdd4ae1e4a5a160d80b87841b3d0e0be84af46c7bb2cd7ece57a39c4ba",
"sha256:e97a3b627e3cb63c415a16245d6cef2139cca18bb1183d1b9375a1c14e83f3b3",
"sha256:f0e099fc4cc697450c3dd4031791559692dd941a95254cb9aeded66a7aa8b9bc",
"sha256:f99317a0fa2e49917689b8cf977510addcfaaab769b3f899b9c481bbd76730c2"
],
"index": "pypi",
"version": "==3.1.1"
},
"curve25519-donna": {
"hashes": [
"sha256:1818a9d5356a05c022cd504f44fe1d2f641a5c020f8a4c51b2294e02bd9c1bf0"
],
"index": "pypi",
"version": "==1.3"
},
"demjson": {
"hashes": [
"sha256:31de2038a0fdd9c4c11f8bf3b13fe77bc2a128307f965c8d5fb4dc6d6f6beb79"
],
"index": "pypi",
"version": "==2.2.4"
},
"distlib": {
"hashes": [
"sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb",
"sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"
],
"version": "==0.3.1"
},
"dominate": {
"hashes": [
"sha256:456facce7a7ccfd9363948109cf1e978d48c58e46a46b01c71b4c0adc73b1928",
"sha256:60d9035567067574914febbf2cb50bd6eee09b8636a2b98c79e67c15c06cb7cf"
],
"index": "pypi",
"version": "==2.5.2"
},
"ecdsa": {
"hashes": [
"sha256:494c6a853e9ed2e9be33d160b41d47afc50a6629b993d2b9c5ad7bb226add892",
"sha256:ca359c971594dceebf334f3d623dae43163ab161c7d09f28cae70a86df26eb7a"
],
"index": "pypi",
"version": "==0.16.0"
},
"ed25519": {
"hashes": [
"sha256:02053ee019ceef0df97294be2d4d5a8fc120fc86e81e08bec1245fc0f9403358"
],
"index": "pypi",
"version": "==1.5"
},
"fido2": {
"hashes": [
"sha256:449068f6876f397c8bb96ebc6a75c81c2692f045126d3f13ece21d409acdf7c3"
],
"index": "pypi",
"version": "==0.8.1"
},
"filelock": {
"hashes": [
"sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59",
"sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"
],
"version": "==3.0.12"
},
"flake8": {
"hashes": [
"sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c",
"sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"
],
"index": "pypi",
"version": "==3.8.3"
},
"flake8-requirements": {
"hashes": [
"sha256:375066874d658098365cc49cb35d13cedc0543bba33c0167601fd9170946ce10"
],
"index": "pypi",
"version": "==1.3.2"
},
"flaky": {
"hashes": [
"sha256:3ad100780721a1911f57a165809b7ea265a7863305acb66708220820caf8aa0d",
"sha256:d6eda73cab5ae7364504b7c44670f70abed9e75f77dd116352f662817592ec9c"
],
"index": "pypi",
"version": "==3.7.0"
},
"graphviz": {
"hashes": [
"sha256:088562ef6e3dad5e8dde9389caf4a84f768e65dcaa08238cfcdf36d2b30ccf61",
"sha256:f5aad52a652c06825dcc5ee018d920fca26aef339386866094597fb3f2f222ce"
],
"index": "pypi",
"version": "==0.14.1"
},
"hypothesis": {
"hashes": [
"sha256:a473b8428d13a695129e94bf17c43fa6c8a75449ef9121edb32b5ccaf862f16b",
"sha256:ce97675bb09d3ee843421e030d31dc9613145faee91c3fa7879bdb15af0acbd3"
],
"index": "pypi",
"version": "==5.36.0"
},
"idna": {
"hashes": [
"sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
"sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.10"
},
"iniconfig": {
"hashes": [
"sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437",
"sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69"
],
"version": "==1.0.1"
},
"inotify": {
"hashes": [
"sha256:397f8785450e41f606fe4eb6f5e8e0a1c70b354b56495225fc6c6fe7e07db0c9",
"sha256:974a623a338482b62e16d4eb705fb863ed33ec178680fc3e96ccdf0df6c02a07"
],
"index": "pypi",
"version": "==0.2.10"
},
"isort": {
"hashes": [
"sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1",
"sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"
],
"index": "pypi",
"version": "==4.3.21"
},
"libusb1": {
"hashes": [
"sha256:240f65ac70ba3fab77749ec84a412e4e89624804cb80d6c9d394eef5af8878d6"
],
"version": "==1.8"
},
"mako": {
"hashes": [
"sha256:8195c8c1400ceb53496064314c6736719c6f25e7479cd24c77be3d9361cddc27",
"sha256:93729a258e4ff0747c876bd9e20df1b9758028946e976324ccd2d68245c7b6a9"
],
"index": "pypi",
"version": "==1.1.3"
},
"markupsafe": {
"hashes": [
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.1.1"
},
"mccabe": {
"hashes": [
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
"sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
],
"version": "==0.6.1"
},
"mnemonic": {
"hashes": [
"sha256:4e37eb02b2cbd56a0079cabe58a6da93e60e3e4d6e757a586d9f23d96abea931",
"sha256:a8d78c5100acfa7df9bab6b9db7390831b0e54490934b718ff9efd68f0d731a6"
],
"version": "==0.19"
},
"mock": {
"hashes": [
"sha256:3f9b2c0196c60d21838f307f5825a7b86b678cedc58ab9e50a8988187b4d81e0",
"sha256:dd33eb70232b6118298d516bbcecd26704689c386594f0f3c4f13867b2c56f72"
],
"index": "pypi",
"version": "==4.0.2"
},
"more-itertools": {
"hashes": [
"sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20",
"sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c"
],
"markers": "python_version >= '3.5'",
"version": "==8.5.0"
},
"munch": {
"hashes": [
"sha256:2d735f6f24d4dba3417fa448cae40c6e896ec1fdab6cdb5e6510999758a4dbd2",
"sha256:6f44af89a2ce4ed04ff8de41f70b226b984db10a91dcc7b9ac2efc1c77022fdd"
],
"index": "pypi",
"version": "==2.5.0"
},
"mypy": {
"hashes": [
"sha256:2c6cde8aa3426c1682d35190b59b71f661237d74b053822ea3d748e2c9578a7c",
"sha256:3fdda71c067d3ddfb21da4b80e2686b71e9e5c72cca65fa216d207a358827f86",
"sha256:5dd13ff1f2a97f94540fd37a49e5d255950ebcdf446fb597463a40d0df3fac8b",
"sha256:6731603dfe0ce4352c555c6284c6db0dc935b685e9ce2e4cf220abe1e14386fd",
"sha256:6bb93479caa6619d21d6e7160c552c1193f6952f0668cdda2f851156e85186fc",
"sha256:81c7908b94239c4010e16642c9102bfc958ab14e36048fa77d0be3289dda76ea",
"sha256:9c7a9a7ceb2871ba4bac1cf7217a7dd9ccd44c27c2950edbc6dc08530f32ad4e",
"sha256:a4a2cbcfc4cbf45cd126f531dedda8485671545b43107ded25ce952aac6fb308",
"sha256:b7fbfabdbcc78c4f6fc4712544b9b0d6bf171069c6e0e3cb82440dd10ced3406",
"sha256:c05b9e4fb1d8a41d41dec8786c94f3b95d3c5f528298d769eb8e73d293abc48d",
"sha256:d7df6eddb6054d21ca4d3c6249cae5578cb4602951fd2b6ee2f5510ffb098707",
"sha256:e0b61738ab504e656d1fe4ff0c0601387a5489ca122d55390ade31f9ca0e252d",
"sha256:eff7d4a85e9eea55afa34888dfeaccde99e7520b51f867ac28a48492c0b1130c",
"sha256:f05644db6779387ccdb468cc47a44b4356fc2ffa9287135d05b70a98dc83b89a"
],
"index": "pypi",
"version": "==0.782"
},
"mypy-extensions": {
"hashes": [
"sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d",
"sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"
],
"version": "==0.4.3"
},
"nanopb": {
"hashes": [
"sha256:4370ef3c65e4c04c74f38ecebf746ab24baa8f4f0ced24f8f4b54c166e8f6bec",
"sha256:4abd7124efcdbc896b59102a84aa28584bded93f7e586e090ee81a675831360c"
],
"index": "pypi",
"version": "==0.4.3"
},
"nose": {
"hashes": [
"sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac",
"sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a",
"sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
],
"version": "==1.3.7"
},
"packaging": {
"hashes": [
"sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8",
"sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==20.4"
},
"pathspec": {
"hashes": [
"sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0",
"sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061"
],
"version": "==0.8.0"
},
"pillow": {
"hashes": [
"sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f",
"sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4",
"sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae",
"sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9",
"sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b",
"sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1",
"sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce",
"sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f",
"sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63",
"sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d",
"sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8",
"sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d",
"sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626",
"sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38",
"sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233",
"sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a",
"sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6",
"sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad",
"sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f",
"sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f",
"sha256:9c87ef410a58dd54b92424ffd7e28fd2ec65d2f7fc02b76f5e9b2067e355ebf6",
"sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6",
"sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8",
"sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727",
"sha256:e901964262a56d9ea3c2693df68bc9860b8bdda2b04768821e4c44ae797de117",
"sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5",
"sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41",
"sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"
],
"index": "pypi",
"version": "==7.2.0"
},
"pluggy": {
"hashes": [
"sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
"sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==0.13.1"
},
"protobuf": {
"hashes": [
"sha256:0bba42f439bf45c0f600c3c5993666fcb88e8441d011fad80a11df6f324eef33",
"sha256:1e834076dfef9e585815757a2c7e4560c7ccc5962b9d09f831214c693a91b463",
"sha256:339c3a003e3c797bc84499fa32e0aac83c768e67b3de4a5d7a5a9aa3b0da634c",
"sha256:361acd76f0ad38c6e38f14d08775514fbd241316cce08deb2ce914c7dfa1184a",
"sha256:3dee442884a18c16d023e52e32dd34a8930a889e511af493f6dc7d4d9bf12e4f",
"sha256:4d1174c9ed303070ad59553f435846a2f877598f59f9afc1b89757bdf846f2a7",
"sha256:5db9d3e12b6ede5e601b8d8684a7f9d90581882925c96acf8495957b4f1b204b",
"sha256:6a82e0c8bb2bf58f606040cc5814e07715b2094caeba281e2e7d0b0e2e397db5",
"sha256:8c35bcbed1c0d29b127c886790e9d37e845ffc2725cc1db4bd06d70f4e8359f4",
"sha256:91c2d897da84c62816e2f473ece60ebfeab024a16c1751aaf31100127ccd93ec",
"sha256:9c2e63c1743cba12737169c447374fab3dfeb18111a460a8c1a000e35836b18c",
"sha256:9edfdc679a3669988ec55a989ff62449f670dfa7018df6ad7f04e8dbacb10630",
"sha256:c0c5ab9c4b1eac0a9b838f1e46038c3175a95b0f2d944385884af72876bd6bc7",
"sha256:c8abd7605185836f6f11f97b21200f8a864f9cb078a193fe3c9e235711d3ff1e",
"sha256:d69697acac76d9f250ab745b46c725edf3e98ac24763990b24d58c16c642947a",
"sha256:df3932e1834a64b46ebc262e951cd82c3cf0fa936a154f0a42231140d8237060",
"sha256:e7662437ca1e0c51b93cadb988f9b353fa6b8013c0385d63a70c8a77d84da5f9",
"sha256:f68eb9d03c7d84bd01c790948320b768de8559761897763731294e3bc316decb"
],
"index": "pypi",
"version": "==3.13.0"
},
"py": {
"hashes": [
"sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2",
"sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.9.0"
},
"pyasn1": {
"hashes": [
"sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359",
"sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576",
"sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf",
"sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7",
"sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d",
"sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00",
"sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8",
"sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86",
"sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12",
"sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776",
"sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba",
"sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2",
"sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"
],
"index": "pypi",
"version": "==0.4.8"
},
"pyblake2": {
"hashes": [
"sha256:3757f7ad709b0e1b2a6b3919fa79fe3261f166fc375cd521f2be480f8319dde9",
"sha256:407e02c7f8f36fcec1b7aa114ddca0c1060c598142ea6f6759d03710b946a7e3",
"sha256:4d47b4a2c1d292b1e460bde1dda4d13aa792ed2ed70fcc263b6bc24632c8e902",
"sha256:5ccc7eb02edb82fafb8adbb90746af71460fbc29aa0f822526fc976dff83e93f",
"sha256:8043267fbc0b2f3748c6920591cd0b8b5609dcce60c504c32858aa36206386f2",
"sha256:982295a87907d50f4723db6bc724660da76b6547826d52160171d54f95b919ac",
"sha256:baa2190bfe549e36163aa44664d4ee3a9080b236fc5d42f50dc6fd36bbdc749e",
"sha256:c53417ee0bbe77db852d5fd1036749f03696ebc2265de359fe17418d800196c4",
"sha256:fbc9fcde75713930bc2a91b149e97be2401f7c9c56d735b46a109210f58d7358"
],
"index": "pypi",
"version": "==1.1.2"
},
"pycodestyle": {
"hashes": [
"sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367",
"sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.6.0"
},
"pycparser": {
"hashes": [
"sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0",
"sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.20"
},
"pyflakes": {
"hashes": [
"sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92",
"sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.2.0"
},
"pyparsing": {
"hashes": [
"sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
"sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
],
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.4.7"
},
"pyro4": {
"hashes": [
"sha256:46847ca703de3f483fbd0b2d22622f36eff03e6ef7ec7704d4ecaa3964cb2220",
"sha256:f195a4a9403f58807e66ca269c771e1d268064945f65cfbbf59a1feb12a1695f"
],
"index": "pypi",
"version": "==4.80"
},
"pyserial": {
"hashes": [
"sha256:6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627",
"sha256:e0770fadba80c31013896c7e6ef703f72e7834965954a78e71a3049488d4d7d8"
],
"index": "pypi",
"version": "==3.4"
},
"pytest": {
"hashes": [
"sha256:0e37f61339c4578776e090c3b8f6b16ce4db333889d65d0efb305243ec544b40",
"sha256:c8f57c2a30983f469bf03e68cdfa74dc474ce56b8f280ddcb080dfd91df01043"
],
"index": "pypi",
"version": "==6.0.2"
},
"pytest-ordering": {
"hashes": [
"sha256:27fba3fc265f5d0f8597e7557885662c1bdc1969497cd58aff6ed21c3b617de2",
"sha256:3f314a178dbeb6777509548727dc69edf22d6d9a2867bf2d310ab85c403380b6",
"sha256:561ad653626bb171da78e682f6d39ac33bb13b3e272d406cd555adb6b006bda6"
],
"index": "pypi",
"version": "==0.6"
},
"pytest-random-order": {
"hashes": [
"sha256:6b2159342a4c8c10855bc4fc6d65ee890fc614cb2b4ff688979b008a82a0ff52",
"sha256:72279a7f823969e18b10e438950f58330d17e0fcffb57cbd7929770cd687ecb2"
],
"index": "pypi",
"version": "==1.0.4"
},
"pytest-timeout": {
"hashes": [
"sha256:20b3113cf6e4e80ce2d403b6fb56e9e1b871b510259206d40ff8d609f48bda76",
"sha256:541d7aa19b9a6b4e475c759fd6073ef43d7cdc9a92d95644c260076eb257a063"
],
"index": "pypi",
"version": "==1.4.2"
},
"regex": {
"hashes": [
"sha256:0dc64ee3f33cd7899f79a8d788abfbec168410be356ed9bd30bbd3f0a23a7204",
"sha256:1269fef3167bb52631ad4fa7dd27bf635d5a0790b8e6222065d42e91bede4162",
"sha256:14a53646369157baa0499513f96091eb70382eb50b2c82393d17d7ec81b7b85f",
"sha256:3a3af27a8d23143c49a3420efe5b3f8cf1a48c6fc8bc6856b03f638abc1833bb",
"sha256:46bac5ca10fb748d6c55843a931855e2727a7a22584f302dd9bb1506e69f83f6",
"sha256:4c037fd14c5f4e308b8370b447b469ca10e69427966527edcab07f52d88388f7",
"sha256:51178c738d559a2d1071ce0b0f56e57eb315bcf8f7d4cf127674b533e3101f88",
"sha256:5ea81ea3dbd6767873c611687141ec7b06ed8bab43f68fad5b7be184a920dc99",
"sha256:6961548bba529cac7c07af2fd4d527c5b91bb8fe18995fed6044ac22b3d14644",
"sha256:75aaa27aa521a182824d89e5ab0a1d16ca207318a6b65042b046053cfc8ed07a",
"sha256:7a2dd66d2d4df34fa82c9dc85657c5e019b87932019947faece7983f2089a840",
"sha256:8a51f2c6d1f884e98846a0a9021ff6861bdb98457879f412fdc2b42d14494067",
"sha256:9c568495e35599625f7b999774e29e8d6b01a6fb684d77dee1f56d41b11b40cd",
"sha256:9eddaafb3c48e0900690c1727fba226c4804b8e6127ea409689c3bb492d06de4",
"sha256:bbb332d45b32df41200380fff14712cb6093b61bd142272a10b16778c418e98e",
"sha256:bc3d98f621898b4a9bc7fecc00513eec8f40b5b83913d74ccb445f037d58cd89",
"sha256:c11d6033115dc4887c456565303f540c44197f4fc1a2bfb192224a301534888e",
"sha256:c50a724d136ec10d920661f1442e4a8b010a4fe5aebd65e0c2241ea41dbe93dc",
"sha256:d0a5095d52b90ff38592bbdc2644f17c6d495762edf47d876049cfd2968fbccf",
"sha256:d6cff2276e502b86a25fd10c2a96973fdb45c7a977dca2138d661417f3728341",
"sha256:e46d13f38cfcbb79bfdb2964b0fe12561fe633caf964a77a5f8d4e45fe5d2ef7"
],
"version": "==2020.7.14"
},
"requests": {
"hashes": [
"sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
"sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
],
"index": "pypi",
"version": "==2.24.0"
},
"scons": {
"hashes": [
"sha256:722ed104b5c624ecdc89bd4e02b094d2b14d99d47b5d0501961e47f579a2007c",
"sha256:9b4696a806fb73f402fbf5e37ab0e8b6cd0dcef990a91210d7ed4aacbcc5231d"
],
"index": "pypi",
"version": "==4.0.1"
},
"serpent": {
"hashes": [
"sha256:72753820246a7d8486e8b385353e3bbf769abfceec2e850fa527a288b084ff7a",
"sha256:b2e8fa890481ca068faf9913c7019db5a8c30aa5e7e5870846996749872cecb3"
],
"markers": "python_version >= '3.2'",
"version": "==1.30.2"
},
"shamir-mnemonic": {
"hashes": [
"sha256:1cc08d276e05b13cd32bd3b0c5d1cb6c30254e0086e0f6857ec106d4cceff121",
"sha256:5e7cc1354697e304b7868fc01085bcd4b30bb2020b77b6cc5ceeb0c032d513a7"
],
"index": "pypi",
"version": "==0.1.0"
},
"six": {
"hashes": [
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.15.0"
},
"sortedcontainers": {
"hashes": [
"sha256:4e73a757831fc3ca4de2859c422564239a31d8213d09a2a666e375807034d2ba",
"sha256:c633ebde8580f241f274c1f8994a665c0e54a17724fecd0cae2f079e09c36d3f"
],
"version": "==2.2.2"
},
"termcolor": {
"hashes": [
"sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"
],
"index": "pypi",
"version": "==1.1.0"
},
"toml": {
"hashes": [
"sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f",
"sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"
],
"version": "==0.10.1"
},
"tox": {
"hashes": [
"sha256:e6318f404aff16522ff5211c88cab82b39af121735a443674e4e2e65f4e4637b",
"sha256:eb629ddc60e8542fd4a1956b2462e3b8771d49f1ff630cecceacaa0fbfb7605a"
],
"index": "pypi",
"version": "==3.20.0"
},
"trezor": {
"editable": true,
"path": "./python"
},
"typed-ast": {
"hashes": [
"sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355",
"sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919",
"sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa",
"sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652",
"sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75",
"sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01",
"sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d",
"sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1",
"sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907",
"sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c",
"sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3",
"sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b",
"sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614",
"sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb",
"sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b",
"sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41",
"sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6",
"sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34",
"sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe",
"sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4",
"sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"
],
"version": "==1.4.1"
},
"typing": {
"hashes": [
"sha256:1187fb9c82fd670d10aa07bbb6cfcfe4bdda42d6fab8d5134f04e8c4d0b71cc9",
"sha256:283d868f5071ab9ad873e5e52268d611e851c870a2ba354193026f2dfb29d8b5"
],
"index": "pypi",
"version": "==3.7.4.3"
},
"typing-extensions": {
"hashes": [
"sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918",
"sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c",
"sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"
],
"index": "pypi",
"version": "==3.7.4.3"
},
"urllib3": {
"hashes": [
"sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a",
"sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
"version": "==1.25.10"
},
"virtualenv": {
"hashes": [
"sha256:5102fbf1ec57e80671ef40ed98a84e980a71194cedf30c87c2b25c3a9e0b0107",
"sha256:ccfb8e1e05a1174f7bd4c163700277ba730496094fe1a58bea9d4ac140a207c8"
],
"index": "pypi",
"version": "==20.0.23"
}
},
"develop": {
"scan-build": {
"hashes": [
"sha256:79edcbcdec433682528258870ed1efbf66d3ebcf857ecca335c830d8adbf17eb"
],
"index": "pypi",
"version": "==2.0.19"
}
}
}

@ -43,9 +43,9 @@ for BITCOIN_ONLY in 0 1; do
ln -s /build build && ln -s /build build &&
git checkout $TAG && \ git checkout $TAG && \
git submodule update --init --recursive && \ git submodule update --init --recursive && \
pipenv install && \ poetry install && \
pipenv run make clean vendor build_firmware && \ poetry run make clean vendor build_firmware && \
pipenv run ../python/tools/firmware-fingerprint.py \ poetry run ../python/tools/firmware-fingerprint.py \
-o build/firmware/firmware.bin.fingerprint \ -o build/firmware/firmware.bin.fingerprint \
build/firmware/firmware.bin && \ build/firmware/firmware.bin && \
chown -R $USER:$GROUP /build" chown -R $USER:$GROUP /build"
@ -72,12 +72,12 @@ for BITCOIN_ONLY in 0 1; do
ln -s /build build && ln -s /build build &&
git checkout $TAG && \ git checkout $TAG && \
git submodule update --init --recursive && \ git submodule update --init --recursive && \
pipenv install && \ poetry install && \
pipenv run script/cibuild && \ poetry run script/cibuild && \
mkdir -p build/firmware && \ mkdir -p build/firmware && \
cp firmware/trezor.bin build/firmware/firmware.bin && \ cp firmware/trezor.bin build/firmware/firmware.bin && \
cp firmware/trezor.elf build/firmware/firmware.elf && \ cp firmware/trezor.elf build/firmware/firmware.elf && \
pipenv run ../python/tools/firmware-fingerprint.py \ poetry run ../python/tools/firmware-fingerprint.py \
-o build/firmware/firmware.bin.fingerprint \ -o build/firmware/firmware.bin.fingerprint \
build/firmware/firmware.bin && \ build/firmware/firmware.bin && \
chown -R $USER:$GROUP /build" chown -R $USER:$GROUP /build"

@ -10,11 +10,11 @@ core fw regular build:
stage: build stage: build
needs: [] needs: []
script: script:
- nix-shell --run "pipenv run make -C core build_boardloader" - nix-shell --run "poetry run make -C core build_boardloader"
- nix-shell --run "pipenv run make -C core build_bootloader" - nix-shell --run "poetry run make -C core build_bootloader"
- nix-shell --run "pipenv run make -C core build_prodtest" - nix-shell --run "poetry run make -C core build_prodtest"
- nix-shell --run "pipenv run make -C core build_firmware" - nix-shell --run "poetry run make -C core build_firmware"
- nix-shell --run "pipenv run make -C core sizecheck" - nix-shell --run "poetry run make -C core sizecheck"
- cp core/build/firmware/firmware.bin trezor-fw-regular-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin - cp core/build/firmware/firmware.bin trezor-fw-regular-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -26,7 +26,7 @@ core fw regular debug build:
stage: build stage: build
needs: [] needs: []
script: script:
- nix-shell --run "PYOPT=0 pipenv run make -C core build_firmware" - nix-shell --run "PYOPT=0 poetry run make -C core build_firmware"
- cp core/build/firmware/firmware.bin trezor-fw-regular-debug-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin - cp core/build/firmware/firmware.bin trezor-fw-regular-debug-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -40,9 +40,9 @@ core fw btconly build:
variables: variables:
BITCOIN_ONLY: "1" BITCOIN_ONLY: "1"
script: script:
- nix-shell --run "pipenv run make -C core build_firmware" - nix-shell --run "poetry run make -C core build_firmware"
- mv core/build/firmware/firmware.bin core/build/firmware/firmware-bitcoinonly.bin - mv core/build/firmware/firmware.bin core/build/firmware/firmware-bitcoinonly.bin
- nix-shell --run "pipenv run ./tools/check-bitcoin-only core/build/firmware/firmware-bitcoinonly.bin" - nix-shell --run "poetry run ./tools/check-bitcoin-only core/build/firmware/firmware-bitcoinonly.bin"
- cp core/build/firmware/firmware-bitcoinonly.bin trezor-fw-btconly-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin - cp core/build/firmware/firmware-bitcoinonly.bin trezor-fw-btconly-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -57,7 +57,7 @@ core fw btconly debug build:
BITCOIN_ONLY: "1" BITCOIN_ONLY: "1"
PYOPT: "0" PYOPT: "0"
script: script:
- nix-shell --run "pipenv run make -C core build_firmware" - nix-shell --run "poetry run make -C core build_firmware"
- cp core/build/firmware/firmware.bin trezor-fw-btconly-debug-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin - cp core/build/firmware/firmware.bin trezor-fw-btconly-debug-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin
only: # currently used only for deploys only: # currently used only for deploys
- /^core\// - /^core\//
@ -74,7 +74,7 @@ core fw btconly t1 build:
BITCOIN_ONLY: "1" BITCOIN_ONLY: "1"
TREZOR_MODEL: "1" TREZOR_MODEL: "1"
script: script:
- nix-shell --run "pipenv run make -C core build_firmware" - nix-shell --run "poetry run make -C core build_firmware"
- cp core/build/firmware/firmware.bin trezor-fw-btconly-t1-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin - cp core/build/firmware/firmware.bin trezor-fw-btconly-t1-$CORE_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -86,7 +86,7 @@ core unix regular build:
stage: build stage: build
needs: [] needs: []
script: script:
- nix-shell --run "pipenv run make -C core build_unix" - nix-shell --run "poetry run make -C core build_unix"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -98,7 +98,7 @@ core unix frozen regular build:
stage: build stage: build
needs: [] needs: []
script: script:
- nix-shell --run "pipenv run make -C core build_unix_frozen" - nix-shell --run "poetry run make -C core build_unix_frozen"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -112,7 +112,7 @@ core unix frozen btconly debug build:
PYOPT: "0" PYOPT: "0"
BITCOIN_ONLY: "1" BITCOIN_ONLY: "1"
script: script:
- nix-shell --run "pipenv run make -C core build_unix_frozen" - nix-shell --run "poetry run make -C core build_unix_frozen"
- mv core/build/unix/trezor-emu-core core/build/unix/trezor-emu-core-bitcoinonly - mv core/build/unix/trezor-emu-core core/build/unix/trezor-emu-core-bitcoinonly
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -126,7 +126,7 @@ core unix frozen debug build:
variables: variables:
PYOPT: "0" PYOPT: "0"
script: script:
- nix-shell --run "pipenv run make -C core build_unix_frozen" - nix-shell --run "poetry run make -C core build_unix_frozen"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
untracked: true untracked: true
@ -138,12 +138,13 @@ core macos frozen regular build:
tags: tags:
- darwin - darwin
script: script:
- nix-shell --run "pipenv run make -C core build_unix_frozen" - nix-shell --run "poetry run make -C core build_unix_frozen"
- export NAME="trezor-emu-core.darwin" - export NAME="trezor-emu-core.darwin"
- cp -v core/build/unix/trezor-emu-core ./$NAME - cp -v core/build/unix/trezor-emu-core ./$NAME
- chmod +x $NAME - chmod +x $NAME
- echo '"$(dirname "$BASH_SOURCE")"/trezor-emu-core.darwin' > trezor-emulator.command - echo '"$(dirname "$BASH_SOURCE")"/trezor-emu-core.darwin' > trezor-emulator.command
- chmod u+x trezor-emulator.command - chmod u+x trezor-emulator.command
allow_failure: true
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -162,7 +163,7 @@ crypto build:
- ci/**/* - ci/**/*
- crypto/**/* - crypto/**/*
script: script:
- nix-shell --run "pipenv run make -C crypto" - nix-shell --run "poetry run make -C crypto"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -181,8 +182,8 @@ legacy fw regular build:
variables: variables:
MEMORY_PROTECT: "0" MEMORY_PROTECT: "0"
script: script:
- nix-shell --run "pipenv run legacy/script/cibuild" - nix-shell --run "poetry run legacy/script/cibuild"
- nix-shell --run "pipenv run make -C legacy/demo" - nix-shell --run "poetry run make -C legacy/demo"
- mv legacy/firmware/trezor.bin trezor-fw-regular-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin - mv legacy/firmware/trezor.bin trezor-fw-regular-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -197,7 +198,7 @@ legacy fw regular debug build:
DEBUG_LINK: "1" DEBUG_LINK: "1"
MEMORY_PROTECT: "0" MEMORY_PROTECT: "0"
script: script:
- nix-shell --run "pipenv run legacy/script/cibuild" - nix-shell --run "poetry run legacy/script/cibuild"
- mv legacy/firmware/trezor.bin trezor-fw-regular-debug-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin - mv legacy/firmware/trezor.bin trezor-fw-regular-debug-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -212,9 +213,9 @@ legacy fw btconly build:
BITCOIN_ONLY: "1" BITCOIN_ONLY: "1"
MEMORY_PROTECT: "0" MEMORY_PROTECT: "0"
script: script:
- nix-shell --run "pipenv run legacy/script/cibuild" - nix-shell --run "poetry run legacy/script/cibuild"
- mv legacy/firmware/trezor.bin legacy/firmware/trezor-bitcoinonly.bin - mv legacy/firmware/trezor.bin legacy/firmware/trezor-bitcoinonly.bin
- nix-shell --run "pipenv run ./tools/check-bitcoin-only legacy/firmware/trezor-bitcoinonly.bin" - nix-shell --run "poetry run ./tools/check-bitcoin-only legacy/firmware/trezor-bitcoinonly.bin"
- mv legacy/firmware/trezor-bitcoinonly.bin trezor-fw-btconly-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin - mv legacy/firmware/trezor-bitcoinonly.bin trezor-fw-btconly-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -230,8 +231,8 @@ legacy fw btconly debug build:
MEMORY_PROTECT: "0" MEMORY_PROTECT: "0"
DEBUG_LINK: "1" DEBUG_LINK: "1"
script: script:
- nix-shell --run "pipenv run legacy/script/cibuild" - nix-shell --run "poetry run legacy/script/cibuild"
- nix-shell --run "pipenv run ./tools/check-bitcoin-only legacy/firmware/trezor.bin" - nix-shell --run "poetry run ./tools/check-bitcoin-only legacy/firmware/trezor.bin"
- mv legacy/firmware/trezor.bin trezor-fw-btconly-debug-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin - mv legacy/firmware/trezor.bin trezor-fw-btconly-debug-$LEGACY_VERSION-$CI_COMMIT_SHORT_SHA.bin
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -246,7 +247,7 @@ legacy emu regular debug build:
DEBUG_LINK: "1" DEBUG_LINK: "1"
EMULATOR: "1" EMULATOR: "1"
script: script:
- nix-shell --run "pipenv run legacy/script/cibuild" - nix-shell --run "poetry run legacy/script/cibuild"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -261,7 +262,7 @@ legacy emu btconly debug build:
DEBUG_LINK: "1" DEBUG_LINK: "1"
EMULATOR: "1" EMULATOR: "1"
script: script:
- nix-shell --run "pipenv run legacy/script/cibuild" - nix-shell --run "poetry run legacy/script/cibuild"
- mv legacy/firmware/trezor.elf legacy/firmware/trezor-bitcoinonly.elf - mv legacy/firmware/trezor.elf legacy/firmware/trezor-bitcoinonly.elf
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"

@ -6,7 +6,7 @@ release core fw regular deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core fw regular build - core fw regular build
script: script:
@ -25,7 +25,7 @@ release core fw btconly deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core fw btconly build - core fw btconly build
script: script:
@ -44,7 +44,7 @@ release core fw regular debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core fw regular debug build - core fw regular debug build
script: script:
@ -63,7 +63,7 @@ release core fw btconly debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core fw btconly debug build - core fw btconly debug build
script: script:
@ -84,7 +84,7 @@ release legacy fw regular deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- legacy fw regular build - legacy fw regular build
script: script:
@ -103,7 +103,7 @@ release legacy fw btconly deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- legacy fw btconly build - legacy fw btconly build
script: script:
@ -122,7 +122,7 @@ release legacy fw regular debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- legacy fw regular debug build - legacy fw regular debug build
script: script:
@ -141,7 +141,7 @@ release legacy fw btconly debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_DIRECTORY: "releases/firmwares" DEPLOY_DIRECTORY: "releases/firmwares"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- legacy fw btconly debug build - legacy fw btconly debug build
script: script:
@ -162,7 +162,7 @@ release core unix debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_PATH: "${DEPLOY_BASE_DIR}/releases/emulators" DEPLOY_PATH: "${DEPLOY_BASE_DIR}/releases/emulators"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core unix frozen debug build - core unix frozen debug build
script: script:
@ -181,7 +181,7 @@ release legacy unix debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_PATH: "${DEPLOY_BASE_DIR}/releases/emulators" DEPLOY_PATH: "${DEPLOY_BASE_DIR}/releases/emulators"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- legacy emu regular debug build - legacy emu regular debug build
script: script:
@ -200,7 +200,7 @@ release core macos debug deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_PATH: "${DEPLOY_BASE_DIR}/releases/emulators/macos" DEPLOY_PATH: "${DEPLOY_BASE_DIR}/releases/emulators/macos"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core unix frozen debug build - core unix frozen debug build
script: script:
@ -220,7 +220,7 @@ ui tests core fixtures deploy:
stage: deploy stage: deploy
variables: variables:
DEPLOY_PATH: "${DEPLOY_BASE_DIR}/ui_tests/" DEPLOY_PATH: "${DEPLOY_BASE_DIR}/ui_tests/"
before_script: [] # no pipenv before_script: [] # no poetry
needs: needs:
- core device ui test - core device ui test
script: script:

@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
buildInputs = [ buildInputs = [
uhubctl uhubctl
ffmpeg ffmpeg
pipenv poetry
libusb1 libusb1
dejavu_fonts dejavu_fonts
]; ];

@ -10,8 +10,8 @@ core unix coverage posttest:
- core u2f test - core u2f test
- core fido2 test - core fido2 test
script: script:
- nix-shell --run "pipenv run make -C core res" # we need to regenerate resources.py - nix-shell --run "poetry run make -C core res" # we need to regenerate resources.py
- nix-shell --run "pipenv run make -C core coverage" - nix-shell --run "poetry run make -C core coverage"
coverage: '/COVERAGE: \d+%/' coverage: '/COVERAGE: \d+%/'
artifacts: artifacts:
name: core-unix-coverage-posttest name: core-unix-coverage-posttest
@ -28,7 +28,7 @@ core unix ui changes:
needs: needs:
- core device ui test - core device ui test
script: script:
- nix-shell --run "cd tests/ui_tests ; pipenv run python reporting/report_master_diff.py" - nix-shell --run "cd tests/ui_tests ; poetry run python reporting/report_master_diff.py"
- mv tests/ui_tests/reporting/reports/master_diff/ . - mv tests/ui_tests/reporting/reports/master_diff/ .
artifacts: artifacts:
name: core-unix-ui-changes name: core-unix-ui-changes

@ -10,7 +10,7 @@ style prebuild:
- "**/*.h" - "**/*.h"
- "**/*.py" - "**/*.py"
script: script:
- nix-shell --run "pipenv run make style_check" - nix-shell --run "poetry run make style_check"
common prebuild: common prebuild:
stage: prebuild stage: prebuild
@ -21,7 +21,7 @@ common prebuild:
- "**/*.json" - "**/*.json"
- "**/*.proto" - "**/*.proto"
script: script:
- nix-shell --run "pipenv run make defs_check" - nix-shell --run "poetry run make defs_check"
gen prebuild: gen prebuild:
stage: prebuild stage: prebuild
@ -36,7 +36,7 @@ gen prebuild:
- "**/*.py" - "**/*.py"
- "**/*.pyi" - "**/*.pyi"
script: script:
- nix-shell --run "pipenv run make gen_check" - nix-shell --run "poetry run make gen_check"
release commit messages prebuild: release commit messages prebuild:
stage: prebuild stage: prebuild

@ -20,7 +20,6 @@ stdenv.mkDerivation {
libjpeg libjpeg
libusb1 libusb1
openssl openssl
pipenv
pkgconfig pkgconfig
poetry poetry
protobuf3_6 protobuf3_6

@ -7,17 +7,17 @@ core unit test:
needs: needs:
- core unix regular build - core unix regular build
script: script:
- nix-shell --run "pipenv run make -C core test" - nix-shell --run "poetry run make -C core test"
core device ui test: core device ui test:
stage: test stage: test
needs: needs:
- core unix frozen debug build - core unix frozen debug build
script: script:
- nix-shell --run "pipenv run make -C core test_emu_ui" - nix-shell --run "poetry run make -C core test_emu_ui"
after_script: after_script:
- mv tests/ui_tests/reporting/reports/test/ test_ui_report - mv tests/ui_tests/reporting/reports/test/ test_ui_report
- nix-shell --run "pipenv run python ci/prepare_ui_artifacts.py" - nix-shell --run "poetry run python ci/prepare_ui_artifacts.py"
- diff tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json - diff tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -40,7 +40,7 @@ core device test:
variables: variables:
TREZOR_PROFILING: 1 TREZOR_PROFILING: 1
script: script:
- nix-shell --run "pipenv run make -C core test_emu" - nix-shell --run "poetry run make -C core test_emu"
- mv core/src/.coverage core/.coverage.test_emu - mv core/src/.coverage core/.coverage.test_emu
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -61,7 +61,7 @@ core btconly device test:
MICROPYTHON: "build/unix/trezor-emu-core-bitcoinonly" MICROPYTHON: "build/unix/trezor-emu-core-bitcoinonly"
TREZOR_PYTEST_SKIP_ALTCOINS: 1 TREZOR_PYTEST_SKIP_ALTCOINS: 1
script: script:
- nix-shell --run "pipenv run make -C core test_emu" - nix-shell --run "poetry run make -C core test_emu"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -79,7 +79,7 @@ core monero test:
variables: variables:
TREZOR_PROFILING: 1 TREZOR_PROFILING: 1
script: script:
- nix-shell --run "pipenv run make -C core test_emu_monero" - nix-shell --run "poetry run make -C core test_emu_monero"
- mv core/src/.coverage core/.coverage.test_emu_monero - mv core/src/.coverage core/.coverage.test_emu_monero
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -96,8 +96,8 @@ core u2f test:
variables: variables:
TREZOR_PROFILING: 1 TREZOR_PROFILING: 1
script: script:
- nix-shell --run "pipenv run make -C tests/fido_tests/u2f-tests-hid" - nix-shell --run "poetry run make -C tests/fido_tests/u2f-tests-hid"
- nix-shell --run "pipenv run make -C core test_emu_u2f" - nix-shell --run "poetry run make -C core test_emu_u2f"
- mv core/src/.coverage core/.coverage.test_emu_u2f - mv core/src/.coverage core/.coverage.test_emu_u2f
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -115,7 +115,7 @@ core fido2 test:
TREZOR_PROFILING: 1 TREZOR_PROFILING: 1
script: script:
- pgrep trezor-emu-core || true - pgrep trezor-emu-core || true
- nix-shell --run "pipenv run make -C core test_emu_fido2" - nix-shell --run "poetry run make -C core test_emu_fido2"
- pgrep trezor-emu-core || true - pgrep trezor-emu-core || true
- mv core/src/.coverage core/.coverage.test_emu_fido2 - mv core/src/.coverage core/.coverage.test_emu_fido2
artifacts: artifacts:
@ -134,7 +134,7 @@ core click test:
needs: needs:
- core unix frozen debug build - core unix frozen debug build
script: script:
- nix-shell --run "pipenv run make -C core test_emu_click" - nix-shell --run "poetry run make -C core test_emu_click"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -153,7 +153,7 @@ core upgrade test:
TREZOR_UPGRADE_TEST: "core" TREZOR_UPGRADE_TEST: "core"
script: script:
- nix-shell --run "tests/download_emulators.sh" - nix-shell --run "tests/download_emulators.sh"
- nix-shell --run "pipenv run pytest --junitxml=tests/junit.xml tests/upgrade_tests" - nix-shell --run "poetry run pytest --junitxml=tests/junit.xml tests/upgrade_tests"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -168,7 +168,7 @@ core persistence test:
needs: needs:
- core unix frozen debug build - core unix frozen debug build
script: script:
- nix-shell --run "pipenv run pytest --junitxml=tests/junit.xml tests/persistence_tests" - nix-shell --run "poetry run pytest --junitxml=tests/junit.xml tests/persistence_tests"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -194,7 +194,7 @@ crypto test:
- ./crypto/tests/aestst - ./crypto/tests/aestst
- ./crypto/tests/test_check - ./crypto/tests/test_check
- ./crypto/tests/test_openssl 1000 - ./crypto/tests/test_openssl 1000
- nix-shell --run "cd crypto && ITERS=10 pipenv run pytest --junitxml=tests/junit.xml tests" - nix-shell --run "cd crypto && ITERS=10 poetry run pytest --junitxml=tests/junit.xml tests"
- nix-shell --run "CK_TIMEOUT_MULTIPLIER=20 valgrind -q --error-exitcode=1 ./crypto/tests/test_check" - nix-shell --run "CK_TIMEOUT_MULTIPLIER=20 valgrind -q --error-exitcode=1 ./crypto/tests/test_check"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -215,7 +215,7 @@ legacy test:
variables: variables:
EMULATOR: "1" EMULATOR: "1"
script: script:
- nix-shell --run "pipenv run legacy/script/test" - nix-shell --run "poetry run legacy/script/test"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -234,7 +234,7 @@ legacy btconly test:
EMULATOR_BINARY: "firmware/trezor-bitcoinonly.elf" EMULATOR_BINARY: "firmware/trezor-bitcoinonly.elf"
TREZOR_PYTEST_SKIP_ALTCOINS: 1 TREZOR_PYTEST_SKIP_ALTCOINS: 1
script: script:
- nix-shell --run "pipenv run legacy/script/test" - nix-shell --run "poetry run legacy/script/test"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -253,7 +253,7 @@ legacy upgrade test:
TREZOR_UPGRADE_TEST: "legacy" TREZOR_UPGRADE_TEST: "legacy"
script: script:
- nix-shell --run "tests/download_emulators.sh" - nix-shell --run "tests/download_emulators.sh"
- nix-shell --run "pipenv run pytest --junitxml=tests/junit.xml tests/upgrade_tests" - nix-shell --run "poetry run pytest --junitxml=tests/junit.xml tests/upgrade_tests"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -274,14 +274,13 @@ python test:
LANG: "C.UTF-8" LANG: "C.UTF-8"
only: only:
changes: changes:
- Pipfile.lock
- poetry.lock - poetry.lock
- .gitlab-ci.yml - .gitlab-ci.yml
- ci/**/* - ci/**/*
- common/**/* - common/**/*
- python/**/* - python/**/*
script: script:
- nix-shell --run "cd python && pipenv run tox" - nix-shell --run "cd python && poetry run tox"
# Storage # Storage
@ -295,8 +294,8 @@ storage test:
- storage/**/* - storage/**/*
needs: [] needs: []
script: script:
- nix-shell --run "pipenv run make -C storage/tests build" - nix-shell --run "poetry run make -C storage/tests build"
- nix-shell --run "pipenv run make -C storage/tests tests_all" - nix-shell --run "poetry run make -C storage/tests tests_all"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths: paths:
@ -321,10 +320,10 @@ hardware legacy regular device test:
script: script:
- cd ci/hardware_tests - cd ci/hardware_tests
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start" - nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start"
- nix-shell --run "cd ../.. && pipenv sync" - nix-shell --run "cd ../.. && poetry install"
- nix-shell --run "pipenv run python bootstrap.py" - nix-shell --run "poetry run python bootstrap.py"
- nix-shell --run "pipenv run python bootstrap.py ../../trezor-*.bin" - nix-shell --run "poetry run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "pipenv run pytest ../../tests/device_tests" - nix-shell --run "poetry run pytest ../../tests/device_tests"
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop" - nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -349,10 +348,10 @@ hardware legacy btconly device test:
script: script:
- cd ci/hardware_tests - cd ci/hardware_tests
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start" - nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start"
- nix-shell --run "cd ../.. && pipenv sync" - nix-shell --run "cd ../.. && poetry install"
- nix-shell --run "pipenv run python bootstrap.py" - nix-shell --run "poetry run python bootstrap.py"
- nix-shell --run "pipenv run python bootstrap.py ../../trezor-*.bin" - nix-shell --run "poetry run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "pipenv run pytest ../../tests/device_tests" - nix-shell --run "poetry run pytest ../../tests/device_tests"
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop" - nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"

@ -1,7 +1,7 @@
# Build instructions for Embedded (ARM port) # Build instructions for Embedded (ARM port)
First clone, initialize submodules and install Pipenv as defined [here](index.md). First clone, initialize submodules and install Poetry as defined [here](index.md).
**Do not forget you need to be in a `pipenv shell` environment!** **Do not forget you need to be in a `poetry shell` environment!**
## Requirements ## Requirements

@ -1,7 +1,7 @@
# Build instructions for Emulator (Unix port) # Build instructions for Emulator (Unix port)
First clone, initialize submodules, install Pipenv and enter the Pipenv shell as First clone, initialize submodules, install Poetry and enter the Poetry shell as
defined [here](index.md). **Do not forget you need to be in a `pipenv shell` defined [here](index.md). **Do not forget you need to be in a `poetry shell`
environment!** environment!**
## Dependencies ## Dependencies

@ -17,19 +17,19 @@ run on your computer. See [Emulator](../emulator/index.md) for more information.
## Existing Project ## Existing Project
If you are building from an existing checkout, do not forget to refresh the submodules If you are building from an existing checkout, do not forget to refresh the submodules
and the pipenv environment: and the poetry environment:
```sh ```sh
git submodule update --init --recursive --force git submodule update --init --recursive --force
pipenv sync poetry install
``` ```
## Pipenv ## Poetry
We use [Pipenv](https://docs.pipenv.org/en/latest/) to install and track Python dependencies. You need to install it, sync the packages and then use `pipenv run` for every command or enter `pipenv shell` before typing any commands. **The commands in this section suppose you are in a `pipenv shell` environment!** We use [Poetry](https://python-poetry.org/) to install and track Python dependencies. You need to install it, sync the packages and then use `poetry run` for every command or enter `poetry shell` before typing any commands. **The commands in this section suppose you are in a `poetry shell` environment!**
```sh ```sh
sudo pip3 install pipenv sudo pip3 install poetry
pipenv sync poetry install
pipenv shell poetry shell
``` ```

@ -11,9 +11,9 @@ Emulator significantly speeds up development and has several features to help yo
## How to run ## How to run
1. [build](../build/emulator.md) the emulator 1. [build](../build/emulator.md) the emulator
2. run `emu.py` inside the pipenv environment: 2. run `emu.py` inside the poetry environment:
- either enter `pipenv shell` first, and then use `./emu.py` - either enter `poetry shell` first, and then use `./emu.py`
- or always use `pipenv run ./emu.py` - or always use `poetry run ./emu.py`
3. to use [bridge](https://github.com/trezor/trezord-go) with the emulator support, start it with `trezord -e 21324` 3. to use [bridge](https://github.com/trezor/trezord-go) with the emulator support, start it with `trezord -e 21324`
Now you can use the emulator the same way as you use the device, for example you can visit our Wallet (https://wallet.trezor.io), use our Python CLI tool (`trezorctl`) etc. Simply click to emulate screen touches. Now you can use the emulator the same way as you use the device, for example you can visit our Wallet (https://wallet.trezor.io), use our Python CLI tool (`trezorctl`) etc. Simply click to emulate screen touches.

@ -8,17 +8,17 @@ echo "Running pre-push git hook."
# Runs check for common simple errors before pushing # Runs check for common simple errors before pushing
echo "" echo ""
echo "Checking templates" echo "Checking templates"
if ! pipenv run make templates_check if ! poetry run make templates_check
then then
echo >&2 "Templates not updated, run 'pipenv run make templates'. Not pushing." echo >&2 "Templates not updated, run 'poetry run make templates'. Not pushing."
exit 1 exit 1
fi fi
echo "" echo ""
echo "Checking style" echo "Checking style"
if ! pipenv run make style_check if ! poetry run make style_check
then then
echo >&2 "Style invalid, run 'pipenv run make style'. Not pushing." echo >&2 "Style invalid, run 'poetry run make style'. Not pushing."
exit 2 exit 2
fi fi

@ -36,7 +36,7 @@ For firmwares older than 1.8.1, please clone the archived [trezor-mcu](https://g
## Local development build ## Local development build
Make sure you have Python 3.6 or later and [pipenv](https://pipenv.readthedocs.io/en/latest/install/) Make sure you have Python 3.6 or later and [Poetry](https://python-poetry.org/)
installed. installed.
If you want to build device firmware, also make sure that you have the [GNU ARM Embedded toolchain](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) installed. If you want to build device firmware, also make sure that you have the [GNU ARM Embedded toolchain](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) installed.
@ -55,14 +55,14 @@ To run the build process, execute the following commands:
```sh ```sh
# enter the legacy subdirectory # enter the legacy subdirectory
cd legacy cd legacy
# set up pipenv # set up poetry
pipenv sync poetry install
# set up environment variables. For example, to build emulator with debuglink: # set up environment variables. For example, to build emulator with debuglink:
export EMULATOR=1 DEBUG_LINK=1 export EMULATOR=1 DEBUG_LINK=1
# clear build artifacts # clear build artifacts
pipenv run ./script/setup poetry run ./script/setup
# run build process # run build process
pipenv run ./script/cibuild poetry run ./script/cibuild
``` ```
A built device firmware will be located in `legacy/firmware/trezor.bin`. A built emulator will be A built device firmware will be located in `legacy/firmware/trezor.bin`. A built emulator will be

@ -9,18 +9,18 @@ thread free to interact with the device from the user's perspective.
## Running the full test suite ## Running the full test suite
_Note: You need Pipenv, as mentioned in the core's [documentation](https://docs.trezor.io/trezor-firmware/core/) section._ _Note: You need Poetry, as mentioned in the core's [documentation](https://docs.trezor.io/trezor-firmware/core/) section._
In the `trezor-firmware` checkout, in the root of the monorepo, install the environment: In the `trezor-firmware` checkout, in the root of the monorepo, install the environment:
```sh ```sh
pipenv sync poetry install
``` ```
Switch to a shell inside theenvironment: Switch to a shell inside theenvironment:
```sh ```sh
pipenv shell poetry shell
``` ```
If you want to test against the emulator, run it in a separate terminal: If you want to test against the emulator, run it in a separate terminal:

@ -2,27 +2,27 @@
## 1. Running the full test suite ## 1. Running the full test suite
_Note: You need Pipenv, as mentioned in the core's [documentation](https://docs.trezor.io/trezor-firmware/core/) section._ _Note: You need Poetry, as mentioned in the core's [documentation](https://docs.trezor.io/trezor-firmware/core/) section._
In the `trezor-firmware` checkout, in the root of the monorepo, install the environment: In the `trezor-firmware` checkout, in the root of the monorepo, install the environment:
```sh ```sh
pipenv sync poetry install
``` ```
And run the automated tests: And run the automated tests:
```sh ```sh
pipenv run make -C core test_emu poetry run make -C core test_emu
``` ```
## 2. Running tests manually ## 2. Running tests manually
Install the pipenv environment as outlined above. Then switch to a shell inside the Install the poetry environment as outlined above. Then switch to a shell inside the
environment: environment:
```sh ```sh
pipenv shell poetry shell
``` ```
If you want to test against the emulator, run it in a separate terminal: If you want to test against the emulator, run it in a separate terminal:
@ -88,7 +88,7 @@ The final executable is significantly slower due to ASAN(Address Sanitizer) inte
If you wan't to catch some memory errors use this. If you wan't to catch some memory errors use this.
```sh ```sh
time ASAN_OPTIONS=verbosity=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true TREZOR_PROFILE="" pipenv run make test_emu time ASAN_OPTIONS=verbosity=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true TREZOR_PROFILE="" poetry run make test_emu
``` ```
### Coverage (Emulator only) ### Coverage (Emulator only)

@ -2,27 +2,27 @@
## 1. Running the full test suite ## 1. Running the full test suite
_Note: You need Pipenv, as mentioned in the core's [documentation](https://docs.trezor.io/trezor-firmware/core/) section._ _Note: You need Poetry, as mentioned in the core's [documentation](https://docs.trezor.io/trezor-firmware/core/) section._
In the `trezor-firmware` checkout, in the root of the monorepo, install the environment: In the `trezor-firmware` checkout, in the root of the monorepo, install the environment:
```sh ```sh
pipenv sync poetry install
``` ```
And run the tests: And run the tests:
```sh ```sh
pipenv run make -C core test_emu_ui poetry run make -C core test_emu_ui
``` ```
## 2. Running tests manually ## 2. Running tests manually
Install the pipenv environment as outlined above. Then switch to a shell inside the Install the poetry environment as outlined above. Then switch to a shell inside the
environment: environment:
```sh ```sh
pipenv shell poetry shell
``` ```
If you want to test against the emulator, run it in a separate terminal: If you want to test against the emulator, run it in a separate terminal:
@ -51,7 +51,7 @@ pytest tests/device_tests --ui=test -m "not skip_ui"
Short version: Short version:
```sh ```sh
pipenv run make -C core test_emu_ui_record poetry run make -C core test_emu_ui_record
``` ```
Long version: Long version:

@ -1,9 +1,9 @@
# Running Upgrade Tests # Running Upgrade Tests
1. As always, use pipenv environment: 1. As always, use poetry environment:
```sh ```sh
pipenv shell poetry shell
``` ```
2. Download the emulators, if you have not already: 2. Download the emulators, if you have not already:

@ -0,0 +1,3 @@
cache-dir = ".cache"
[virtualenvs]
in-project = true

@ -70,15 +70,15 @@ pip3 install "git+https://github.com/trezor/trezor-firmware#egg=trezor&subdirect
### Running from source ### Running from source
Install the [pipenv](https://pipenv.readthedocs.io/en/latest/) tool, checkout Install the [Poetry](https://python-poetry.org/) tool, checkout
`trezor-firmware` from git, and enter the pipenv shell: `trezor-firmware` from git, and enter the poetry shell:
```sh ```sh
pip3 install pipenv pip3 install poetry
git clone https://github.com/trezor/trezor-firmware git clone https://github.com/trezor/trezor-firmware
cd trezor-firmware cd trezor-firmware
pipenv sync poetry install
pipenv shell poetry shell
``` ```
In this environment, trezorlib and the `trezorctl` tool is running from the live In this environment, trezorlib and the `trezorctl` tool is running from the live

Loading…
Cancel
Save