diff --git a/.github/workflows/Blackformatter.yml b/.github/workflows/Blackformatter.yml deleted file mode 100644 index 4c46cdd..0000000 --- a/.github/workflows/Blackformatter.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: EveryrepoPush - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - name: Black Code Formatter - uses: lgeiger/black-action@v1.0.1 diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml new file mode 100644 index 0000000..98b2a66 --- /dev/null +++ b/.github/workflows/black.yml @@ -0,0 +1,10 @@ +name: Lint + +on: [push, pull_request] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: psf/black@stable \ No newline at end of file diff --git a/.github/workflows/citests.yml b/.github/workflows/citests.yml new file mode 100644 index 0000000..968dca6 --- /dev/null +++ b/.github/workflows/citests.yml @@ -0,0 +1,31 @@ +name: Test + +on: + push: + pull_request: + +jobs: + tests: + name: "Python ${{ matrix.python-version }}" + runs-on: ubuntu-latest + + strategy: + matrix: + python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"] + + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-python@v2" + with: + python-version: "${{ matrix.python-version }}" + + - name: "Install dependencies" + run: | + python -m pip install --upgrade pip + pip install pipenv + pipenv install --dev + pipenv install coveralls --skip-lock + + - name: Test with pytest + run: | + pipenv run pytest --cov=app \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 74dd444..a93d767 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ python: - "3.6" - "3.7" - "3.8" + - "3.9" + - "3.10" env: global: - PIPENV_VENV_IN_PROJECT=1 diff --git a/Pipfile b/Pipfile index fec2915..2dd1c00 100644 --- a/Pipfile +++ b/Pipfile @@ -10,7 +10,6 @@ black = "*" pylint = "*" [packages] -numpy = "*" [requires] -python_version = "3.7" +python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock index 70c048b..888d374 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "d09bb3829e797ac40cfa7376efa9c6983a329006e7954950d192b1b5fb0a9f0a" + "sha256": "13cdbf96330671332f1fb1c7a5038d34749d6f46617e30eeee3e14a2fa52c515" }, "pipfile-spec": 6, "requires": { - "python_version": "3.7" + "python_version": "3.9" }, "sources": [ { @@ -15,143 +15,118 @@ } ] }, - "default": { - "numpy": { - "hashes": [ - "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33", - "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5", - "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1", - "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1", - "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac", - "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4", - "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50", - "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6", - "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267", - "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172", - "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af", - "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8", - "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2", - "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63", - "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1", - "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8", - "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16", - "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214", - "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd", - "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68", - "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062", - "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e", - "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f", - "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b", - "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd", - "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671", - "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a", - "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a" - ], - "index": "pypi", - "version": "==1.21.1" - } - }, + "default": {}, "develop": { - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" - ], - "version": "==1.4.4" - }, "astroid": { "hashes": [ - "sha256:7b963d1c590d490f60d2973e57437115978d3a2529843f160b5003b721e1e925", - "sha256:83e494b02d75d07d4e347b27c066fd791c0c74fc96c613d1ea3de0c82c48168f" + "sha256:8d0a30fe6481ce919f56690076eafbb2fb649142a89dc874f1ec0e7a011492d0", + "sha256:cc8cc0d2d916c42d0a7c476c57550a4557a083081976bf42a73414322a6411d9" ], - "version": "==2.6.5" + "markers": "python_full_version >= '3.6.2'", + "version": "==2.11.2" }, "attrs": { "hashes": [ - "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1", - "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" + "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", + "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" ], - "version": "==21.2.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.4.0" }, "black": { "hashes": [ - "sha256:09a9dcb7c46ed496a9850b76e4e825d6049ecd38b611f1224857a79bd985a8cf", - "sha256:68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c" + "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b", + "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176", + "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09", + "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a", + "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015", + "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79", + "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb", + "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20", + "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464", + "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968", + "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82", + "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21", + "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0", + "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265", + "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b", + "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a", + "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72", + "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce", + "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0", + "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a", + "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163", + "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad", + "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d" ], "index": "pypi", - "version": "==19.3b0" + "version": "==22.3.0" }, "click": { "hashes": [ - "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a", - "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6" + "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e", + "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72" ], - "version": "==8.0.1" + "markers": "python_version >= '3.7'", + "version": "==8.1.2" }, "coverage": { + "extras": [ + "toml" + ], "hashes": [ - "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", - "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", - "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", - "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", - "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", - "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", - "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", - "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", - "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", - "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", - "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", - "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", - "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", - "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", - "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", - "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", - "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", - "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", - "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", - "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", - "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", - "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", - "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", - "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", - "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", - "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", - "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", - "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", - "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", - "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", - "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", - "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", - "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", - "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", - "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", - "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", - "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", - "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", - "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", - "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", - "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", - "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", - "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", - "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", - "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", - "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", - "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", - "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", - "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", - "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", - "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", - "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" + "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9", + "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d", + "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf", + "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7", + "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6", + "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4", + "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059", + "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39", + "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536", + "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac", + "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c", + "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903", + "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d", + "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05", + "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684", + "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1", + "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f", + "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7", + "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca", + "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad", + "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca", + "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d", + "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92", + "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4", + "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf", + "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6", + "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1", + "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4", + "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359", + "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3", + "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620", + "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512", + "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69", + "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2", + "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518", + "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0", + "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa", + "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4", + "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e", + "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1", + "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2" ], - "version": "==5.5" + "markers": "python_version >= '3.7'", + "version": "==6.3.2" }, - "importlib-metadata": { + "dill": { "hashes": [ - "sha256:079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac", - "sha256:9f55f560e116f8643ecf2922d9cd3e1c7e8d52e683178fecd9d08f6aa357e11e" + "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f", + "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675" ], - "markers": "python_version < '3.8'", - "version": "==4.6.1" + "markers": "python_version >= '2.7' and python_version != '3.0'", + "version": "==0.3.4" }, "iniconfig": { "hashes": [ @@ -162,161 +137,225 @@ }, "isort": { "hashes": [ - "sha256:eed17b53c3e7912425579853d078a0832820f023191561fcee9d7cae424e0813", - "sha256:f65ce5bd4cbc6abdfbe29afc2f0245538ab358c14590912df638033f157d555e" + "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7", + "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951" ], - "version": "==5.9.2" + "markers": "python_version < '4.0' and python_full_version >= '3.6.1'", + "version": "==5.10.1" }, "lazy-object-proxy": { "hashes": [ - "sha256:17e0967ba374fc24141738c69736da90e94419338fd4c7c7bef01ee26b339653", - "sha256:1fee665d2638491f4d6e55bd483e15ef21f6c8c2095f235fef72601021e64f61", - "sha256:22ddd618cefe54305df49e4c069fa65715be4ad0e78e8d252a33debf00f6ede2", - "sha256:24a5045889cc2729033b3e604d496c2b6f588c754f7a62027ad4437a7ecc4837", - "sha256:410283732af311b51b837894fa2f24f2c0039aa7f220135192b38fcc42bd43d3", - "sha256:4732c765372bd78a2d6b2150a6e99d00a78ec963375f236979c0626b97ed8e43", - "sha256:489000d368377571c6f982fba6497f2aa13c6d1facc40660963da62f5c379726", - "sha256:4f60460e9f1eb632584c9685bccea152f4ac2130e299784dbaf9fae9f49891b3", - "sha256:5743a5ab42ae40caa8421b320ebf3a998f89c85cdc8376d6b2e00bd12bd1b587", - "sha256:85fb7608121fd5621cc4377a8961d0b32ccf84a7285b4f1d21988b2eae2868e8", - "sha256:9698110e36e2df951c7c36b6729e96429c9c32b3331989ef19976592c5f3c77a", - "sha256:9d397bf41caad3f489e10774667310d73cb9c4258e9aed94b9ec734b34b495fd", - "sha256:b579f8acbf2bdd9ea200b1d5dea36abd93cabf56cf626ab9c744a432e15c815f", - "sha256:b865b01a2e7f96db0c5d12cfea590f98d8c5ba64ad222300d93ce6ff9138bcad", - "sha256:bf34e368e8dd976423396555078def5cfc3039ebc6fc06d1ae2c5a65eebbcde4", - "sha256:c6938967f8528b3668622a9ed3b31d145fab161a32f5891ea7b84f6b790be05b", - "sha256:d1c2676e3d840852a2de7c7d5d76407c772927addff8d742b9808fe0afccebdf", - "sha256:d7124f52f3bd259f510651450e18e0fd081ed82f3c08541dffc7b94b883aa981", - "sha256:d900d949b707778696fdf01036f58c9876a0d8bfe116e8d220cfd4b15f14e741", - "sha256:ebfd274dcd5133e0afae738e6d9da4323c3eb021b3e13052d8cbd0e457b1256e", - "sha256:ed361bb83436f117f9917d282a456f9e5009ea12fd6de8742d1a4752c3017e93", - "sha256:f5144c75445ae3ca2057faac03fda5a902eff196702b0a24daf1d6ce0650514b" + "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7", + "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a", + "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c", + "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc", + "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f", + "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09", + "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442", + "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e", + "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029", + "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61", + "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb", + "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0", + "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35", + "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42", + "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1", + "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad", + "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443", + "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd", + "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9", + "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148", + "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38", + "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55", + "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36", + "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a", + "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b", + "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44", + "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6", + "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69", + "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4", + "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84", + "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de", + "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28", + "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c", + "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1", + "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8", + "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b", + "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb" ], - "version": "==1.6.0" + "markers": "python_version >= '3.6'", + "version": "==1.7.1" }, "mccabe": { "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", + "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e" + ], + "markers": "python_version >= '3.6'", + "version": "==0.7.0" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" ], - "version": "==0.6.1" + "version": "==0.4.3" }, "packaging": { "hashes": [ - "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7", - "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14" + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" ], - "version": "==21.0" + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "pathspec": { + "hashes": [ + "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", + "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + ], + "version": "==0.9.0" + }, + "platformdirs": { + "hashes": [ + "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", + "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" + ], + "markers": "python_version >= '3.7'", + "version": "==2.5.1" }, "pluggy": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" ], - "version": "==0.13.1" + "markers": "python_version >= '3.6'", + "version": "==1.0.0" }, "py": { "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" ], - "version": "==1.10.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" }, "pylint": { "hashes": [ - "sha256:2e1a0eb2e8ab41d6b5dbada87f066492bb1557b12b76c47c2ee8aa8a11186594", - "sha256:8b838c8983ee1904b2de66cce9d0b96649a91901350e956d78f289c3bc87b48e" + "sha256:c149694cfdeaee1aa2465e6eaab84c87a881a7d55e6e93e09466be7164764d1e", + "sha256:dab221658368c7a05242e673c275c488670144123f4bd262b2777249c1c0de9b" ], "index": "pypi", - "version": "==2.9.6" + "version": "==2.13.5" }, "pyparsing": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", + "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" ], - "version": "==2.4.7" + "markers": "python_version >= '3.6'", + "version": "==3.0.7" }, "pytest": { "hashes": [ - "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b", - "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890" + "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63", + "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea" ], "index": "pypi", - "version": "==6.2.4" + "version": "==7.1.1" }, "pytest-cov": { "hashes": [ - "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a", - "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7" + "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6", + "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470" ], "index": "pypi", - "version": "==2.12.1" + "version": "==3.0.0" }, - "toml": { + "tomli": { "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "version": "==0.10.2" - }, - "typed-ast": { - "hashes": [ - "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", - "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff", - "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266", - "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528", - "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6", - "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808", - "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4", - "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363", - "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341", - "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04", - "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41", - "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e", - "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3", - "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899", - "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805", - "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c", - "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c", - "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39", - "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a", - "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3", - "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7", - "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f", - "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075", - "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0", - "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40", - "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428", - "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927", - "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3", - "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f", - "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65" - ], - "markers": "implementation_name == 'cpython' and python_version < '3.8'", - "version": "==1.4.3" + "version": "==2.0.1" }, "typing-extensions": { "hashes": [ - "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497", - "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342", - "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84" + "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", + "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" ], - "markers": "python_version < '3.8'", - "version": "==3.10.0.0" + "markers": "python_version < '3.10'", + "version": "==4.1.1" }, "wrapt": { "hashes": [ - "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" - ], - "version": "==1.12.1" - }, - "zipp": { - "hashes": [ - "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3", - "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4" + "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b", + "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0", + "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330", + "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3", + "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68", + "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa", + "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe", + "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd", + "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b", + "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80", + "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38", + "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f", + "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350", + "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd", + "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb", + "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3", + "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0", + "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff", + "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c", + "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758", + "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036", + "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb", + "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763", + "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9", + "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7", + "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1", + "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7", + "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0", + "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5", + "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce", + "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8", + "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279", + "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0", + "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06", + "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561", + "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a", + "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311", + "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131", + "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4", + "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291", + "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4", + "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8", + "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8", + "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d", + "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c", + "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd", + "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d", + "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6", + "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775", + "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e", + "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627", + "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e", + "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8", + "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1", + "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48", + "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc", + "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3", + "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6", + "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425", + "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d", + "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23", + "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c", + "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33", + "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653" ], - "version": "==3.5.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.14.0" } } } diff --git a/PyTCI/models/base.py b/PyTCI/models/base.py index 51139fb..d2c7fa6 100644 --- a/PyTCI/models/base.py +++ b/PyTCI/models/base.py @@ -1,5 +1,5 @@ class Three: - """ Base 3 compartment model""" + """Base 3 compartment model""" def setup(self): @@ -45,14 +45,14 @@ def from_clearances(self): self.k31 = (self.k13 * self.v1) / self.v3 def give_drug(self, drug_milligrams): - """ add bolus of drug to central compartment """ + """add bolus of drug to central compartment""" self.x1 = self.x1 + drug_milligrams / self.v1 def wait_time(self, time_seconds): - """ model distribution of drug between compartments over specified time period """ + """model distribution of drug between compartments over specified time period""" def one_second(self): - """ time steps must be one second for accurate modelling """ + """time steps must be one second for accurate modelling""" x1k10 = self.x1 * self.k10 x1k12 = self.x1 * self.k12 @@ -73,21 +73,21 @@ def one_second(self): one_second(self) def reset_concs(self, old_conc): - """ resets concentrations using python dictionary""" + """resets concentrations using python dictionary""" self.x1 = old_conc["ox1"] self.x2 = old_conc["ox2"] self.x3 = old_conc["ox3"] self.xeo = old_conc["oxeo"] def zero_comps(self): - """ sets all compartment concentrations to 0 """ + """sets all compartment concentrations to 0""" self.x1 = 0 self.x2 = 0 self.x3 = 0 self.xeo = 0 def effect_bolus(self, target: float): - """ determines size of bolus needed over 10 seconds to achieve target at ttpe """ + """determines size of bolus needed over 10 seconds to achieve target at ttpe""" # store concentrations so we can reset after search old_conc = {"ox1": self.x1, "ox2": self.x2, "ox3": self.x3, "oxeo": self.xeo} @@ -114,7 +114,7 @@ def effect_bolus(self, target: float): return round(mgpersec * 10, 2) def tenseconds(self, mgpersec: float): - """ gives set amount of drug every second for 10 seconds """ + """gives set amount of drug every second for 10 seconds""" for _ in range(10): self.give_drug(mgpersec) self.wait_time(1) @@ -122,7 +122,7 @@ def tenseconds(self, mgpersec: float): return self.x1 def giveoverseconds(self, mgpersec: float, secs: float): - """ gives set amount of drug every second for user defined period""" + """gives set amount of drug every second for user defined period""" for _ in range(secs): self.give_drug(mgpersec) self.wait_time(1) @@ -130,7 +130,7 @@ def giveoverseconds(self, mgpersec: float, secs: float): return self.x1 def plasma_infusion(self, target: float, time: int, period: int = 10): - """ returns list of infusion rates to maintain desired plasma concentration + """returns list of infusion rates to maintain desired plasma concentration inputs: target: desired plasma concentration in ug/min time: infusion duration in seconds @@ -174,7 +174,7 @@ def plasma_infusion(self, target: float, time: int, period: int = 10): return pump_instructions def effect_target(self, target: float, time: int, period: int = 10): - """ returns list of infusion rates to maintain desired plasma concentration + """returns list of infusion rates to maintain desired plasma concentration inputs: target: desired plasma concentration in units/ml time: infusion duration in seconds diff --git a/PyTCI/models/dexmedetomidine.py b/PyTCI/models/dexmedetomidine.py index 79d5532..484cf72 100644 --- a/PyTCI/models/dexmedetomidine.py +++ b/PyTCI/models/dexmedetomidine.py @@ -3,23 +3,23 @@ class Dexmed(Three): - """ base class for demedetomidine""" + """base class for demedetomidine""" pass class Hannivoort(Dexmed): def __init__(self, weight: int): - """ 3 compartment dexmedetomidine Pk model + """3 compartment dexmedetomidine Pk model Units: weight(kg) Reference: - Hannivoort, L, et al + Hannivoort, L, et al Development of an Optimized Pharmacokinetic Model of Dexmedetomidine Using Target-controlled Infusion in Healthy Volunteers - Anesthesiology 8 2015, Vol.123, 357-367. - doi:10.1097/ALN.0000000000000740 + Anesthesiology 8 2015, Vol.123, 357-367. + doi:10.1097/ALN.0000000000000740 """ self.v1 = 1.78 * (weight / 70) @@ -48,7 +48,7 @@ def __init__(self, height: int): Dyck, JB, et al Computer-controlled infusion of intravenous dexmedetomidine hydrochloride in adult human volunteers Anesthesiology. 1993 May;78(5):821-8. - PMID:8098191 DOI:10.1097/00000542-199305000-00003 + PMID:8098191 DOI:10.1097/00000542-199305000-00003 """ self.v1 = 7.99 diff --git a/PyTCI/models/propofol.py b/PyTCI/models/propofol.py index 5eed15b..34b486a 100644 --- a/PyTCI/models/propofol.py +++ b/PyTCI/models/propofol.py @@ -5,13 +5,13 @@ class Propofol(Three): - """ Base Class for Propofol 3 compartment model """ + """Base Class for Propofol 3 compartment model""" pass class Schnider(Propofol): - """ Implementation of the schnider model """ + """Implementation of the schnider model""" # UNITS: # age: years @@ -44,7 +44,7 @@ def __init__(self, age, weight, height, sex): class Marsh(Propofol): - """ Marsh 3 compartment Propofol Pk Model + """Marsh 3 compartment Propofol Pk Model Units required: weight (kg) @@ -113,7 +113,7 @@ class Paedfusor(Propofol): Reference: Absalom, A, Kenny, G - BJA: British Journal of Anaesthesia, Volume 95, Issue 1, 1 July 2005, Pages 110, + BJA: British Journal of Anaesthesia, Volume 95, Issue 1, 1 July 2005, Pages 110, https://doi.org/10.1093/bja/aei567 """ @@ -150,7 +150,7 @@ class Eleveld(Propofol): Special methods for this model .venous() Switches from arterial(default) to venous targerting - + .with_opiates() models co-administration with opiates @@ -193,16 +193,16 @@ def __init__(self, age: int, weight: float, height: int, sex: str): theta18 = 0.68 def ageing(i, age): - """ ageing function""" + """ageing function""" return exp(i * (age - 35)) def sigmoid(x, e50, y): - """ sigmoid function from eleveld paper """ + """sigmoid function from eleveld paper""" sig = (x ** y) / ((x ** y) + (e50 ** y)) return sig def central(i): - """ central function """ + """central function""" return sigmoid(i, theta12, 1) # clearance maturation @@ -225,13 +225,9 @@ def central(i): v3ref = theta03 if sex == "m": - self.Q1 = ( - theta04 * (weight / 70) ** 0.75 * (clmat / clmatref) - ) + self.Q1 = theta04 * (weight / 70) ** 0.75 * (clmat / clmatref) else: - self.Q1 = ( - theta15 * (weight / 70) ** 0.75 * (clmat / clmatref) - ) + self.Q1 = theta15 * (weight / 70) ** 0.75 * (clmat / clmatref) self.Q2 = ( theta05 * (self.v2 / v2ref) ** 0.75 * (1 + theta16 * (1 - q3mat / q3matref)) @@ -244,19 +240,17 @@ def central(i): self.setup() def with_opiates(self): - """ switches the opiate parameters - using this method indicates opiates are being administered concurrently - + """switches the opiate parameters + using this method indicates opiates are being administered concurrently + """ opiatesv3 = exp(self.theta13 * self.age) opiatescl = exp(self.theta11 * self.age) self.v3 *= opiatesv3 self.Q1 *= opiatescl - - self.from_clearances() - + self.from_clearances() # def venous(): # """ switches the following parameters to target venous concentrations diff --git a/PyTCI/models/remifentanil.py b/PyTCI/models/remifentanil.py index ee8b9a6..d86accd 100644 --- a/PyTCI/models/remifentanil.py +++ b/PyTCI/models/remifentanil.py @@ -4,7 +4,7 @@ class Remifentanil(Three): - """ Base Class for remifentanil models """ + """Base Class for remifentanil models""" pass @@ -48,11 +48,11 @@ class Eleveld(Remifentanil): def __init__(self, age, weight, height, sex): def ageing(i, age): - """ ageing function""" + """ageing function""" return exp(i * (age - 35)) def sigmoid(x, e50, y): - """ sigmoid function from eleveld paper """ + """sigmoid function from eleveld paper""" sig = (x ** y) / ((x ** y) + (e50 ** y)) return sig @@ -84,7 +84,7 @@ def sigmoid(x, e50, y): if sex == "m": Fsex = 1 elif sex == "f": - Fsex = 1 + Θ5 * sigmoid(age, 12, 6) * (1- sigmoid(age, 45, 6)) + Fsex = 1 + Θ5 * sigmoid(age, 12, 6) * (1 - sigmoid(age, 45, 6)) self.v1 = v1ref * Fsize * ageing(Θ2, age) self.v2 = v2ref * Fsize * ageing(Θ3, age) * Fsex diff --git a/PyTCI/weights/leanbodymass.py b/PyTCI/weights/leanbodymass.py index caf6101..1878ee9 100644 --- a/PyTCI/weights/leanbodymass.py +++ b/PyTCI/weights/leanbodymass.py @@ -1,5 +1,5 @@ def james(height: float, weight: float, sex: str) -> float: - """ returns lean body mass as per james equations """ + """returns lean body mass as per james equations""" """James, W. "Research on obesity: a report of the DHSS/MRC group" HM Stationery Office 1976""" if sex != "m" and sex != "f": @@ -14,7 +14,7 @@ def james(height: float, weight: float, sex: str) -> float: def boer(height: float, weight: float, sex: str) -> float: - """ returns lean body mass as per Boer equation """ + """returns lean body mass as per Boer equation""" """ Boer P. "Estimated lean body mass as an index for normalization of body fluid volumes in man." Am J Physiol 1984; 247: F632-5""" if sex != "m" and sex != "f": @@ -31,7 +31,7 @@ def boer(height: float, weight: float, sex: str) -> float: def hume66(height: float, weight: float, sex: str) -> float: - """ returns lean body mass as per the 1966 Hume paper """ + """returns lean body mass as per the 1966 Hume paper""" """ Hume, R "Prediction of lean body mass from height and weight.". J Clin Pathol. 1966 Jul; 19(4):389-91""" if sex != "m" and sex != "f": @@ -48,7 +48,7 @@ def hume66(height: float, weight: float, sex: str) -> float: def hume71(height: float, weight: float, sex: str) -> float: - """ returns lean body mass from Hume & Weyers(1971) """ + """returns lean body mass from Hume & Weyers(1971)""" """ Relationship between total body water and surface area in normal and obese subjects. Hume R, Weyers E J Clin Pathol 24 p234-8 (1971 Apr) """ if sex != "m" and sex != "f": @@ -65,7 +65,7 @@ def hume71(height: float, weight: float, sex: str) -> float: def janmahasation(height: float, weight: float, sex: str) -> float: - """ lean body mass as per Janmahasation / Han 2005 """ + """lean body mass as per Janmahasation / Han 2005""" if sex != "m" and sex != "f": raise ValueError( @@ -88,7 +88,7 @@ def bmi(height: float, weight: float) -> float: def idealbodyweight(height: float, sex: str) -> float: - """ ideal body weight as per ARDSnet/Devine """ + """ideal body weight as per ARDSnet/Devine""" if sex != "m" and sex != "f": raise ValueError( @@ -104,7 +104,7 @@ def idealbodyweight(height: float, sex: str) -> float: def adjustedbodyweight(height: float, weight: float, sex: str) -> float: - """ adjusted body weight for obese patients """ + """adjusted body weight for obese patients""" ibw = idealbodyweight(height, sex) abw = ibw + 0.4 * (weight - ibw) @@ -115,12 +115,12 @@ def adjustedbodyweight(height: float, weight: float, sex: str) -> float: def alsallami(age: float, height: float, weight: float, sex: str) -> float: if sex == "m": - alsal = (0.88 + ( - 0.12 / (1 + (age / 13.4) ** -12.7) - ) )* janmahasation(height, weight, sex) + alsal = (0.88 + (0.12 / (1 + (age / 13.4) ** -12.7))) * janmahasation( + height, weight, sex + ) else: - alsal = (1.11 + ( - (1 - 1.11) / (1 + (age / 7.1) ** -1.1) - )) * janmahasation(height, weight, sex) + alsal = (1.11 + ((1 - 1.11) / (1 + (age / 7.1) ** -1.1))) * janmahasation( + height, weight, sex + ) return alsal diff --git a/README.md b/README.md index f9c2e82..b7b9c7e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ A python package for Target Controlled Infusions. Spawned from the NHS Hack Day project https://github.com/JMathiszig-Lee/Propofol, this splits out useful code into a package and updates it to python3 [![Build Status](https://travis-ci.org/JMathiszig-Lee/PyTCI.svg?branch=master)](https://travis-ci.org/JMathiszig-Lee/PyTCI) -[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/PyTCI) +![PyPI - Python Version](https://img.shields.io/pypi/pyversions/PyTCI) [![Coverage Status](https://coveralls.io/repos/github/JMathiszig-Lee/PyTCI/badge.svg?branch=master&kill_cache=1)](https://coveralls.io/github/JMathiszig-Lee/PyTCI?branch=master) [![GitHub license](https://img.shields.io/github/license/JMathiszig-Lee/PyTCI)](https://github.com/JMathiszig-Lee/PyTCI/blob/master/license.txt) [![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/JMathiszig-Lee/PyTCI.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/JMathiszig-Lee/PyTCI/context:python) diff --git a/setup.py b/setup.py index 9c67c4d..d3cb5ac 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="PyTCI", - version="1.0.1", + version="1.1", author="Jakob Mathiszig-Lee", author_email="jakob@mathisziglee.co.uk", description="A package for target controlled infusions", @@ -20,4 +20,4 @@ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], -) \ No newline at end of file +) diff --git a/tests/test_alfentanil.py b/tests/test_alfentanil.py index c9e0cea..1a81c79 100644 --- a/tests/test_alfentanil.py +++ b/tests/test_alfentanil.py @@ -1,16 +1,17 @@ import pytest from PyTCI.models import alfentanil + def test_maitre(): - testpatient = alfentanil.Maitre(30, 70, 170, 'm') - testpatient2 = alfentanil.Maitre(60, 80, 165, 'f') + testpatient = alfentanil.Maitre(30, 70, 170, "m") + testpatient2 = alfentanil.Maitre(60, 80, 165, "f") assert round(testpatient.v1, 2) == 7.77 assert round(testpatient.v2, 2) == 12.01 assert round(testpatient.v3, 2) == 10.48 assert round(testpatient.q1, 3) == 0.356 - + assert round(testpatient2.v1, 2) == 10.24 with pytest.raises(ValueError): - alfentanil.Maitre(20, 80, 180, 'g') \ No newline at end of file + alfentanil.Maitre(20, 80, 180, "g") diff --git a/tests/test_dexmedetomidine.py b/tests/test_dexmedetomidine.py index c7dc064..ca011a9 100644 --- a/tests/test_dexmedetomidine.py +++ b/tests/test_dexmedetomidine.py @@ -2,9 +2,9 @@ def test_hannivoort(): - """ values come from original development paper + """values come from original development paper Development of an Optimized Pharmacokinetic Model of Dexmedetomidine Using Target-controlled Infusion in Healthy Volunteers - Anesthesiology 8 2015, Vol.123, 357-367. doi:10.1097/ALN.0000000000000740 + Anesthesiology 8 2015, Vol.123, 357-367. doi:10.1097/ALN.0000000000000740 """ testpatient = dexmedetomidine.Hannivoort(70) @@ -16,6 +16,7 @@ def test_hannivoort(): assert testpatient.Q2 == 2.98 assert testpatient.Q3 == 0.602 + def test_dyck(): testpatient = dexmedetomidine.Dyck(170) @@ -26,4 +27,4 @@ def test_dyck(): assert testpatient.Q1 == 0.4167 assert testpatient.Q2 == 2.26 - assert testpatient.Q3 == 1.99 \ No newline at end of file + assert testpatient.Q3 == 1.99 diff --git a/tests/test_infusions.py b/tests/test_infusions.py index 5e69f61..f55d431 100644 --- a/tests/test_infusions.py +++ b/tests/test_infusions.py @@ -1,45 +1,67 @@ from PyTCI.models import propofol + def test_reset(): """Check we reset concentrations""" - testpatient = propofol.Schnider(40, 80, 180, 'm') - old_conc = {"ox1": testpatient.x1, "ox2": testpatient.x2, "ox3": testpatient.x3, "oxeo": testpatient.xeo} + testpatient = propofol.Schnider(40, 80, 180, "m") + old_conc = { + "ox1": testpatient.x1, + "ox2": testpatient.x2, + "ox3": testpatient.x3, + "oxeo": testpatient.xeo, + } testpatient.give_drug(200) testpatient.reset_concs(old_conc) - assert(testpatient.x1) == 0 + assert (testpatient.x1) == 0 + def test_zero(): - """ check we zero compartments""" + """check we zero compartments""" testpatient = propofol.Marsh(80) testpatient.give_drug(200) testpatient.wait_time(30) testpatient.zero_comps() - assert(testpatient.x1) == 0 + assert (testpatient.x1) == 0 + def test_effect(): - """test effect site targetting bolus """ - testpatient = propofol.Schnider(40, 70, 190, 'm') + """test effect site targetting bolus""" + testpatient = propofol.Schnider(40, 70, 190, "m") assert testpatient.effect_bolus(6) == 95.6 + def test_plasma_infusion(): - """ basic test for plasma infusion """ + """basic test for plasma infusion""" testpatient = propofol.Marsh(70) - assert testpatient.plasma_infusion(2, 60) == [3.27269899102373, 0.1453355022895698, 0.14478000490919285, 0.14422948797801816, 0.1436839059972244, 0.143143213884116] + assert testpatient.plasma_infusion(2, 60) == [ + 3.27269899102373, + 0.1453355022895698, + 0.14478000490919285, + 0.14422948797801816, + 0.1436839059972244, + 0.143143213884116, + ] + def test_effect_infustion(): - """ basic test for effect infusion """ + """basic test for effect infusion""" testpatient = propofol.Marsh(70) - assert testpatient.effect_target(4, 60) == [248.04, 0, 0.28646085355070555, 0.28538760594059637, 0.2843239743904481, 0.2832698710563347] + assert testpatient.effect_target(4, 60) == [ + 248.04, + 0, + 0.28646085355070555, + 0.28538760594059637, + 0.2843239743904481, + 0.2832698710563347, + ] - testpatient.keo = 1.2/60 + testpatient.keo = 1.2 / 60 testpatient.give_drug(200) testpatient.wait_time(90) assert testpatient.effect_target(2.5, 60) == [0, 0, 0, 0, 0, 0] - - diff --git a/tests/test_lbm.py b/tests/test_lbm.py index ebe0b88..8102873 100644 --- a/tests/test_lbm.py +++ b/tests/test_lbm.py @@ -47,12 +47,13 @@ def test_janmahasation(): def test_idealbodyweight(): - assert leanbodymass.idealbodyweight(180, 'm') == 75.1 + assert leanbodymass.idealbodyweight(180, "m") == 75.1 assert leanbodymass.idealbodyweight(165, "f") == 57.0 with pytest.raises(ValueError): leanbodymass.idealbodyweight(180, "g") + def test_adjustedbodyweight(): assert leanbodymass.adjustedbodyweight(180, 80, "m") == 77.1 assert leanbodymass.adjustedbodyweight(165, 90, "f") == 70.2 @@ -60,10 +61,10 @@ def test_adjustedbodyweight(): with pytest.raises(ValueError): leanbodymass.adjustedbodyweight(180, 60, "g") -def test_ffm(): - assert round(leanbodymass.alsallami(35, 175, 70, "m"), 1) == 55.8 - assert round(leanbodymass.alsallami(35, 175, 70, "f"), 1) == 45.9 - with pytest.raises(ValueError): - leanbodymass.alsallami(175, 70, "g", 35) +def test_ffm(): + assert round(leanbodymass.alsallami(35, 175, 70, "m"), 1) == 55.8 + assert round(leanbodymass.alsallami(35, 175, 70, "f"), 1) == 45.9 + with pytest.raises(ValueError): + leanbodymass.alsallami(175, 70, "g", 35) diff --git a/tests/test_propofol.py b/tests/test_propofol.py index c5cfdab..36990c0 100644 --- a/tests/test_propofol.py +++ b/tests/test_propofol.py @@ -1,9 +1,11 @@ from PyTCI.models import propofol import pytest -#source for values in marsh and schnider independantly derived https://academic.oup.com/view-large/91165989 + +# source for values in marsh and schnider independantly derived https://academic.oup.com/view-large/91165989 + def test_schnider(): - testpatient = propofol.Schnider(40, 70, 170, 'm') + testpatient = propofol.Schnider(40, 70, 170, "m") assert round(testpatient.v2) == 24 # assert testpatient.k10 == (0.384 /60) # assert testpatient.k12 == 0.375 @@ -16,17 +18,20 @@ def test_schnider(): testpatient.wait_time(1) assert round(testpatient.x1, 2) == 22.03 + def test_marsh(): testpatient = propofol.Marsh(70) assert round(testpatient.v1, 1) == 16.0 assert round(testpatient.v2, 1) == 32.4 - assert round(testpatient.v3, 1) == 202.5 + assert round(testpatient.v3, 1) == 202.5 + # values for paediatric tests are from: -# Constant, Isabelle & Rigouzzo, Agnes. (2010). Which model for propofol TCI in children. +# Constant, Isabelle & Rigouzzo, Agnes. (2010). Which model for propofol TCI in children. # Paediatric anaesthesia. 20. 233-9. 10.1111/j.1460-9592.2010.03269.x. + def test_kataria(): testchild = propofol.Kataria(20, 6) @@ -38,25 +43,27 @@ def test_kataria(): assert testchild.Q2 == 1.26 assert testchild.Q3 == 0.5 - #test warnings + # test warnings assert propofol.Kataria(10, 13) + def test_paedfusor(): testchild = propofol.Paedfusor(20, 6) - assert round(testchild.v1,1) == 9.2 + assert round(testchild.v1, 1) == 9.2 assert testchild.v2 == 19 assert testchild.v3 == 117.0 - testk10 = 0.0624 /60 + testk10 = 0.0624 / 60 assert round(testchild.k10, 5) == testk10 - #test warnings + # test warnings assert propofol.Paedfusor(10, 16) assert propofol.Paedfusor(10, 0.5) + def test_eleveld(): - testpt = propofol.Eleveld(35, 70, 170, 'm') + testpt = propofol.Eleveld(35, 70, 170, "m") assert testpt.v1 == 6.28 assert testpt.v2 == 25.5 @@ -69,18 +76,17 @@ def test_eleveld(): testkeo = testpt.keo * 60 assert testkeo == 0.146 - - #test that the opiae function changes things + # test that the opiae function changes things preopiatecl = testpt.k10 testpt.with_opiates() assert testpt.Q1 == 1.6194970204845642 assert testpt.v3 != 273 assert testpt.k10 != preopiatecl - #test for female patient - testpt2 = propofol.Eleveld(35, 70, 170, 'f') + # test for female patient + testpt2 = propofol.Eleveld(35, 70, 170, "f") assert round(testpt2.v3) == 225 assert testpt2.Q1 == 2.1 with pytest.raises(ValueError): - propofol.Eleveld(35, 70, 170, 'h') \ No newline at end of file + propofol.Eleveld(35, 70, 170, "h") diff --git a/tests/test_remifentanil.py b/tests/test_remifentanil.py index 726c9da..080ba44 100644 --- a/tests/test_remifentanil.py +++ b/tests/test_remifentanil.py @@ -1,8 +1,9 @@ import pytest from PyTCI.models import remifentanil + def test_minto(): - testpatient = remifentanil.Minto(40, 80, 180, 'm') + testpatient = remifentanil.Minto(40, 80, 180, "m") assert testpatient.v3 == 5.42 assert round(testpatient.keo, 4) == 0.0099 @@ -13,9 +14,10 @@ def test_minto(): testpatient.wait_time(1) assert round(testpatient.x1, 2) == 3.88 + def test_eleveld(): - """ values from https://www.ncbi.nlm.nih.gov/pubmed/28509794 """ - testpatient = remifentanil.Eleveld(35, 70, 170, 'm') + """values from https://www.ncbi.nlm.nih.gov/pubmed/28509794""" + testpatient = remifentanil.Eleveld(35, 70, 170, "m") assert testpatient.v1 == 5.81 assert testpatient.v2 == 8.82 assert testpatient.v3 == 5.03 @@ -24,15 +26,14 @@ def test_eleveld(): assert testpatient.Q2 == 1.72 assert testpatient.Q3 == 0.124 - refkeo = 1.09/60 + refkeo = 1.09 / 60 assert testpatient.keo == refkeo - #check female doesn't error out - testpatientF = remifentanil.Eleveld(35, 70, 170, 'f') + # check female doesn't error out + testpatientF = remifentanil.Eleveld(35, 70, 170, "f") assert round(testpatientF.v1, 2) == 4.79 - assert round(testpatientF.v2, 2) == 10.06 - assert round(testpatientF.Q1, 2) == 3.09 - + assert round(testpatientF.v2, 2) == 10.06 + assert round(testpatientF.Q1, 2) == 3.09 with pytest.raises(ValueError): - remifentanil.Eleveld(35, 70, 170, 'h') \ No newline at end of file + remifentanil.Eleveld(35, 70, 170, "h")