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
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
DOCKER_TLS_CERTDIR: ""
stages:
@ -33,7 +29,7 @@ stages:
before_script:
- . $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 CORE_VERSION=$(nix-shell --run "./tools/version.sh core/embed/firmware/version.h")

@ -22,17 +22,17 @@ env:
install:
- pip install --upgrade pip wheel setuptools
- pip install pipenv
- pipenv sync
# make sure pipenv is installable without protobuf - install protoc later
- pip install poetry
- poetry install
# 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"
- unzip "protoc-${PROTOBUF_VERSION}-linux-x86_64.zip" -d protoc
- export PATH="$(pwd)/protoc/bin:$PATH"
script:
- pipenv run make style_check
- pipenv run make defs_check
- pipenv run make gen_check
- poetry run make style_check
- poetry run make defs_check
- poetry run make gen_check
- ci/check_fixup.sh
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 &&
git checkout $TAG && \
git submodule update --init --recursive && \
pipenv install && \
pipenv run make clean vendor build_firmware && \
pipenv run ../python/tools/firmware-fingerprint.py \
poetry install && \
poetry run make clean vendor build_firmware && \
poetry run ../python/tools/firmware-fingerprint.py \
-o build/firmware/firmware.bin.fingerprint \
build/firmware/firmware.bin && \
chown -R $USER:$GROUP /build"
@ -72,12 +72,12 @@ for BITCOIN_ONLY in 0 1; do
ln -s /build build &&
git checkout $TAG && \
git submodule update --init --recursive && \
pipenv install && \
pipenv run script/cibuild && \
poetry install && \
poetry run script/cibuild && \
mkdir -p build/firmware && \
cp firmware/trezor.bin build/firmware/firmware.bin && \
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 \
build/firmware/firmware.bin && \
chown -R $USER:$GROUP /build"

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

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

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

@ -10,8 +10,8 @@ core unix coverage posttest:
- core u2f test
- core fido2 test
script:
- nix-shell --run "pipenv 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 res" # we need to regenerate resources.py
- nix-shell --run "poetry run make -C core coverage"
coverage: '/COVERAGE: \d+%/'
artifacts:
name: core-unix-coverage-posttest
@ -28,7 +28,7 @@ core unix ui changes:
needs:
- core device ui test
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/ .
artifacts:
name: core-unix-ui-changes

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

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

@ -7,17 +7,17 @@ core unit test:
needs:
- core unix regular build
script:
- nix-shell --run "pipenv run make -C core test"
- nix-shell --run "poetry run make -C core test"
core device ui test:
stage: test
needs:
- core unix frozen debug build
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:
- 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
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -40,7 +40,7 @@ core device test:
variables:
TREZOR_PROFILING: 1
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
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -61,7 +61,7 @@ core btconly device test:
MICROPYTHON: "build/unix/trezor-emu-core-bitcoinonly"
TREZOR_PYTEST_SKIP_ALTCOINS: 1
script:
- nix-shell --run "pipenv run make -C core test_emu"
- nix-shell --run "poetry run make -C core test_emu"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -79,7 +79,7 @@ core monero test:
variables:
TREZOR_PROFILING: 1
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
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -96,8 +96,8 @@ core u2f test:
variables:
TREZOR_PROFILING: 1
script:
- nix-shell --run "pipenv 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 tests/fido_tests/u2f-tests-hid"
- nix-shell --run "poetry run make -C core test_emu_u2f"
- mv core/src/.coverage core/.coverage.test_emu_u2f
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -115,7 +115,7 @@ core fido2 test:
TREZOR_PROFILING: 1
script:
- 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
- mv core/src/.coverage core/.coverage.test_emu_fido2
artifacts:
@ -134,7 +134,7 @@ core click test:
needs:
- core unix frozen debug build
script:
- nix-shell --run "pipenv run make -C core test_emu_click"
- nix-shell --run "poetry run make -C core test_emu_click"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -153,7 +153,7 @@ core upgrade test:
TREZOR_UPGRADE_TEST: "core"
script:
- 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:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -168,7 +168,7 @@ core persistence test:
needs:
- core unix frozen debug build
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:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -194,7 +194,7 @@ crypto test:
- ./crypto/tests/aestst
- ./crypto/tests/test_check
- ./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"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -215,7 +215,7 @@ legacy test:
variables:
EMULATOR: "1"
script:
- nix-shell --run "pipenv run legacy/script/test"
- nix-shell --run "poetry run legacy/script/test"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -234,7 +234,7 @@ legacy btconly test:
EMULATOR_BINARY: "firmware/trezor-bitcoinonly.elf"
TREZOR_PYTEST_SKIP_ALTCOINS: 1
script:
- nix-shell --run "pipenv run legacy/script/test"
- nix-shell --run "poetry run legacy/script/test"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -253,7 +253,7 @@ legacy upgrade test:
TREZOR_UPGRADE_TEST: "legacy"
script:
- 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:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -274,14 +274,13 @@ python test:
LANG: "C.UTF-8"
only:
changes:
- Pipfile.lock
- poetry.lock
- .gitlab-ci.yml
- ci/**/*
- common/**/*
- python/**/*
script:
- nix-shell --run "cd python && pipenv run tox"
- nix-shell --run "cd python && poetry run tox"
# Storage
@ -295,8 +294,8 @@ storage test:
- storage/**/*
needs: []
script:
- nix-shell --run "pipenv 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 build"
- nix-shell --run "poetry run make -C storage/tests tests_all"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
@ -321,10 +320,10 @@ hardware legacy regular device test:
script:
- cd ci/hardware_tests
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start"
- nix-shell --run "cd ../.. && pipenv sync"
- nix-shell --run "pipenv run python bootstrap.py"
- nix-shell --run "pipenv run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "pipenv run pytest ../../tests/device_tests"
- nix-shell --run "cd ../.. && poetry install"
- nix-shell --run "poetry run python bootstrap.py"
- nix-shell --run "poetry run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "poetry run pytest ../../tests/device_tests"
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
@ -349,10 +348,10 @@ hardware legacy btconly device test:
script:
- cd ci/hardware_tests
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start"
- nix-shell --run "cd ../.. && pipenv sync"
- nix-shell --run "pipenv run python bootstrap.py"
- nix-shell --run "pipenv run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "pipenv run pytest ../../tests/device_tests"
- nix-shell --run "cd ../.. && poetry install"
- nix-shell --run "poetry run python bootstrap.py"
- nix-shell --run "poetry run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "poetry run pytest ../../tests/device_tests"
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"

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

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

@ -17,19 +17,19 @@ run on your computer. See [Emulator](../emulator/index.md) for more information.
## Existing Project
If you are building from an existing checkout, do not forget to refresh the submodules
and the pipenv environment:
and the poetry environment:
```sh
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
sudo pip3 install pipenv
pipenv sync
pipenv shell
sudo pip3 install poetry
poetry install
poetry shell
```

@ -11,9 +11,9 @@ Emulator significantly speeds up development and has several features to help yo
## How to run
1. [build](../build/emulator.md) the emulator
2. run `emu.py` inside the pipenv environment:
- either enter `pipenv shell` first, and then use `./emu.py`
- or always use `pipenv run ./emu.py`
2. run `emu.py` inside the poetry environment:
- either enter `poetry shell` first, and then use `./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`
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
echo ""
echo "Checking templates"
if ! pipenv run make templates_check
if ! poetry run make templates_check
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
fi
echo ""
echo "Checking style"
if ! pipenv run make style_check
if ! poetry run make style_check
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
fi

@ -36,7 +36,7 @@ For firmwares older than 1.8.1, please clone the archived [trezor-mcu](https://g
## 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.
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
# enter the legacy subdirectory
cd legacy
# set up pipenv
pipenv sync
# set up poetry
poetry install
# set up environment variables. For example, to build emulator with debuglink:
export EMULATOR=1 DEBUG_LINK=1
# clear build artifacts
pipenv run ./script/setup
poetry run ./script/setup
# 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

@ -9,18 +9,18 @@ thread free to interact with the device from the user's perspective.
## 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:
```sh
pipenv sync
poetry install
```
Switch to a shell inside theenvironment:
```sh
pipenv shell
poetry shell
```
If you want to test against the emulator, run it in a separate terminal:

@ -2,27 +2,27 @@
## 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:
```sh
pipenv sync
poetry install
```
And run the automated tests:
```sh
pipenv run make -C core test_emu
poetry run make -C core test_emu
```
## 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:
```sh
pipenv shell
poetry shell
```
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.
```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)

@ -2,27 +2,27 @@
## 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:
```sh
pipenv sync
poetry install
```
And run the tests:
```sh
pipenv run make -C core test_emu_ui
poetry run make -C core test_emu_ui
```
## 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:
```sh
pipenv shell
poetry shell
```
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:
```sh
pipenv run make -C core test_emu_ui_record
poetry run make -C core test_emu_ui_record
```
Long version:

@ -1,9 +1,9 @@
# Running Upgrade Tests
1. As always, use pipenv environment:
1. As always, use poetry environment:
```sh
pipenv shell
poetry shell
```
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
Install the [pipenv](https://pipenv.readthedocs.io/en/latest/) tool, checkout
`trezor-firmware` from git, and enter the pipenv shell:
Install the [Poetry](https://python-poetry.org/) tool, checkout
`trezor-firmware` from git, and enter the poetry shell:
```sh
pip3 install pipenv
pip3 install poetry
git clone https://github.com/trezor/trezor-firmware
cd trezor-firmware
pipenv sync
pipenv shell
poetry install
poetry shell
```
In this environment, trezorlib and the `trezorctl` tool is running from the live

Loading…
Cancel
Save