From 37520a09db2024a8bba49dd4795c54c42e89c337 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Tue, 5 Oct 2021 17:00:34 +0200 Subject: [PATCH 1/8] Include flask-wtf in Pipfile This dependency has been included in `blaskapp.py`, but it was not included in the Pipfile, causing problems when launching the server. --- Pipfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index 4a833b3..8bc8710 100644 --- a/Pipfile +++ b/Pipfile @@ -10,7 +10,7 @@ cryptography = ">=3.3.2" flask = ">=1.1.1" markdown = ">=2.6.11" pygments = ">=2.2.0" - +flask-wtf = "2.3.3" [dev-packages] pytest = ">=5.3.0" From 5fdb88f9214b7fb61884d331b765d35b57f35f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 14 Oct 2021 13:20:15 +0200 Subject: [PATCH 2/8] Add black to dev dependencies Black releases for some reason count as prereleases, hence the allow_prereleases=true flag for pipenv --- Pipfile | 4 + Pipfile.lock | 452 +++++++++++++++++++++++++-------------------------- 2 files changed, 224 insertions(+), 232 deletions(-) diff --git a/Pipfile b/Pipfile index e9aa320..a6d9ceb 100644 --- a/Pipfile +++ b/Pipfile @@ -17,7 +17,11 @@ pytest-cov = ">=2.7.1" pytest-mock = ">=1.10.4" coveralls = ">=1.3.0" pylint = "*" +black = "*" [scripts] test = "pytest --cov=blask --cov-report=xml" linter = "pylint blask --exit-zero" + +[pipenv] +allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index 3745e2e..54feafe 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "5e1bb0bd894c17ee12ad04cd051b55412a241b2d63c7f7ea2524aa15c30c9124" + "sha256": "56e5c5dcad98c419640d82c0d9cdd57b24bb754ca9fa7318e7295014561b05cf" }, "pipfile-spec": 6, "requires": {}, @@ -14,70 +14,60 @@ ] }, "default": { - "certifi": { - "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" - ], - "version": "==2021.10.8" - }, "cffi": { "hashes": [ - "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d", - "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771", - "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872", - "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c", - "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc", - "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762", - "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202", - "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5", - "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548", - "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a", - "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f", - "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20", - "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218", - "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c", - "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e", - "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56", - "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224", - "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a", - "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2", - "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a", - "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819", - "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346", - "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b", - "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e", - "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534", - "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb", - "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0", - "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156", - "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd", - "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87", - "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc", - "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195", - "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33", - "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f", - "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d", - "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd", - "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728", - "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7", - "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca", - "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99", - "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf", - "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e", - "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c", - "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5", - "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69" - ], - "version": "==1.14.6" - }, - "charset-normalizer": { - "hashes": [ - "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0", - "sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b" - ], - "markers": "python_version >= '3'", - "version": "==2.0.7" + "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3", + "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2", + "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636", + "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20", + "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728", + "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27", + "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66", + "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443", + "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0", + "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7", + "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39", + "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605", + "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a", + "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37", + "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029", + "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139", + "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc", + "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df", + "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14", + "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880", + "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2", + "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a", + "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e", + "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474", + "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024", + "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8", + "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0", + "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e", + "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a", + "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e", + "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032", + "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6", + "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e", + "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b", + "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e", + "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954", + "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962", + "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c", + "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4", + "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55", + "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962", + "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023", + "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c", + "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6", + "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8", + "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382", + "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7", + "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc", + "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997", + "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796" + ], + "version": "==1.15.0" }, "click": { "hashes": [ @@ -87,72 +77,6 @@ "markers": "python_version >= '3.6'", "version": "==8.0.3" }, - "coverage": { - "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" - ], - "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": "==5.5" - }, - "coveralls": { - "hashes": [ - "sha256:15a987d9df877fff44cd81948c5806ffb6eafb757b3443f737888358e96156ee", - "sha256:aedfcc5296b788ebaf8ace8029376e5f102f67c53d1373f2e821515c15b36527" - ], - "index": "pypi", - "version": "==3.2.0" - }, "cryptography": { "hashes": [ "sha256:07bb7fbfb5de0980590ddfc7f13081520def06dc9ed214000ad4372fb4e3c7f6", @@ -179,12 +103,6 @@ "index": "pypi", "version": "==35.0.0" }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, "flask": { "hashes": [ "sha256:7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2", @@ -201,14 +119,6 @@ "index": "pypi", "version": "==0.15.1" }, - "idna": { - "hashes": [ - "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a", - "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3" - ], - "markers": "python_version >= '3'", - "version": "==3.2" - }, "importlib-metadata": { "hashes": [ "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15", @@ -317,14 +227,6 @@ "index": "pypi", "version": "==2.10.0" }, - "requests": { - "hashes": [ - "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", - "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==2.26.0" - }, "typer": { "hashes": [ "sha256:63c3aeab0549750ffe40da79a1b524f60e08a2cbc3126c520ebf2eeaf507f5dd", @@ -342,14 +244,6 @@ "markers": "python_version < '3.8'", "version": "==3.10.0.2" }, - "urllib3": { - "hashes": [ - "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", - "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844" - ], - "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.26.7" - }, "werkzeug": { "hashes": [ "sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f", @@ -360,10 +254,11 @@ }, "wtforms": { "hashes": [ - "sha256:7b504fc724d0d1d4d5d5c114e778ec88c37ea53144683e084215eed5155ada4c", - "sha256:81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c" + "sha256:7ee6e0591777e4ad6779276cd64464bd0a8fc1ce2509b5bb88f936c9426c180c", + "sha256:cf01f0173ff7124ab30afeee444876a0f576fa5ed9c32f2112c439137077492f" ], - "version": "==2.3.3" + "markers": "python_version >= '3.6'", + "version": "==3.0.0a1" }, "zipp": { "hashes": [ @@ -377,11 +272,11 @@ "develop": { "astroid": { "hashes": [ - "sha256:304e99c129794f2cfda584a12b71fde85205da950e2f330f4be09150525ae949", - "sha256:9eaeaf92b3e21b70bec1a262e7eb118d2e96294892a5de595c92a12adc80dfc2" + "sha256:3975a0bd5373bdce166e60c851cfcbaf21ee96de80ec518c1f4cb3e94c3fb334", + "sha256:ab7f36e8a78b8e54a62028ba6beef7561db4cdb6f2a5009ecc44a6f42b5697ef" ], "markers": "python_version ~= '3.6'", - "version": "==2.8.2" + "version": "==2.6.6" }, "attrs": { "hashes": [ @@ -391,6 +286,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==21.2.0" }, + "black": { + "hashes": [ + "sha256:380f1b5da05e5a1429225676655dddb96f5ae8c75bdf91e53d798871b902a115", + "sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91" + ], + "index": "pypi", + "version": "==21.9b0" + }, "certifi": { "hashes": [ "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", @@ -406,63 +309,74 @@ "markers": "python_version >= '3'", "version": "==2.0.7" }, - "coverage": { + "click": { "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" - ], - "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": "==5.5" + "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", + "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" + ], + "markers": "python_version >= '3.6'", + "version": "==8.0.3" + }, + "coverage": { + "extras": [ + "toml" + ], + "hashes": [ + "sha256:00368e6328ebff76197fff5f4d5704b44098f89d8d99a67a349ad6674ec0b157", + "sha256:0389690e0a1c94e9a246dc3130355d70805e51ca509db1bf07fbde27efb33aa4", + "sha256:065d2181f44392893d37d0a4f9ff60b485d705f733356d0a2fb292a58c6f2e0f", + "sha256:082febdba717c769da92d5e19e14a659ebef6daab19b67fced304b7b8d2475e2", + "sha256:0a35ae0d590effb7cc96e7d6935ae2ab8a51526a111fbe0f12d1671aa9fdc377", + "sha256:142493f0400a0bd5acf03c52971229e937323c3e24c372800ae1c44a503e0921", + "sha256:186f53367a08e8d24cc534c7cbfa43a82d1618a48dec2e0c56e80577ec1888fe", + "sha256:2163a00bcd613e95e118c01ea2811f705fbbacf1904d657b24d306879e2303d3", + "sha256:24ecf342b1e23de259d81b3adc83578935babeb54f6950c9bd9534b12443a49c", + "sha256:2c24d3e09f433817ddd0cb2e8f82f8b42cd09a8ac558462fedf99be479ed4851", + "sha256:2d741575de4a13869c9d4a685235bacc897c94afd3703e2ad4fdc362f37e87da", + "sha256:305ca73c09dd84054a3a8f53d5b70e0325b5b303245d0b96ed505698dc7e8ea7", + "sha256:4bf1d0a390de707f8bfd49efdcdac9366ce77ed64cb35b344f58b1ec62517317", + "sha256:50d90d6b753debb7568621125aad4e5fb418e7bdcb0dba3fa6f4ee82994b35d4", + "sha256:5a2079bca21fa959608223b90cf2f95ce686a6497fb12bfaaa7bb24c3e298199", + "sha256:60c6d433f0357db7ed2a2a698fb75b8ce919ce547d6d6bc79c576e090f509768", + "sha256:66cfae29bccea703f02d8997f60d71e236c5a321588f5aa5a318bd88ca23dc0a", + "sha256:6d6fc990962559de1f3685eb3e365ca60f2e3257bfd145bf675c566b8ebb1944", + "sha256:703b126f3ad20c463b545e199c4da460695630da5fdfd949de6a6269b45eabab", + "sha256:730cee22c41852b90948343cdfd183db1e96a9de69fd4dabec3532c582afea68", + "sha256:7e4a16bde8a3b7424b2955130f5a6c29e741e7138fe05c5d9d72efc356076a80", + "sha256:801e8277958bc2e6cc1f2443a20a2a97f79583aa64524b130e1c0de44c287ca9", + "sha256:80baa69a78d5696c60b72dee44ac3d5ccf75ee82e84d018938ddf642d036a6a8", + "sha256:80c00ce9cef80afbf18d16cb3052f5601ba8d087501d829169eecb33c153346a", + "sha256:89db5a374d793344087732207ee15869549486b2148e3e2e6effe22146351fcd", + "sha256:917b98cc5725ea2e0b88c74d34182589a9be07092cb35b861ea9e74189174f71", + "sha256:9398f8fd89f6f260e94e57559df1885b8200b18312824b617a8789e0f5e7dc74", + "sha256:95b6f212bb0c7379f1f2f6e47c722fbdc7355d8b7488a68649e83dfa29522704", + "sha256:9f23313f3e494475581d46de3b8b6bdcf618ee1df412490e779a9aa0a6c72162", + "sha256:9f6f26e5b129bb0218aab30d368d6ead750517a457986f8854b1df4b4c318098", + "sha256:a502693c83a2c6558bc45b4c2dc01a00c9b99cb3cf846913438933a44af174fc", + "sha256:aa4999130a8e892fa9051edc18bf4daa0a2839d3f3de2dcfcbf0ae4619ee3b5e", + "sha256:b10be0b80784c1beb8061e5ce938d8511a182125de5fc695a60f0561b984d361", + "sha256:b1f7b23a606aaf2464eb81c23b5b20623e2ba44b4aaca6ea9bfe00e84a1a5264", + "sha256:b78c8d232d97dbc8ad3a3d94cc15fccabe9a331685d76d2e5cb5284acc4a5feb", + "sha256:b88fa862817035ad7921f2641c27a85dab12cc685ad3ef29c0caaf5b3d10a868", + "sha256:b93fb9137070899b5f10d6487724f4427b5945983a785e1e2f1102c5e175c516", + "sha256:b9639e16c1bc4eb8a78b3b30df4146bb78df5d52ba1b7454b634abd89aede6cc", + "sha256:baa3b6be365c97f80d92a397cb8963dcd9bc22d101b39784e77a9cad093812f8", + "sha256:c06c5758bae454a49dc3e7917804b46c31bb4a72cedfc8e7b4f17a318b3de9d6", + "sha256:c544153709e93ea7e9edcefee72f5afcf484a9cb526067065f9419419f4a3694", + "sha256:c6c74260ba130f7c20a340e8f9e544b0941621641f53edcf69e4602e12c9f29e", + "sha256:d040615ff5c02ffd97ba9f0f73b9db34c09b8142fbfdd363b2a79fa6a554242c", + "sha256:d85774b1ac09ec1d958e63baa436cc4c90e2e910294847ba51dcc3ca3ca04a63", + "sha256:e508bb216eee8350e77b436f9f99c4f2d8335ecb51483f5ffd8bf5e84aaa56d1", + "sha256:ea1cb38b1a52392ebb4e93eaf4a44b3cfdec35cca3f78a9a599f27b7f27031e2", + "sha256:ec310e0029d530d1043f638b7a326b349884421572626bc2909408da7b0d03e5", + "sha256:ed04b79f53fa975660f1a598120c504a0f4529170eeaf0d823fcc1f06f4d2e0f", + "sha256:f4909ee1ddabed351f0fa55063a7dbe498001e2245a9602d9fb0fd74afecdca9", + "sha256:f49ae9e19737493911e7f8e551310f719f463e442ea1ec92fe0804c62066a7e8", + "sha256:f4c93e6102087dda4931fcd50fa4ad44e8e43e09419290c5f05cc2c690961ebf", + "sha256:fa1b639d85af4794cb20d7cfd4c5ae38e94a418b17a2318a1992b470fb68260d" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==5.6b1" }, "coveralls": { "hashes": [ @@ -480,11 +394,11 @@ }, "idna": { "hashes": [ - "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a", - "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3" + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" ], "markers": "python_version >= '3'", - "version": "==3.2" + "version": "==3.3" }, "importlib-metadata": { "hashes": [ @@ -544,6 +458,13 @@ ], "version": "==0.6.1" }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, "packaging": { "hashes": [ "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7", @@ -552,6 +473,13 @@ "markers": "python_version >= '3.6'", "version": "==21.0" }, + "pathspec": { + "hashes": [ + "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", + "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + ], + "version": "==0.9.0" + }, "platformdirs": { "hashes": [ "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2", @@ -578,19 +506,19 @@ }, "pylint": { "hashes": [ - "sha256:0f358e221c45cbd4dad2a1e4b883e75d28acdcccd29d40c76eb72b307269b126", - "sha256:2c9843fff1a88ca0ad98a256806c82c5a8f86086e7ccbdb93297d86c3f90c436" + "sha256:349b149e88e4357ed4f77ac3a4e61c0ab965cda293b6f4e58caf73d4b24ae551", + "sha256:adc11bec00c2084bf55c81dd69e26f2793fef757547997d44b21aed038f74403" ], "index": "pypi", - "version": "==2.11.1" + "version": "==3.0.0a4" }, "pyparsing": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:10fb0827f908440eda768ec659627c3ac5dc20a25b4adaf50e7e10b248c17a4f", + "sha256:f72f2294ef53f917d984093e8ac8ed5818837516132e68c67b7fdd5350c8dabf" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.4.7" + "markers": "python_version >= '3.6'", + "version": "==3.0.0rc2" }, "pytest": { "hashes": [ @@ -616,6 +544,58 @@ "index": "pypi", "version": "==3.6.1" }, + "regex": { + "hashes": [ + "sha256:094a905e87a4171508c2a0e10217795f83c636ccc05ddf86e7272c26e14056ae", + "sha256:09e1031e2059abd91177c302da392a7b6859ceda038be9e015b522a182c89e4f", + "sha256:176796cb7f82a7098b0c436d6daac82f57b9101bb17b8e8119c36eecf06a60a3", + "sha256:19b8f6d23b2dc93e8e1e7e288d3010e58fafed323474cf7f27ab9451635136d9", + "sha256:1abbd95cbe9e2467cac65c77b6abd9223df717c7ae91a628502de67c73bf6838", + "sha256:1ce02f420a7ec3b2480fe6746d756530f69769292eca363218c2291d0b116a01", + "sha256:1f51926db492440e66c89cd2be042f2396cf91e5b05383acd7372b8cb7da373f", + "sha256:26895d7c9bbda5c52b3635ce5991caa90fbb1ddfac9c9ff1c7ce505e2282fb2a", + "sha256:2efd47704bbb016136fe34dfb74c805b1ef5c7313aef3ce6dcb5ff844299f432", + "sha256:36c98b013273e9da5790ff6002ab326e3f81072b4616fd95f06c8fa733d2745f", + "sha256:39079ebf54156be6e6902f5c70c078f453350616cfe7bfd2dd15bdb3eac20ccc", + "sha256:3d52c5e089edbdb6083391faffbe70329b804652a53c2fdca3533e99ab0580d9", + "sha256:45cb0f7ff782ef51bc79e227a87e4e8f24bc68192f8de4f18aae60b1d60bc152", + "sha256:4786dae85c1f0624ac77cb3813ed99267c9adb72e59fdc7297e1cf4d6036d493", + "sha256:51feefd58ac38eb91a21921b047da8644155e5678e9066af7bcb30ee0dca7361", + "sha256:55ef044899706c10bc0aa052f2fc2e58551e2510694d6aae13f37c50f3f6ff61", + "sha256:5e5796d2f36d3c48875514c5cd9e4325a1ca172fc6c78b469faa8ddd3d770593", + "sha256:5f199419a81c1016e0560c39773c12f0bd924c37715bffc64b97140d2c314354", + "sha256:5f55c4804797ef7381518e683249310f7f9646da271b71cb6b3552416c7894ee", + "sha256:6dcf53d35850ce938b4f044a43b33015ebde292840cef3af2c8eb4c860730fff", + "sha256:74e55f8d66f1b41d44bc44c891bcf2c7fad252f8f323ee86fba99d71fd1ad5e3", + "sha256:7f125fce0a0ae4fd5c3388d369d7a7d78f185f904c90dd235f7ecf8fe13fa741", + "sha256:82cfb97a36b1a53de32b642482c6c46b6ce80803854445e19bc49993655ebf3b", + "sha256:88dc3c1acd3f0ecfde5f95c32fcb9beda709dbdf5012acdcf66acbc4794468eb", + "sha256:924079d5590979c0e961681507eb1773a142553564ccae18d36f1de7324e71ca", + "sha256:951be934dc25d8779d92b530e922de44dda3c82a509cdb5d619f3a0b1491fafa", + "sha256:973499dac63625a5ef9dfa4c791aa33a502ddb7615d992bdc89cf2cc2285daa3", + "sha256:981c786293a3115bc14c103086ae54e5ee50ca57f4c02ce7cf1b60318d1e8072", + "sha256:9c070d5895ac6aeb665bd3cd79f673775caf8d33a0b569e98ac434617ecea57d", + "sha256:9e3e2cea8f1993f476a6833ef157f5d9e8c75a59a8d8b0395a9a6887a097243b", + "sha256:9e527ab1c4c7cf2643d93406c04e1d289a9d12966529381ce8163c4d2abe4faf", + "sha256:a37305eb3199d8f0d8125ec2fb143ba94ff6d6d92554c4b8d4a8435795a6eccd", + "sha256:aa0ab3530a279a3b7f50f852f1bab41bc304f098350b03e30a3876b7dd89840e", + "sha256:b04e512eb628ea82ed86eb31c0f7fc6842b46bf2601b66b1356a7008327f7700", + "sha256:b09d3904bf312d11308d9a2867427479d277365b1617e48ad09696fa7dfcdf59", + "sha256:b0f2f874c6a157c91708ac352470cb3bef8e8814f5325e3c5c7a0533064c6a24", + "sha256:b8b6ee6555b6fbae578f1468b3f685cdfe7940a65675611365a7ea1f8d724991", + "sha256:b9b5c215f3870aa9b011c00daeb7be7e1ae4ecd628e9beb6d7e6107e07d81287", + "sha256:c6569ba7b948c3d61d27f04e2b08ebee24fec9ff8e9ea154d8d1e975b175bfa7", + "sha256:e2ec1c106d3f754444abf63b31e5c4f9b5d272272a491fa4320475aba9e8157c", + "sha256:e4204708fa116dd03436a337e8e84261bc8051d058221ec63535c9403a1582a1", + "sha256:ea8de658d7db5987b11097445f2b1f134400e2232cb40e614e5f7b6f5428710e", + "sha256:f540f153c4f5617bc4ba6433534f8916d96366a08797cbbe4132c37b70403e92", + "sha256:fab3ab8aedfb443abb36729410403f0fe7f60ad860c19a979d47fb3eb98ef820", + "sha256:fb2baff66b7d2267e07ef71e17d01283b55b3cc51a81b54cc385e721ae172ba4", + "sha256:fe6ce4f3d3c48f9f402da1ceb571548133d3322003ce01b20d960a82251695d2", + "sha256:ff24897f6b2001c38a805d53b6ae72267025878d35ea225aa24675fbff2dba7f" + ], + "version": "==2021.10.8" + }, "requests": { "hashes": [ "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", @@ -632,6 +612,14 @@ "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, + "tomli": { + "hashes": [ + "sha256:8dd0e9524d6f386271a36b41dbf6c57d8e32fd96fd22b6584679dc569d20899f", + "sha256:a5b75cb6f3968abb47af1b40c1819dc519ea82bcc065776a866e8d74c5ca9442" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.1" + }, "typed-ast": { "hashes": [ "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", @@ -682,7 +670,7 @@ "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'", "version": "==1.26.7" }, "wrapt": { From 1fa2466f14ce5e47a7542f8eae4b2af754038f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 14 Oct 2021 13:23:27 +0200 Subject: [PATCH 3/8] Migrate code style to Black --- blask/blaskapp.py | 42 +++++++++++++++++++++------------------- blask/blaskcli.py | 33 ++++++++++++++++++------------- blask/blasksettings.py | 7 ++++--- blask/blogrenderer.py | 38 ++++++++++++++++++------------------ main.py | 9 ++++----- settings.py | 2 +- tests/blaskcli_test.py | 16 +++++++-------- tests/blogrender_test.py | 3 +-- tests/main_test.py | 2 +- tests/settings.py | 13 +++++-------- tests/settings_test.py | 27 +++++++++++++------------- tests/testsettings.py | 8 ++++---- 12 files changed, 102 insertions(+), 98 deletions(-) diff --git a/blask/blaskapp.py b/blask/blaskapp.py index 8826822..0fb6ac3 100644 --- a/blask/blaskapp.py +++ b/blask/blaskapp.py @@ -47,28 +47,28 @@ def __init__(self, **kwargs): template_folder=self.settings["templateDir"], static_folder=self.settings["staticDir"], ) - + self.csrf = CSRFProtect() self.csrf.init_app(self.app) self.app.add_url_rule( - "/", endpoint="index", view_func=self._index, methods=["GET"]) - self.app.add_url_rule( - "/sitemap.xml", view_func=self._get_sitemap, methods=["GET"]) - self.app.add_url_rule( - "/", view_func=self._getpage, methods=["GET"]) - self.app.add_url_rule( - "//", - view_func=self._get_subpage, methods=["GET"]) + "/", endpoint="index", view_func=self._index, methods=["GET"] + ) self.app.add_url_rule( - "/tag/", view_func=self._gettag, methods=["GET"]) + "/sitemap.xml", view_func=self._get_sitemap, methods=["GET"] + ) + self.app.add_url_rule("/", view_func=self._getpage, methods=["GET"]) self.app.add_url_rule( - "/search", view_func=self.searchpages, methods=["POST"]) + "//", view_func=self._get_subpage, methods=["GET"] + ) + self.app.add_url_rule("/tag/", view_func=self._gettag, methods=["GET"]) + self.app.add_url_rule("/search", view_func=self.searchpages, methods=["POST"]) self.app.add_url_rule( - "/category/", - view_func=self._getcategory, methods=["GET"]) + "/category/", view_func=self._getcategory, methods=["GET"] + ) self.app.add_url_rule( - "/author/", view_func=self._getauthor, methods=["GET"]) + "/author/", view_func=self._getauthor, methods=["GET"] + ) # Register the error handler for each setting for error in self.settings["errors"].keys(): self.app.register_error_handler(error, f=self._handle_http_errors) @@ -83,7 +83,8 @@ def _index(self): if template is None: template = self.settings["defaultLayout"] return render_template( - template, title=self.settings["title"], content=entry.content) + template, title=self.settings["title"], content=entry.content + ) def _getpage(self, filename): """ @@ -129,7 +130,8 @@ def _get_sitemap(self): """ return Response( self.blogrenderer.generate_sitemap_xml( - self.settings["postDir"], request.url_root), + self.settings["postDir"], request.url_root + ), content_type="text/xml", ) @@ -144,7 +146,7 @@ def _gettag(self, tag): return render_template( self.settings["defaultLayout"], title=self.settings["title"], - content=content + content=content, ) def searchpages(self): @@ -157,7 +159,7 @@ def searchpages(self): return render_template( self.settings["defaultLayout"], title=self.settings["title"], - content=content + content=content, ) def _getcategory(self, category): @@ -171,7 +173,7 @@ def _getcategory(self, category): return render_template( self.settings["defaultLayout"], title=self.settings["title"], - content=content + content=content, ) def _getauthor(self, author): @@ -185,7 +187,7 @@ def _getauthor(self, author): return render_template( self.settings["defaultLayout"], title=self.settings["title"], - content=content + content=content, ) def _handle_http_errors(self, error_message): diff --git a/blask/blaskcli.py b/blask/blaskcli.py index f6f9193..446da9a 100644 --- a/blask/blaskcli.py +++ b/blask/blaskcli.py @@ -33,15 +33,15 @@ class CLIController: Class that controls all the Command Line interface application """ - default_template_file = str(LIB_DIR / 'index_template.html') + default_template_file = str(LIB_DIR / "index_template.html") - default_index = str(LIB_DIR / 'markdown_template.md') + default_index = str(LIB_DIR / "markdown_template.md") - settings = str(LIB_DIR / 'default_env.env') + settings = str(LIB_DIR / "default_env.env") - not_found = str(LIB_DIR / 'default_404.md') + not_found = str(LIB_DIR / "default_404.md") - docker_template = str(LIB_DIR / 'Dockerfile_template') + docker_template = str(LIB_DIR / "Dockerfile_template") def createdefaultindexfile(self, filepath): """ @@ -61,7 +61,7 @@ def createsettingsfile(self): """ Create a new settings file """ - shutil.copy(self.settings, '.env') + shutil.copy(self.settings, ".env") def createnotfoundpage(self, filepath): """ @@ -97,9 +97,13 @@ def main() -> None: @blaskcli.command(help="Run the instance of blask") def run( - debug: bool = typer.Option(False, "--debug", help="Init with de debug flag", is_flag=True), + debug: bool = typer.Option( + False, "--debug", help="Init with de debug flag", is_flag=True + ), port: int = typer.Option(5000, "--port", help="Port where the server is listening"), - host: str = typer.Option("127.0.0.1", "--host", help="Default Network interface listening"), + host: str = typer.Option( + "127.0.0.1", "--host", help="Default Network interface listening" + ), ) -> None: """ Run the current blask instance @@ -112,7 +116,10 @@ def run( @blaskcli.command(help="Initialize a new blask Project") def init( with_docker: bool = typer.Option( - False, "--with-docker", help="Add a DockerFile to the blask directory", is_flag=True + False, + "--with-docker", + help="Add a DockerFile to the blask directory", + is_flag=True, ) ) -> None: """ @@ -122,7 +129,8 @@ def init( typer.echo("Initializing new blask Project") typer.echo("Using default Settings") postdir = path.basename( - path.dirname(str(blasksettings.DEFAULT_SETTINGS["postDir"] + "/"))) + path.dirname(str(blasksettings.DEFAULT_SETTINGS["postDir"] + "/")) + ) templatedir = path.basename( path.dirname(str(blasksettings.DEFAULT_SETTINGS["templateDir"] + "/")) ) @@ -130,10 +138,9 @@ def init( makedirs(postdir) cliController.createdefaultindexfile(path.join(postdir, "index.md")) makedirs(templatedir) - cliController.createdefaulttemplatefile( - path.join(templatedir, "template.html")) + cliController.createdefaulttemplatefile(path.join(templatedir, "template.html")) cliController.createsettingsfile() - cliController.createnotfoundpage(path.join(postdir, '404.md')) + cliController.createnotfoundpage(path.join(postdir, "404.md")) if with_docker: cliController.createdockerfile(path.join("Dockerfile")) typer.echo("Created new blask project on %s" % getcwd()) diff --git a/blask/blasksettings.py b/blask/blasksettings.py index 493ba1f..8b08e69 100644 --- a/blask/blasksettings.py +++ b/blask/blasksettings.py @@ -30,11 +30,11 @@ "defaultLayout": str("template.html"), "staticDir": str(BASE_DIR / "static"), "title": "blask | A Simple Blog Engine Based on Flask", - "errors": {404: "404"} # Dictionary with errors handler + "errors": {404: "404"}, # Dictionary with errors handler } -class BlaskSettings(): # pylint: disable=too-few-public-methods +class BlaskSettings: # pylint: disable=too-few-public-methods """ blask configuration helper class """ @@ -54,7 +54,8 @@ def __init__(self, **kwargs): path.append(os.getcwd()) # Load settings from the module in environment variable settings_mod = import_module( - os.environ["BLASK_SETTINGS"], os.environ["BLASK_SETTINGS"]) + os.environ["BLASK_SETTINGS"], os.environ["BLASK_SETTINGS"] + ) self.settings = {} for key in DEFAULT_SETTINGS: diff --git a/blask/blogrenderer.py b/blask/blogrenderer.py index b4f49e2..1953eea 100644 --- a/blask/blogrenderer.py +++ b/blask/blogrenderer.py @@ -30,6 +30,7 @@ INDEX = "index.md" DATE_FORMAT = "%Y-%m-%d" + class BlogRenderer: """ Class BlogRenderer: This class provides the feature for render posts from @@ -66,7 +67,8 @@ def renderfile(self, filename): would fall out of the posts directory. """ page_not_exist_exception = PageNotExistError( - f"{filename} does not exists in {self.postdir} directory") + f"{filename} does not exists in {self.postdir} directory" + ) try: file = f"{filename}.md" filepath = safe_join(self.postdir, file) @@ -93,20 +95,19 @@ def rendertext(self, filename, text): :param text: Text write in Markdown. :return: BlogEntry. """ - mark_down = Markdown( - extensions=["meta", "markdown.extensions.codehilite"]) + mark_down = Markdown(extensions=["meta", "markdown.extensions.codehilite"]) entry = BlogEntry(filename, mark_down, text) return entry # pylint: disable=dangerous-default-value def list_posts( - self, - tags=None, - exclusions=[INDEX, "404.md"], - search="", - category="", - author="", - orderbydate=True, + self, + tags=None, + exclusions=[INDEX, "404.md"], + search="", + category="", + author="", + orderbydate=True, ): """ Search a list of Posts returning a list of BlogEntry ordered By Date. @@ -139,10 +140,8 @@ def list_posts( if orderbydate: # create a sublist with only entries with date dateredentries = list(filter(lambda e: e.date is None, entries)) - notdateredentries = list( - filter(lambda d: d.date is not None, entries)) - entries = list( - sorted(dateredentries, key=lambda t: t.date, reverse=True)) + notdateredentries = list(filter(lambda d: d.date is not None, entries)) + entries = list(sorted(dateredentries, key=lambda t: t.date, reverse=True)) entries.extend(notdateredentries) return entries @@ -156,8 +155,9 @@ def _listdirectoriesrecursive(self, directory, append=""): for file in listdir(directory): if path.isdir(safe_join(directory, file)): posts.extend( - self._listdirectoriesrecursive(safe_join(directory, file), - safe_join(append, file)) + self._listdirectoriesrecursive( + safe_join(directory, file), safe_join(append, file) + ) ) else: posts.append(safe_join(append, file)) @@ -170,8 +170,8 @@ def generate_sitemap_xml(self, postlist, baseurl="http://localhost:5000"): :return: return the xml output for the Sitemap.xml file. """ root = ET.Element( - "urlset", - attrib={"xmlns": "http://www.sitemaps.org/schemas/sitemap/0.9"}) + "urlset", attrib={"xmlns": "http://www.sitemaps.org/schemas/sitemap/0.9"} + ) rpostlist = self._listdirectoriesrecursive(postlist) rpostlist.remove(INDEX) rpostlist = list(map(lambda l: path.splitext(l)[0], rpostlist)) @@ -224,7 +224,7 @@ def generatetagpage(self, postlist): # pylint: disable=too-few-public-methods class BlogEntry: - """" + """ " This class has the information about the Blog Posts. Author: Zerasul Version: 0.0.1. diff --git a/main.py b/main.py index 46cd7a6..f6f27ac 100644 --- a/main.py +++ b/main.py @@ -1,15 +1,14 @@ import argparse import logging from blask import BlaskApp + application = BlaskApp().app -if __name__ == '__main__': +if __name__ == "__main__": # Argument parsing parser = argparse.ArgumentParser() - parser.add_argument( - "-d", "--debug", action='store_true', help="Verbose output") - parser.add_argument( - "-v", "--verbose", action='store_true', help="Verbose output") + parser.add_argument("-d", "--debug", action="store_true", help="Verbose output") + parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output") args = parser.parse_args() if args.debug or args.verbose: log = logging.getLogger() diff --git a/settings.py b/settings.py index a70a819..f078811 100644 --- a/settings.py +++ b/settings.py @@ -1,6 +1,6 @@ from pathlib import Path -BASE_DIR = Path('.').resolve() +BASE_DIR = Path(".").resolve() templateDir = str(BASE_DIR / "templates") postDir = "posts" diff --git a/tests/blaskcli_test.py b/tests/blaskcli_test.py index 176a36b..84abfca 100644 --- a/tests/blaskcli_test.py +++ b/tests/blaskcli_test.py @@ -9,18 +9,18 @@ class TestCLI: runner = CliRunner() def test_init(self, mocker): - mocker.patch('os.makedirs') - mocker.patch('shutil.copy') - run = self.runner.invoke(blaskcli.blaskcli, ['init']) + mocker.patch("os.makedirs") + mocker.patch("shutil.copy") + run = self.runner.invoke(blaskcli.blaskcli, ["init"]) assert "Initializing new blask Project" in run.output def test_init_with_docker(self, mocker): - mocker.patch('os.makedirs') - mocker.patch('shutil.copy') - run = self.runner.invoke(blaskcli.blaskcli, ['init', '--with-docker']) + mocker.patch("os.makedirs") + mocker.patch("shutil.copy") + run = self.runner.invoke(blaskcli.blaskcli, ["init", "--with-docker"]) assert "Initializing new blask Project" in run.output def test_run(self, mocker): - mocker.patch('blask.blaskcli.blask.run') - run = self.runner.invoke(blaskcli.blaskcli, ['run']) + mocker.patch("blask.blaskcli.blask.run") + run = self.runner.invoke(blaskcli.blaskcli, ["run"]) assert "blask (C)" in run.output diff --git a/tests/blogrender_test.py b/tests/blogrender_test.py index 8e4ee7e..82337c2 100644 --- a/tests/blogrender_test.py +++ b/tests/blogrender_test.py @@ -8,8 +8,7 @@ class TestblogRender: blogrender = None - markdowntest = ( - "---\ntitle: test\ndate: 2018-03-03\ntags: test,test2\n ---\n test") + markdowntest = "---\ntitle: test\ndate: 2018-03-03\ntags: test,test2\n ---\n test" @fixture(autouse=True) def initialize(self): diff --git a/tests/main_test.py b/tests/main_test.py index 8fc36bc..91c3918 100644 --- a/tests/main_test.py +++ b/tests/main_test.py @@ -21,7 +21,7 @@ def inittest(self): ) b.app.testing = True b.app.config["SECRET_KEY"] = "supersecretkeyfortesting" - b.app.config['WTF_CSRF_METHODS'] = [] + b.app.config["WTF_CSRF_METHODS"] = [] self.test_client = b.app.test_client() diff --git a/tests/settings.py b/tests/settings.py index 209831e..2574133 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -4,21 +4,18 @@ BASE_DIR = Path(".").resolve() # Templates directory -templateDir = os.path.join(BASE_DIR, 'templates') +templateDir = os.path.join(BASE_DIR, "templates") # Posts directory -postDir = os.path.join(BASE_DIR, 'posts') +postDir = os.path.join(BASE_DIR, "posts") # Default layout template defaultLayout = "template.html" # Static files directory -staticDir = os.path.join(BASE_DIR, 'static') +staticDir = os.path.join(BASE_DIR, "static") # Website title -title = 'The mantis revenge!' +title = "The mantis revenge!" -errors = { - 500: "500", - 404: "404" -} +errors = {500: "500", 404: "404"} diff --git a/tests/settings_test.py b/tests/settings_test.py index d4dd836..c97be05 100644 --- a/tests/settings_test.py +++ b/tests/settings_test.py @@ -6,7 +6,6 @@ class TestBlaskSettings: - def test_defaults(self): settings = BlaskSettings() for kw in blasksettings.DEFAULT_SETTINGS.keys(): @@ -14,34 +13,34 @@ def test_defaults(self): def test_from_environ(self): # changed for new pytest - os.environ['BLASK_SETTINGS'] = 'tests.testsettings' + os.environ["BLASK_SETTINGS"] = "tests.testsettings" settings = BlaskSettings() for kw in blasksettings.DEFAULT_SETTINGS.keys(): - if kw == 'postDir': - assert settings[kw] == str(Path('.').resolve() / 'posts2') - elif kw == 'title': - assert settings[kw] == 'The mantis revenge!' + if kw == "postDir": + assert settings[kw] == str(Path(".").resolve() / "posts2") + elif kw == "title": + assert settings[kw] == "The mantis revenge!" else: assert settings[kw] == blasksettings.DEFAULT_SETTINGS[kw] - del(os.environ['BLASK_SETTINGS']) + del os.environ["BLASK_SETTINGS"] def test_kwargs(self): kwsettings = { - 'postDir': str(Path.cwd() / 'mantispostdir'), - 'title': 'The mantis has you!', + "postDir": str(Path.cwd() / "mantispostdir"), + "title": "The mantis has you!", } settings = BlaskSettings(**kwsettings) for kw in blasksettings.DEFAULT_SETTINGS.keys(): - if kw == 'postDir': + if kw == "postDir": - assert settings[kw] == str(Path.cwd() / 'mantispostdir') - elif kw == 'title': - assert settings[kw] == 'The mantis has you!' + assert settings[kw] == str(Path.cwd() / "mantispostdir") + elif kw == "title": + assert settings[kw] == "The mantis has you!" else: assert settings[kw] == blasksettings.DEFAULT_SETTINGS[kw] def test_nokey(self): settings = BlaskSettings() with raises(KeyError): - settings['nokey'] + settings["nokey"] diff --git a/tests/testsettings.py b/tests/testsettings.py index b0c738d..ca839f9 100644 --- a/tests/testsettings.py +++ b/tests/testsettings.py @@ -4,18 +4,18 @@ BASE_DIR = Path(".").resolve() # Templates directory -templateDir = os.path.join(BASE_DIR, 'templates') +templateDir = os.path.join(BASE_DIR, "templates") # Posts directory -postDir = os.path.join(BASE_DIR, 'posts2') +postDir = os.path.join(BASE_DIR, "posts2") # Default layout template defaultLayout = "template.html" # Static files directory -staticDir = os.path.join(BASE_DIR, 'static') +staticDir = os.path.join(BASE_DIR, "static") # Website title -title = 'The mantis revenge!' +title = "The mantis revenge!" errors = {404: "404"} From 7a6a46757c94122a3390d84081a0b6a084769a8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 14 Oct 2021 13:25:34 +0200 Subject: [PATCH 4/8] Add .git-blame-ignore-revs This file contains hashes for reformatting commit(s) so they can be ignored in `git blame` output with the `--ignore-revs-file` option. --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) create mode 100644 .git-blame-ignore-revs diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..13c5b58 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1 @@ +1fa2466f14ce5e47a7542f8eae4b2af754038f8f \ No newline at end of file From 382a84c4f0fef1279d0ca817a31543e83c7b5a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 21 Oct 2021 20:32:40 +0200 Subject: [PATCH 5/8] Create job to autoformat code to Black --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87d939a..f11dc65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,3 +53,29 @@ jobs: -Dsonar.python.coverage.reportPaths=coverage.xml \ -Dsonar.projectName=Blask \ -Dsonar.host.url=https://sonarcloud.io + + black: + runs-on: ubuntu-latest + steps: + - name: Clone repo + uses: actions/checkout@v2 + + - name: Setup python 3.7 + uses: actions/setup-python@v2 + with: + python-version: "3.7" + architecture: "x64" + - name: Install Black + run: pip install black + + - name: Check if changes are Black-compliant + run: black --check . + + - name: Auto-format with Black and commit format changes + if: failure() + run: | + black . + git config user.name 'autoblack' + git config user.email '' + git commit -am "fixup: Format Python code with Black" + git push From 0afc580b67df4242b46ddc2153ca6cdce30f11fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 21 Oct 2021 20:32:40 +0200 Subject: [PATCH 6/8] Create job to autoformat code to Black --- .github/workflows/ci.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87d939a..90e8ab3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,3 +53,25 @@ jobs: -Dsonar.python.coverage.reportPaths=coverage.xml \ -Dsonar.projectName=Blask \ -Dsonar.host.url=https://sonarcloud.io + + black: + runs-on: ubuntu-latest + steps: + - name: Clone repo + uses: actions/checkout@v2 + + - name: Setup python 3.7 + uses: actions/setup-python@v2 + with: + python-version: "3.7" + architecture: "x64" + - name: Install Black + run: pip install black + + - name: Auto-format with Black and commit format changes only if there are changes + run: | + black . + git config user.name 'autoblack' + git config user.email '' + git diff --quiet HEAD || git commit -am "fixup: Format Python code with Black" + git push From 108f3c8d60ea7634dd8c50fdd32a8bed648a2fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 21 Oct 2021 22:58:00 +0200 Subject: [PATCH 7/8] Add Black code style badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ecc78e..6c321ca 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # BLASK -[![Build Status](https://travis-ci.org/zerasul/blask.svg?branch=master)](https://travis-ci.org/zerasul/blask) [![Coverage Status](https://coveralls.io/repos/github/zerasul/blask/badge.svg?branch=master)](https://coveralls.io/github/zerasul/blask?branch=master) [![sonarcloud-quality-gate](https://sonarcloud.io/api/project_badges/measure?project=blask-project-key&metric=alert_status)](https://sonarcloud.io/dashboard?id=blask-project-key)[![PyPI version](https://badge.fury.io/py/Blask.svg)](https://badge.fury.io/py/Blask) [![Downloads](http://pepy.tech/badge/blask)](http://pepy.tech/count/blask) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/zerasul/blask/0.2.3?color=green&logo=docker)](https://hub.docker.com/r/zerasul/blask) Buy Me A Coffee donate button +[![Build Status](https://travis-ci.org/zerasul/blask.svg?branch=master)](https://travis-ci.org/zerasul/blask) [![Coverage Status](https://coveralls.io/repos/github/zerasul/blask/badge.svg?branch=master)](https://coveralls.io/github/zerasul/blask?branch=master) [![sonarcloud-quality-gate](https://sonarcloud.io/api/project_badges/measure?project=blask-project-key&metric=alert_status)](https://sonarcloud.io/dashboard?id=blask-project-key) [![PyPI version](https://badge.fury.io/py/Blask.svg)](https://badge.fury.io/py/Blask) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Downloads](http://pepy.tech/badge/blask)](http://pepy.tech/count/blask) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/zerasul/blask/0.2.3?color=green&logo=docker)](https://hub.docker.com/r/zerasul/blask) Buy Me A Coffee donate button [![Coverage Status](https://coveralls.io/repos/github/zerasul/blask/badge.svg?branch=main)](https://coveralls.io/github/zerasul/blask?branch=main) From 40669579b194200b7f6dd9188f154903c31ae4dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvira=20Ram=C3=ADrez?= Date: Thu, 21 Oct 2021 22:59:58 +0200 Subject: [PATCH 8/8] Remove duplicate Coveralls badge The remaining badge references the `main` branch --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 6c321ca..c5825d1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # BLASK -[![Build Status](https://travis-ci.org/zerasul/blask.svg?branch=master)](https://travis-ci.org/zerasul/blask) [![Coverage Status](https://coveralls.io/repos/github/zerasul/blask/badge.svg?branch=master)](https://coveralls.io/github/zerasul/blask?branch=master) [![sonarcloud-quality-gate](https://sonarcloud.io/api/project_badges/measure?project=blask-project-key&metric=alert_status)](https://sonarcloud.io/dashboard?id=blask-project-key) [![PyPI version](https://badge.fury.io/py/Blask.svg)](https://badge.fury.io/py/Blask) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Downloads](http://pepy.tech/badge/blask)](http://pepy.tech/count/blask) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/zerasul/blask/0.2.3?color=green&logo=docker)](https://hub.docker.com/r/zerasul/blask) Buy Me A Coffee donate button - -[![Coverage Status](https://coveralls.io/repos/github/zerasul/blask/badge.svg?branch=main)](https://coveralls.io/github/zerasul/blask?branch=main) +[![Build Status](https://travis-ci.org/zerasul/blask.svg?branch=master)](https://travis-ci.org/zerasul/blask) [![Coverage Status](https://coveralls.io/repos/github/zerasul/blask/badge.svg?branch=main)](https://coveralls.io/github/zerasul/blask?branch=main) [![sonarcloud-quality-gate](https://sonarcloud.io/api/project_badges/measure?project=blask-project-key&metric=alert_status)](https://sonarcloud.io/dashboard?id=blask-project-key) [![PyPI version](https://badge.fury.io/py/Blask.svg)](https://badge.fury.io/py/Blask) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Downloads](http://pepy.tech/badge/blask)](http://pepy.tech/count/blask) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/zerasul/blask/0.2.3?color=green&logo=docker)](https://hub.docker.com/r/zerasul/blask) Buy Me A Coffee donate button Blask is a blogging engine based on [Flask](http://flask.pocoo.org/). Blask uses Markdown syntax to create and render the contents of blog posts.