Repository: Zipfian-Science/rickled (language: python)

Issue:
Jh updates



Discussion / hints:

Fix patch:
diff --git a/Pipfile b/Pipfile
index bacf955..3c39265 100644
--- a/Pipfile
+++ b/Pipfile
@@ -10,6 +10,7 @@ Sphinx = "*"
 rinohtype = "*"
 sphinxcontrib-napoleon = "*"
 python-docs-theme = "*"
+sphinx-rtd-theme = "*"
 
 [packages]
 pyyaml = "*"
diff --git a/Pipfile.lock b/Pipfile.lock
index c40f87c..208ceaf 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "f437cdd6a4eaf644844baea083e330d6a02d30045daf15063b68debbcfbf59b6"
+            "sha256": "073e2b753ca80387d541a6487778c4efda7719cb2bb5fd0d4293a84438a29ac8"
         },
         "pipfile-spec": 6,
         "requires": {
@@ -18,20 +18,38 @@
     "default": {
         "pyyaml": {
             "hashes": [
-                "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97",
-                "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76",
-                "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2",
-                "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648",
-                "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf",
-                "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f",
-                "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2",
-                "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee",
-                "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d",
-                "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c",
-                "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"
+                "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf",
+                "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696",
+                "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393",
+                "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77",
+                "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922",
+                "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5",
+                "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8",
+                "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10",
+                "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc",
+                "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018",
+                "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e",
+                "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253",
+                "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347",
+                "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183",
+                "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541",
+                "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb",
+                "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185",
+                "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc",
+                "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db",
+                "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa",
+                "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46",
+                "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122",
+                "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b",
+                "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63",
+                "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df",
+                "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc",
+                "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247",
+                "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6",
+                "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"
             ],
             "index": "pypi",
-            "version": "==5.3.1"
+            "version": "==5.4.1"
         }
     },
     "develop": {
@@ -42,81 +60,51 @@
             ],
             "version": "==0.7.12"
         },
+        "appdirs": {
+            "hashes": [
+                "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41",
+                "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"
+            ],
+            "version": "==1.4.4"
+        },
         "babel": {
             "hashes": [
-                "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38",
-                "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"
+                "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9",
+                "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"
             ],
-            "version": "==2.8.0"
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+            "version": "==2.9.1"
         },
         "bleach": {
             "hashes": [
-                "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080",
-                "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd"
+                "sha256:0900d8b37eba61a802ee40ac0061f8c2b5dee29c1927dd1d233e075ebf5a71da",
+                "sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994"
             ],
-            "version": "==3.2.1"
+            "markers": "python_version >= '3.6'",
+            "version": "==4.1.0"
         },
         "certifi": {
             "hashes": [
-                "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
-                "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
-            ],
-            "version": "==2020.6.20"
-        },
-        "cffi": {
-            "hashes": [
-                "sha256:005f2bfe11b6745d726dbb07ace4d53f057de66e336ff92d61b8c7e9c8f4777d",
-                "sha256:09e96138280241bd355cd585148dec04dbbedb4f46128f340d696eaafc82dd7b",
-                "sha256:0b1ad452cc824665ddc682400b62c9e4f5b64736a2ba99110712fdee5f2505c4",
-                "sha256:0ef488305fdce2580c8b2708f22d7785ae222d9825d3094ab073e22e93dfe51f",
-                "sha256:15f351bed09897fbda218e4db5a3d5c06328862f6198d4fb385f3e14e19decb3",
-                "sha256:22399ff4870fb4c7ef19fff6eeb20a8bbf15571913c181c78cb361024d574579",
-                "sha256:23e5d2040367322824605bc29ae8ee9175200b92cb5483ac7d466927a9b3d537",
-                "sha256:2791f68edc5749024b4722500e86303a10d342527e1e3bcac47f35fbd25b764e",
-                "sha256:2f9674623ca39c9ebe38afa3da402e9326c245f0f5ceff0623dccdac15023e05",
-                "sha256:3363e77a6176afb8823b6e06db78c46dbc4c7813b00a41300a4873b6ba63b171",
-                "sha256:33c6cdc071ba5cd6d96769c8969a0531be2d08c2628a0143a10a7dcffa9719ca",
-                "sha256:3b8eaf915ddc0709779889c472e553f0d3e8b7bdf62dab764c8921b09bf94522",
-                "sha256:3cb3e1b9ec43256c4e0f8d2837267a70b0e1ca8c4f456685508ae6106b1f504c",
-                "sha256:3eeeb0405fd145e714f7633a5173318bd88d8bbfc3dd0a5751f8c4f70ae629bc",
-                "sha256:44f60519595eaca110f248e5017363d751b12782a6f2bd6a7041cba275215f5d",
-                "sha256:4d7c26bfc1ea9f92084a1d75e11999e97b62d63128bcc90c3624d07813c52808",
-                "sha256:529c4ed2e10437c205f38f3691a68be66c39197d01062618c55f74294a4a4828",
-                "sha256:6642f15ad963b5092d65aed022d033c77763515fdc07095208f15d3563003869",
-                "sha256:85ba797e1de5b48aa5a8427b6ba62cf69607c18c5d4eb747604b7302f1ec382d",
-                "sha256:8f0f1e499e4000c4c347a124fa6a27d37608ced4fe9f7d45070563b7c4c370c9",
-                "sha256:a624fae282e81ad2e4871bdb767e2c914d0539708c0f078b5b355258293c98b0",
-                "sha256:b0358e6fefc74a16f745afa366acc89f979040e0cbc4eec55ab26ad1f6a9bfbc",
-                "sha256:bbd2f4dfee1079f76943767fce837ade3087b578aeb9f69aec7857d5bf25db15",
-                "sha256:bf39a9e19ce7298f1bd6a9758fa99707e9e5b1ebe5e90f2c3913a47bc548747c",
-                "sha256:c11579638288e53fc94ad60022ff1b67865363e730ee41ad5e6f0a17188b327a",
-                "sha256:c150eaa3dadbb2b5339675b88d4573c1be3cb6f2c33a6c83387e10cc0bf05bd3",
-                "sha256:c53af463f4a40de78c58b8b2710ade243c81cbca641e34debf3396a9640d6ec1",
-                "sha256:cb763ceceae04803adcc4e2d80d611ef201c73da32d8f2722e9d0ab0c7f10768",
-                "sha256:cc75f58cdaf043fe6a7a6c04b3b5a0e694c6a9e24050967747251fb80d7bce0d",
-                "sha256:d80998ed59176e8cba74028762fbd9b9153b9afc71ea118e63bbf5d4d0f9552b",
-                "sha256:de31b5164d44ef4943db155b3e8e17929707cac1e5bd2f363e67a56e3af4af6e",
-                "sha256:e66399cf0fc07de4dce4f588fc25bfe84a6d1285cc544e67987d22663393926d",
-                "sha256:f0620511387790860b249b9241c2f13c3a80e21a73e0b861a2df24e9d6f56730",
-                "sha256:f4eae045e6ab2bb54ca279733fe4eb85f1effda392666308250714e01907f394",
-                "sha256:f92cdecb618e5fa4658aeb97d5eb3d2f47aa94ac6477c6daf0f306c5a3b9e6b1",
-                "sha256:f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591"
-            ],
-            "version": "==1.14.3"
-        },
-        "chardet": {
-            "hashes": [
-                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
-                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
-            ],
-            "version": "==3.0.4"
+                "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee",
+                "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"
+            ],
+            "version": "==2021.5.30"
+        },
+        "charset-normalizer": {
+            "hashes": [
+                "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b",
+                "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"
+            ],
+            "markers": "python_version >= '3'",
+            "version": "==2.0.4"
         },
         "colorama": {
             "hashes": [
-                "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff",
-                "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"
+                "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b",
+                "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"
             ],
-            "version": "==0.4.3"
+            "markers": "sys_platform == 'win32' and platform_system == 'Windows'",
+            "version": "==0.4.4"
         },
         "commonmark": {
             "hashes": [
@@ -127,173 +115,184 @@
         },
         "coverage": {
             "hashes": [
-                "sha256:0203acd33d2298e19b57451ebb0bed0ab0c602e5cf5a818591b4918b1f97d516",
-                "sha256:0f313707cdecd5cd3e217fc68c78a960b616604b559e9ea60cc16795c4304259",
-                "sha256:1c6703094c81fa55b816f5ae542c6ffc625fec769f22b053adb42ad712d086c9",
-                "sha256:1d44bb3a652fed01f1f2c10d5477956116e9b391320c94d36c6bf13b088a1097",
-                "sha256:280baa8ec489c4f542f8940f9c4c2181f0306a8ee1a54eceba071a449fb870a0",
-                "sha256:29a6272fec10623fcbe158fdf9abc7a5fa032048ac1d8631f14b50fbfc10d17f",
-                "sha256:2b31f46bf7b31e6aa690d4c7a3d51bb262438c6dcb0d528adde446531d0d3bb7",
-                "sha256:2d43af2be93ffbad25dd959899b5b809618a496926146ce98ee0b23683f8c51c",
-                "sha256:381ead10b9b9af5f64646cd27107fb27b614ee7040bb1226f9c07ba96625cbb5",
-                "sha256:47a11bdbd8ada9b7ee628596f9d97fbd3851bd9999d398e9436bd67376dbece7",
-                "sha256:4d6a42744139a7fa5b46a264874a781e8694bb32f1d76d8137b68138686f1729",
-                "sha256:50691e744714856f03a86df3e2bff847c2acede4c191f9a1da38f088df342978",
-                "sha256:530cc8aaf11cc2ac7430f3614b04645662ef20c348dce4167c22d99bec3480e9",
-                "sha256:582ddfbe712025448206a5bc45855d16c2e491c2dd102ee9a2841418ac1c629f",
-                "sha256:63808c30b41f3bbf65e29f7280bf793c79f54fb807057de7e5238ffc7cc4d7b9",
-                "sha256:71b69bd716698fa62cd97137d6f2fdf49f534decb23a2c6fc80813e8b7be6822",
-                "sha256:7858847f2d84bf6e64c7f66498e851c54de8ea06a6f96a32a1d192d846734418",
-                "sha256:78e93cc3571fd928a39c0b26767c986188a4118edc67bc0695bc7a284da22e82",
-                "sha256:7f43286f13d91a34fadf61ae252a51a130223c52bfefb50310d5b2deb062cf0f",
-                "sha256:86e9f8cd4b0cdd57b4ae71a9c186717daa4c5a99f3238a8723f416256e0b064d",
-                "sha256:8f264ba2701b8c9f815b272ad568d555ef98dfe1576802ab3149c3629a9f2221",
-                "sha256:9342dd70a1e151684727c9c91ea003b2fb33523bf19385d4554f7897ca0141d4",
-                "sha256:9361de40701666b034c59ad9e317bae95c973b9ff92513dd0eced11c6adf2e21",
-                "sha256:9669179786254a2e7e57f0ecf224e978471491d660aaca833f845b72a2df3709",
-                "sha256:aac1ba0a253e17889550ddb1b60a2063f7474155465577caa2a3b131224cfd54",
-                "sha256:aef72eae10b5e3116bac6957de1df4d75909fc76d1499a53fb6387434b6bcd8d",
-                "sha256:bd3166bb3b111e76a4f8e2980fa1addf2920a4ca9b2b8ca36a3bc3dedc618270",
-                "sha256:c1b78fb9700fc961f53386ad2fd86d87091e06ede5d118b8a50dea285a071c24",
-                "sha256:c3888a051226e676e383de03bf49eb633cd39fc829516e5334e69b8d81aae751",
-                "sha256:c5f17ad25d2c1286436761b462e22b5020d83316f8e8fcb5deb2b3151f8f1d3a",
-                "sha256:c851b35fc078389bc16b915a0a7c1d5923e12e2c5aeec58c52f4aa8085ac8237",
-                "sha256:cb7df71de0af56000115eafd000b867d1261f786b5eebd88a0ca6360cccfaca7",
-                "sha256:cedb2f9e1f990918ea061f28a0f0077a07702e3819602d3507e2ff98c8d20636",
-                "sha256:e8caf961e1b1a945db76f1b5fa9c91498d15f545ac0ababbe575cfab185d3bd8"
+                "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"
             ],
             "index": "pypi",
-            "version": "==5.3"
-        },
-        "cryptography": {
-            "hashes": [
-                "sha256:21b47c59fcb1c36f1113f3709d37935368e34815ea1d7073862e92f810dc7499",
-                "sha256:451cdf60be4dafb6a3b78802006a020e6cd709c22d240f94f7a0696240a17154",
-                "sha256:4549b137d8cbe3c2eadfa56c0c858b78acbeff956bd461e40000b2164d9167c6",
-                "sha256:48ee615a779ffa749d7d50c291761dc921d93d7cf203dca2db663b4f193f0e49",
-                "sha256:559d622aef2a2dff98a892eef321433ba5bc55b2485220a8ca289c1ecc2bd54f",
-                "sha256:5d52c72449bb02dd45a773a203196e6d4fae34e158769c896012401f33064396",
-                "sha256:65beb15e7f9c16e15934569d29fb4def74ea1469d8781f6b3507ab896d6d8719",
-                "sha256:680da076cad81cdf5ffcac50c477b6790be81768d30f9da9e01960c4b18a66db",
-                "sha256:762bc5a0df03c51ee3f09c621e1cee64e3a079a2b5020de82f1613873d79ee70",
-                "sha256:89aceb31cd5f9fc2449fe8cf3810797ca52b65f1489002d58fe190bfb265c536",
-                "sha256:983c0c3de4cb9fcba68fd3f45ed846eb86a2a8b8d8bc5bb18364c4d00b3c61fe",
-                "sha256:99d4984aabd4c7182050bca76176ce2dbc9fa9748afe583a7865c12954d714ba",
-                "sha256:9d9fc6a16357965d282dd4ab6531013935425d0dc4950df2e0cf2a1b1ac1017d",
-                "sha256:a7597ffc67987b37b12e09c029bd1dc43965f75d328076ae85721b84046e9ca7",
-                "sha256:ab010e461bb6b444eaf7f8c813bb716be2d78ab786103f9608ffd37a4bd7d490",
-                "sha256:b12e715c10a13ca1bd27fbceed9adc8c5ff640f8e1f7ea76416352de703523c8",
-                "sha256:b2bded09c578d19e08bd2c5bb8fed7f103e089752c9cf7ca7ca7de522326e921",
-                "sha256:b372026ebf32fe2523159f27d9f0e9f485092e43b00a5adacf732192a70ba118",
-                "sha256:cb179acdd4ae1e4a5a160d80b87841b3d0e0be84af46c7bb2cd7ece57a39c4ba",
-                "sha256:e97a3b627e3cb63c415a16245d6cef2139cca18bb1183d1b9375a1c14e83f3b3",
-                "sha256:f0e099fc4cc697450c3dd4031791559692dd941a95254cb9aeded66a7aa8b9bc",
-                "sha256:f99317a0fa2e49917689b8cf977510addcfaaab769b3f899b9c481bbd76730c2"
-            ],
-            "version": "==3.1.1"
+            "version": "==5.5"
         },
         "docutils": {
             "hashes": [
                 "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af",
                 "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"
             ],
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
             "version": "==0.16"
         },
         "idna": {
             "hashes": [
-                "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
-                "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
+                "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a",
+                "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"
             ],
-            "version": "==2.10"
+            "markers": "python_version >= '3'",
+            "version": "==3.2"
         },
         "imagesize": {
             "hashes": [
                 "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1",
                 "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"
             ],
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
             "version": "==1.2.0"
         },
         "importlib-metadata": {
             "hashes": [
-                "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da",
-                "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"
+                "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15",
+                "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"
             ],
             "markers": "python_version < '3.8'",
-            "version": "==2.0.0"
-        },
-        "jeepney": {
-            "hashes": [
-                "sha256:3479b861cc2b6407de5188695fa1a8d57e5072d7059322469b62628869b8e36e",
-                "sha256:d6c6b49683446d2407d2fe3acb7a368a77ff063f9182fe427da15d622adc24cf"
-            ],
-            "markers": "sys_platform == 'linux'",
-            "version": "==0.4.3"
+            "version": "==4.8.1"
         },
         "jinja2": {
             "hashes": [
-                "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0",
-                "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
+                "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4",
+                "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"
             ],
-            "version": "==2.11.2"
+            "markers": "python_version >= '3.6'",
+            "version": "==3.0.1"
         },
         "keyring": {
             "hashes": [
-                "sha256:4e34ea2fdec90c1c43d6610b5a5fafa1b9097db1802948e90caf5763974b8f8d",
-                "sha256:9aeadd006a852b78f4b4ef7c7556c2774d2432bbef8ee538a3e9089ac8b11466"
+                "sha256:b32397fd7e7063f8dd74a26db910c9862fc2109285fa16e3b5208bcb42a3e579",
+                "sha256:b7e0156667f5dcc73c1f63a518005cd18a4eb23fe77321194fefcc03748b21a4"
             ],
-            "version": "==21.4.0"
+            "markers": "python_version >= '3.6'",
+            "version": "==23.1.0"
         },
         "markupsafe": {
             "hashes": [
-                "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
-                "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
-                "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
-                "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
-                "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
-                "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
-                "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
-                "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
-                "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
-                "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
-                "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
-                "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
-                "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
-                "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
-                "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
-                "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
-                "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
-                "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
-                "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
-                "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
-                "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
-                "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
-                "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
-                "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
-                "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
-                "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
-                "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
-                "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
-                "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
-                "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
-                "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
-                "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
-                "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
-            ],
-            "version": "==1.1.1"
+                "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298",
+                "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64",
+                "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b",
+                "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567",
+                "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff",
+                "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724",
+                "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74",
+                "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646",
+                "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35",
+                "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6",
+                "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6",
+                "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad",
+                "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26",
+                "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38",
+                "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac",
+                "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7",
+                "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6",
+                "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75",
+                "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f",
+                "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135",
+                "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8",
+                "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a",
+                "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a",
+                "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9",
+                "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864",
+                "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914",
+                "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18",
+                "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8",
+                "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2",
+                "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d",
+                "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b",
+                "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b",
+                "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f",
+                "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb",
+                "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833",
+                "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28",
+                "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415",
+                "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902",
+                "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d",
+                "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9",
+                "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d",
+                "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145",
+                "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066",
+                "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c",
+                "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1",
+                "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f",
+                "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53",
+                "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134",
+                "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85",
+                "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5",
+                "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94",
+                "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509",
+                "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51",
+                "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"
+            ],
+            "markers": "python_version >= '3.6'",
+            "version": "==2.0.1"
         },
         "packaging": {
             "hashes": [
-                "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8",
-                "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"
+                "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7",
+                "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"
             ],
-            "version": "==20.4"
+            "markers": "python_version >= '3.6'",
+            "version": "==21.0"
         },
         "pkginfo": {
             "hashes": [
-                "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb",
-                "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"
+                "sha256:37ecd857b47e5f55949c41ed061eb51a0bee97a87c969219d144c0e023982779",
+                "sha256:e7432f81d08adec7297633191bbf0bd47faf13cd8724c3a13250e51d542635bd"
             ],
-            "version": "==1.5.0.1"
+            "version": "==1.7.1"
         },
         "pockets": {
             "hashes": [
@@ -302,61 +301,66 @@
             ],
             "version": "==0.9.1"
         },
-        "pycparser": {
-            "hashes": [
-                "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0",
-                "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"
-            ],
-            "version": "==2.20"
-        },
         "pygments": {
             "hashes": [
-                "sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998",
-                "sha256:926c3f319eda178d1bd90851e4317e6d8cdb5e292a3386aac9bd75eca29cf9c7"
+                "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380",
+                "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"
             ],
-            "version": "==2.7.1"
+            "markers": "python_version >= '3.5'",
+            "version": "==2.10.0"
         },
         "pyparsing": {
             "hashes": [
                 "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
                 "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
             ],
+            "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
             "version": "==2.4.7"
         },
         "python-docs-theme": {
             "hashes": [
-                "sha256:29c33ba393bdb9377910116a0c1cc329573a4e040227c58a3293d27928d8262a"
+                "sha256:7bc3032bdb7e8c20ecb4341ab7744942d6e482d1072e48f74b795cd032ead0d8",
+                "sha256:dd77991918b2bde9750187a0c05adc626efaa343dc3e5b88bfec865b16c853f3"
             ],
             "index": "pypi",
-            "version": "==2020.1"
+            "version": "==2021.8"
         },
         "pytz": {
             "hashes": [
-                "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed",
-                "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"
+                "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da",
+                "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"
+            ],
+            "version": "==2021.1"
+        },
+        "pywin32-ctypes": {
+            "hashes": [
+                "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942",
+                "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"
             ],
-            "version": "==2020.1"
+            "markers": "sys_platform == 'win32'",
+            "version": "==0.2.0"
         },
         "readme-renderer": {
             "hashes": [
-                "sha256:cbe9db71defedd2428a1589cdc545f9bd98e59297449f69d721ef8f1cfced68d",
-                "sha256:cc4957a803106e820d05d14f71033092537a22daa4f406dfbdd61177e0936376"
+                "sha256:63b4075c6698fcfa78e584930f07f39e05d46f3ec97f65006e430b595ca6348c",
+                "sha256:92fd5ac2bf8677f310f3303aa4bce5b9d5f9f2094ab98c29f13791d7b805a3db"
             ],
-            "version": "==26.0"
+            "version": "==29.0"
         },
         "recommonmark": {
             "hashes": [
-                "sha256:29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb",
-                "sha256:2ec4207a574289355d5b6ae4ae4abb29043346ca12cdd5f07d374dc5987d2852"
+                "sha256:1b1db69af0231efce3fa21b94ff627ea33dee7079a01dd0a7f8482c3da148b3f",
+                "sha256:bdb4db649f2222dcd8d2d844f0006b958d627f732415d399791ee436a3686d67"
             ],
-            "version": "==0.6.0"
+            "version": "==0.7.1"
         },
         "requests": {
             "hashes": [
-                "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
-                "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
+                "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24",
+                "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"
             ],
-            "version": "==2.24.0"
+            "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"
         },
         "requests-toolbelt": {
             "hashes": [
@@ -367,17 +371,17 @@
         },
         "rfc3986": {
             "hashes": [
-                "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d",
-                "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50"
+                "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835",
+                "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"
             ],
-            "version": "==1.4.0"
+            "version": "==1.5.0"
         },
         "rinoh-typeface-dejavuserif": {
             "hashes": [
-                "sha256:6198fbcb412688239d9a9e79440f716a555ef5d160536c0846a0bda8e62a0cf3",
-                "sha256:ff0b236bdd69ef36c14887ac5078bbf1f14ae1ca403fc81b5426ba0bdfb13bea"
+                "sha256:35ba67bf25e526b4b8180dc31d8fa2ff9b594d924e8790e8074699cd2f0e7da8",
+                "sha256:8be129230ac98ab2ebfbf5b570575052ba7069e4087ce36a2d4c1d85182833ce"
             ],
-            "version": "==0.1.1"
+            "version": "==0.1.3"
         },
         "rinoh-typeface-texgyrecursor": {
             "hashes": [
@@ -402,47 +406,49 @@
         },
         "rinohtype": {
             "hashes": [
-                "sha256:a7548d12ea4ad3bc398fbfc166f05d272805b3ae5144b4afc257dac26a809685",
-                "sha256:bbab8f0b43caa4b01afc5304a1080d28eb9b801ca2223c4a79940025b3682584"
+                "sha256:7b4dea40df49a7f623ad0382b3802cb72a7e72d0e30facba135cd86b977b5762",
+                "sha256:8bd4f0dd188026ede65286eab4bcfb3bffc594fe4bca7cf1f0125ccd35ff995a"
             ],
             "index": "pypi",
-            "version": "==0.4.2"
-        },
-        "secretstorage": {
-            "hashes": [
-                "sha256:15da8a989b65498e29be338b3b279965f1b8f09b9668bd8010da183024c8bff6",
-                "sha256:b5ec909dde94d4ae2fa26af7c089036997030f0cf0a5cb372b4cccabd81c143b"
-            ],
-            "markers": "sys_platform == 'linux'",
-            "version": "==3.1.2"
+            "version": "==0.5.3"
         },
         "six": {
             "hashes": [
-                "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
-                "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
+                "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
+                "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
             ],
-            "version": "==1.15.0"
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+            "version": "==1.16.0"
         },
         "snowballstemmer": {
             "hashes": [
-                "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0",
-                "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"
+                "sha256:b51b447bea85f9968c13b650126a888aabd4cb4463fca868ec596826325dedc2",
+                "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914"
             ],
-            "version": "==2.0.0"
+            "version": "==2.1.0"
         },
         "sphinx": {
             "hashes": [
-                "sha256:321d6d9b16fa381a5306e5a0b76cd48ffbc588e6340059a729c6fdd66087e0e8",
-                "sha256:ce6fd7ff5b215af39e2fcd44d4a321f6694b4530b6f2b2109b64d120773faea0"
+                "sha256:3092d929cd807926d846018f2ace47ba2f3b671b309c7a89cd3306e80c826b13",
+                "sha256:46d52c6cee13fec44744b8c01ed692c18a640f6910a725cbb938bc36e8d64544"
+            ],
+            "index": "pypi",
+            "version": "==4.1.2"
+        },
+        "sphinx-rtd-theme": {
+            "hashes": [
+                "sha256:32bd3b5d13dc8186d7a42fc816a23d32e83a4827d7d9882948e7b837c232da5a",
+                "sha256:4a05bdbe8b1446d77a01e20a23ebc6777c74f43237035e76be89699308987d6f"
             ],
             "index": "pypi",
-            "version": "==3.2.1"
+            "version": "==0.5.2"
         },
         "sphinxcontrib-applehelp": {
             "hashes": [
                 "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a",
                 "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"
             ],
+            "markers": "python_version >= '3.5'",
             "version": "==1.0.2"
         },
         "sphinxcontrib-devhelp": {
@@ -450,20 +456,23 @@
                 "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e",
                 "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"
             ],
+            "markers": "python_version >= '3.5'",
             "version": "==1.0.2"
         },
         "sphinxcontrib-htmlhelp": {
             "hashes": [
-                "sha256:3c0bc24a2c41e340ac37c85ced6dafc879ab485c095b1d65d2461ac2f7cca86f",
-                "sha256:e8f5bb7e31b2dbb25b9cc435c8ab7a79787ebf7f906155729338f3156d93659b"
+                "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07",
+                "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"
             ],
-            "version": "==1.0.3"
+            "markers": "python_version >= '3.6'",
+            "version": "==2.0.0"
         },
         "sphinxcontrib-jsmath": {
             "hashes": [
                 "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178",
                 "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"
             ],
+            "markers": "python_version >= '3.5'",
             "version": "==1.0.1"
         },
         "sphinxcontrib-napoleon": {
@@ -479,36 +488,49 @@
                 "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72",
                 "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"
             ],
+            "markers": "python_version >= '3.5'",
             "version": "==1.0.3"
         },
         "sphinxcontrib-serializinghtml": {
             "hashes": [
-                "sha256:eaa0eccc86e982a9b939b2b82d12cc5d013385ba5eadcc7e4fed23f4405f77bc",
-                "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"
+                "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd",
+                "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"
             ],
-            "version": "==1.1.4"
+            "markers": "python_version >= '3.5'",
+            "version": "==1.1.5"
         },
         "tqdm": {
             "hashes": [
-                "sha256:2dd75fdb764f673b8187643496fcfbeac38348015b665878e582b152f3391cdb",
-                "sha256:93b7a6a9129fce904f6df4cf3ae7ff431d779be681a95c3344c26f3e6c09abfa"
+                "sha256:80aead664e6c1672c4ae20dc50e1cdc5e20eeff9b14aa23ecd426375b28be588",
+                "sha256:a4d6d112e507ef98513ac119ead1159d286deab17dffedd96921412c2d236ff5"
             ],
-            "version": "==4.50.0"
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+            "version": "==4.62.2"
         },
         "twine": {
             "hashes": [
-                "sha256:34352fd52ec3b9d29837e6072d5a2a7c6fe4290e97bba46bb8d478b5c598f7ab",
-                "sha256:ba9ff477b8d6de0c89dd450e70b2185da190514e91c42cc62f96850025c10472"
+                "sha256:087328e9bb405e7ce18527a2dca4042a84c7918658f951110b38bc135acab218",
+                "sha256:4caec0f1ed78dc4c9b83ad537e453d03ce485725f2aea57f1bb3fdde78dae936"
             ],
             "index": "pypi",
-            "version": "==3.2.0"
+            "version": "==3.4.2"
+        },
+        "typing-extensions": {
+            "hashes": [
+                "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e",
+                "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7",
+                "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"
+            ],
+            "markers": "python_version < '3.8'",
+            "version": "==3.10.0.2"
         },
         "urllib3": {
             "hashes": [
-                "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a",
-                "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"
+                "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4",
+                "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"
             ],
-            "version": "==1.25.10"
+            "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.6"
         },
         "webencodings": {
             "hashes": [
@@ -519,10 +541,11 @@
         },
         "zipp": {
             "hashes": [
-                "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6",
-                "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f"
+                "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3",
+                "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"
             ],
-            "version": "==3.2.0"
+            "markers": "python_version >= '3.6'",
+            "version": "==3.5.0"
         }
     }
 }
diff --git a/deploy.py b/deploy.py
index 7c011c0..31eb8aa 100644
--- a/deploy.py
+++ b/deploy.py
@@ -5,6 +5,11 @@
 import sys
 from twine.commands import upload
 import json
+import ftplib
+import glob
+from pathlib import Path
+
+_project_name = 'pickle_rick'
 
 class bcolors:
     HEADER = '\033[95m'
@@ -31,8 +36,8 @@ def upload_to_pypi(release_name):
         release_name = version_name
 
     release_name = release_name.replace("-", "_")
-    local_file = f"dist/pickle_rick-{version_name}.tar.gz"
-    remote_file = f"pickle_rick-{release_name}.tar.gz"
+    local_file = f"dist/{_project_name}-{version_name}.tar.gz"
+    remote_file = f"{_project_name}-{release_name}.tar.gz"
 
     os.mkdir('deploy')
     shutil.copy(local_file, f"deploy/{remote_file}")
@@ -49,7 +54,7 @@ def build_documentation():
     if sys.platform == "win32":
         os.system('make.bat html')
     else:
-        os.system('make.bat html')
+        os.system('make html')
     os.chdir('..')
     print(f'{bcolors.UNDERLINE}-- Made docs, change dir{bcolors.ENDC}')
 
@@ -57,6 +62,26 @@ def lock_and_gen_pipreq():
     print(f'{bcolors.UNDERLINE}{bcolors.BOLD}{bcolors.HEADER}-- Locking Pipfile.lock and generating requirements.txt{bcolors.ENDC}')
     os.system("pipenv lock -r > requirements.txt")
 
+def upload_docs_via_ftp():
+    print(f'{bcolors.UNDERLINE}{bcolors.BOLD}{bcolors.HEADER}-- Upload documentation to FTP server! {bcolors.ENDC}')
+    try:
+        with ftplib.FTP(os.getenv('FTP_HOST'), os.getenv('FTP_USERNAME'), os.getenv('FTP_PASSWORD')) as ftp:
+            ftp.cwd(os.getenv('FTP_DIRECTORY'))
+
+            for f in glob.glob('./docs/build/html/*'):
+                if os.path.isfile(f):
+                    with open(f, 'rb') as _f:
+                        file_path = Path(f)
+                        try:
+                            ftp.storlines(f'STOR {file_path.name}', _f)
+                            print(f"{bcolors.OKBLUE}Uploaded: {file_path.name}{bcolors.ENDC}")
+                        except Exception as exc:
+                            print(f"{bcolors.FAIL}{bcolors.BOLD}-- ERROR: {f} {str(exc)}!{bcolors.ENDC}")
+    except Exception as exc:
+        print(f"{bcolors.FAIL}{bcolors.BOLD}-- ERROR: {f} {str(exc)}!{bcolors.ENDC}")
+        return
+
+    print(f'{bcolors.UNDERLINE}-- Docs uploaded! {bcolors.ENDC}')
 
 def build_wheel():
     print(f'{bcolors.UNDERLINE}{bcolors.BOLD}{bcolors.HEADER}-- Deleting artefacts and building wheel{bcolors.ENDC}')
@@ -67,11 +92,11 @@ def build_wheel():
 def delete_build():
     if sys.platform == "win32":
         os.system("RMDIR build /s /q")
-        os.system("RMDIR pickle_rick.egg-info /s /q")
+        os.system(f"RMDIR {_project_name}.egg-info /s /q")
 
     else:
         os.system("rm -rf build")
-        os.system("rm -rf pickle_rick.egg-info" )
+        os.system(f"rm -rf {_project_name}.egg-info" )
 
 
 def delete_dist():
@@ -108,7 +133,8 @@ def main(args):
     if args.pipreq:
         lock_and_gen_pipreq()
 
-    build_wheel()
+    if args.build or args.deploy:
+        build_wheel()
 
     if args.deploy:
         upload_to_pypi(args.remotename)
@@ -116,41 +142,52 @@ def main(args):
     if args.sphinx:
         build_documentation()
 
+    if args.ftp:
+        upload_docs_via_ftp()
+
     if args.remove:
         delete_build()
         delete_dist()
 
-    # All went well!
-    with open("version.json", "r") as f:
-        version = json.load(f)
-
-    version['patch'] += 1
-    with open("version.json", "w") as f:
-        json.dump(version, f)
+    if args.deploy:
+        # All went well!
+        with open("version.json", "r") as f:
+            version = json.load(f)
 
-    with open("pickle_rick/__init__.py", "r") as f:
-        lines = f.readlines()
-        lines[0] = "__version__ = '{major}.{minor}.{patch}'\n".format(**version)
-    if lines:
-        with open("pickle_rick/__init__.py", "w") as f:
-            f.writelines(lines)
+        version['patch'] += 1
+        with open("version.json", "w") as f:
+            json.dump(version, f)
 
+        with open(f"{_project_name}/__init__.py", "r") as f:
+            lines = f.readlines()
+            lines[0] = "__version__ = '{major}.{minor}.{patch}'\n".format(**version)
+        if lines:
+            with open(f"{_project_name}/__init__.py", "w") as f:
+                f.writelines(lines)
 
+        print(f"{bcolors.OKGREEN}{bcolors.BOLD}-- Version number bumped to {version}!{bcolors.ENDC}")
 
 
 if __name__ == "__main__":
     parser = argparse.ArgumentParser(
         formatter_class=argparse.RawDescriptionHelpFormatter,
-        description="""
-        Builds Pickle Rick package, runs tests, builds docs, and deploys to PyPi.
+        description=f"""
+        Builds {_project_name} libs package, runs tests, builds docs, and deploys to PyPi.
         """,
     )
+    parser.add_argument(
+        "--build",
+        "-b",
+        help="Build wheel, not required if -d is used",
+        action="store_true",
+        default=False
+    )
     parser.add_argument(
         "--remove",
         "-r",
         help="Removes build artifacts",
         action="store_true",
-        default=False
+        default=True
     )
     parser.add_argument(
         "--unit",
@@ -193,4 +230,11 @@ def main(args):
         help="Builds the sphinx documentation",
         action="store_true",
     )
+    parser.add_argument(
+        "--ftp",
+        "-f",
+        help="Uploads the generated documentation via FTP",
+        action="store_true",
+    )
+
     main(parser.parse_args())
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
new file mode 100644
index 0000000..28c0ec5
--- /dev/null
+++ b/docs/source/changelog.rst
@@ -0,0 +1,26 @@
+.. Natural Selection documentation master file, created by
+   sphinx-quickstart on Tue Sep 22 22:57:54 2020.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+.. _changelog-page:
+
+Changelog
+**************************
+
+History
+==========================
+
+Version 0.1.12 (2021-09-23)
+--------------------------
+
+* Fixed major bug, YAML was not loaded!
+* Adding preload arguments for load and replace values within YAML files using ``_|PARAM|_``
+* Added new API JSON call method, to load and create a Rick from an API response ``add_api_json_call``.
+* Added new ability to load other YAML, JSON, or text files from within, using ``add_from_file``.
+* Added ``add_base64`` to load base 64 encoded data.
+
+Version 0.1.11 (2021-09-09)
+--------------------------
+
+* Fixed bug in ``get`` for finding values.
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 04b3564..16badb7 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -24,7 +24,7 @@
 # -- Project information -----------------------------------------------------
 
 project = 'Pickle Rick'
-copyright = '2020, Zipfian Science'
+copyright = '2021, Zipfian Science'
 author = 'Zipfian Science'
 
 # The full version, including alpha/beta/rc tags
@@ -43,6 +43,7 @@
 extensions = ['sphinxcontrib.napoleon',
               'sphinx.ext.todo',
               'sphinx.ext.githubpages',
+              'sphinx.ext.autosectionlabel'
               ]
 
 # Add any paths that contain templates here, relative to this directory.
@@ -59,7 +60,7 @@
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
-html_theme = 'python_docs_theme'
+html_theme = 'sphinx_rtd_theme'
 # html_theme ='alabaster'
 
 # Add any paths that contain custom static files (such as style sheets) here,
diff --git a/docs/source/index.rst b/docs/source/index.rst
index c4fcf7d..d25382a 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -7,6 +7,7 @@ Pickle Rick
 **************************
 .. toctree::
    :maxdepth: 2
+   :numbered:
    :caption: Contents:
 
    pickle_rick
@@ -94,3 +95,16 @@ About
 =====================
 
 Pickle Rick is quick to use tool mainly meant to easily encapsulate config YAML files in other Zipfian Science tools.
+
+Changes and history
+---------------------
+
+See :ref:`changelog-page` for version history.
+
+Version 0.1.12 (2021-09-23)
+
+* Fixed major bug, YAML was not loaded!
+* Adding preload arguments for load and replace values within YAML files using ``_|PARAM|_``
+* Added new API JSON call method, to load and create a Rick from an API response ``add_api_json_call``.
+* Added new ability to load other YAML, JSON, or text files from within, using ``add_from_file``.
+* Added ``add_base64`` to load base 64 encoded data.
diff --git a/pickle_rick/__init__.py b/pickle_rick/__init__.py
index ae6d19e..d8a0c6d 100644
--- a/pickle_rick/__init__.py
+++ b/pickle_rick/__init__.py
@@ -1,12 +1,12 @@
-__version__ = '0.1.10'
-try:
-    import yaml
-except ImportError as ex:
-    print('The following module needs to be imported: pyyaml')
+__version__ = '0.1.13'
 import os
 import json
+import copy
 from typing import Union
 from io import TextIOWrapper
+import yaml
+import requests
+import base64
 
 class BasicRick:
     """
@@ -15,21 +15,20 @@ class BasicRick:
         Args:
             base (str): String (YAML or JSON, file path to YAML/JSON file), text IO stream, dict (default = None).
             deep (bool): Internalize dictionary structures in lists (default = False).
-            args (dict): Intended for extended classes to handle overriden _internalize customisation (default = None).
 
         Raises:
             ValueError: If the given base object can not be handled.
     """
-    def _iternalize(self, dictionary : dict, deep : bool, args : dict = None):
+    def _iternalize(self, dictionary : dict, deep : bool, **init_args):
         for k, v in dictionary.items():
             if isinstance(v, dict):
-                self.__dict__.update({k:BasicRick(v, deep)})
+                self.__dict__.update({k:BasicRick(v, deep, **init_args)})
                 continue
             if isinstance(v, list) and deep:
                 new_list = list()
                 for i in v:
                     if isinstance(i, dict):
-                        new_list.append(BasicRick(i, deep))
+                        new_list.append(BasicRick(i, deep, **init_args))
                     else:
                         new_list.append(i)
                 self.__dict__.update({k: new_list})
@@ -37,53 +36,39 @@ def _iternalize(self, dictionary : dict, deep : bool, args : dict = None):
 
             self.__dict__.update({k:v})
 
-    def __init__(self, base : Union[dict,str,TextIOWrapper] = None, deep : bool = False, args : dict = None):
+    def __init__(self, base : Union[dict,str,TextIOWrapper] = None, deep : bool = False, **init_args):
+        stringed = ''
         if base is None:
             return
         if isinstance(base, dict):
-            self._iternalize(base, deep, args)
+            self._iternalize(base, deep, **init_args)
             return
 
         if isinstance(base, TextIOWrapper):
-            try:
-                dict_data = yaml.load(base, Loader=yaml.SafeLoader)
-                self._iternalize(dict_data, deep, args)
-                return
-            except Exception as exc:
-                print("Tried: {}".format(exc))
-            try:
-                dict_data = json.load(base)
-                self._iternalize(dict_data, deep, args)
-                return
-            except Exception as exc:
-                print("Tried: {}".format(exc))
-
-        if os.path.isfile(base):
-            try:
-                dict_data = yaml.load(open(base, 'r'), Loader=yaml.SafeLoader)
-                self._iternalize(dict_data, deep, args)
-                return
-            except Exception as exc:
-                print("Tried: {}".format(exc))
-            try:
-                dict_data = json.load(open(base, 'r'))
-                self._iternalize(dict_data, deep, args)
-                return
-            except Exception as exc:
-                print("Tried: {}".format(exc))
-        if isinstance(base, str):
-            try:
-                dict_data = yaml.safe_load(base)
-                self._iternalize(dict_data, deep, args)
-                return
-            except Exception as exc:
-                print("Tried: {}".format(exc))
-            try:
-                dict_data = json.loads(base)
-                self._iternalize(dict_data, deep, args)
-                return
-            except Exception as exc:
-                print("Tried: {}".format(exc))
+            stringed = base.read()
+        elif os.path.isfile(base):
+            with open(base, 'r') as f:
+                stringed = f.read()
+        elif isinstance(base, str):
+            stringed = base
+
+        if not init_args is None:
+            for k, v in init_args.items():
+                _k = f'_|{k}|_'
+                stringed = stringed.replace(_k,json.dumps(v))
+
+        try:
+            dict_data = yaml.safe_load(stringed)
+            self._iternalize(dict_data, deep, **init_args)
+            return
+        except Exception as exc:
+            print("Tried YAML: {}".format(exc))
+        try:
+            dict_data = json.loads(base)
+            self._iternalize(dict_data, deep, **init_args)
+            return
+        except Exception as exc:
+            print("Tried JSON: {}".format(exc))
 
         raise ValueError('Base object could not be internalized, type {} not handled'.format(type(base)))
 
@@ -109,10 +94,16 @@ def __iter__(self):
         return self
 
     def __next__(self):
+        current_loop = 0
         if self.__n < len(self.__dict__):
             name = list(self.__dict__.keys())[self.__n]
-            if str(name).__contains__(self.__class__.__name__) or str(name).endswith('__n'):
+            while (str(name).__contains__(self.__class__.__name__) or str(name).endswith('__n')) and (current_loop < 9):
                 self.__n += 1
+                current_loop += 1
+                if self.__n < len(self.__dict__):
+                    name = list(self.__dict__.keys())[self.__n]
+                else:
+                    raise StopIteration
             if self.__n < len(self.__dict__):
                 obj = self.__dict__[list(self.__dict__.keys())[self.__n]]
                 self.__n += 1
@@ -127,13 +118,18 @@ def _recursive_search(self, dictionary, key):
             return dictionary[key]
         for k, v in dictionary.items():
             if isinstance(v, BasicRick):
-                value = self._recursive_search(v.__dict__, key)
-                if value:
+                try:
+                    value = self._recursive_search(v.__dict__, key)
                     return value
+                except StopIteration:
+                    continue
             if isinstance(v, dict):
-                value = self._recursive_search(v, key)
-                if value:
+                try:
+                    value = self._recursive_search(v, key)
                     return value
+                except StopIteration:
+                    continue
+        raise StopIteration
 
     def items(self):
         """
@@ -150,7 +146,6 @@ def items(self):
     def get(self, key : str, default=None):
         """
         Employs a recursive search of structure and returns the first found key-value pair.
-        Searches with normal, upper, and lower case.
 
         Args:
             key (str): key string being searched.
@@ -159,14 +154,11 @@ def get(self, key : str, default=None):
         Returns:
             obj: value found, or None for nothing found.
         """
-        value = self._recursive_search(self.__dict__, key)
-        if not value:
-            value = self._recursive_search(self.__dict__, key.lower())
-            if not value:
-                value = self._recursive_search(self.__dict__, key.upper())
-        if not value:
+        try:
+            value = self._recursive_search(self.__dict__, key)
+            return value
+        except StopIteration:
             return default
-        return value
 
     def values(self):
         """
@@ -192,10 +184,16 @@ def keys(self):
 
         return keys
 
-    def dict(self):
+    def dict(self, serialised : bool = False):
         """
         Deconstructs the whole object into a Python dictionary.
 
+        Args:
+            serialised (bool): Give a Python dictionary in serialised (True) form or deserialised (default = False).
+
+        Notes:
+            Functions and lambdas are always given in serialised form.
+
         Returns:
             dict: of object.
         """
@@ -204,12 +202,12 @@ def dict(self):
             if str(key).__contains__(self.__class__.__name__) or str(key).endswith('__meta_info'):
                 continue
             if isinstance(value, BasicRick) or isinstance(value, PickleRick):
-                d[key] = value.dict()
+                d[key] = value.dict(serialised=serialised)
             elif isinstance(value, list):
                 new_list = list()
                 for element in value:
                     if isinstance(element, BasicRick):
-                        new_list.append(element.dict())
+                        new_list.append(element.dict(serialised=serialised))
                     else:
                         new_list.append(element)
                 d[key] = new_list
@@ -231,51 +229,73 @@ def has(self, key : str, deep=False) -> bool:
         if key in self.__dict__:
             return True
         if deep:
-            value = self._recursive_search(self.__dict__, key)
-            if value:
+            try:
+                self._recursive_search(self.__dict__, key)
                 return True
+            except StopIteration:
+                return False
         return False
 
-    def to_yaml_file(self, file_path : str):
+    def to_yaml_file(self, file_path : str, serialised : bool = True):
         """
         Does a self dump to a YAML file.
 
         Args:
             file_path (str): File path.
+            serialised (bool): Give a Python dictionary in serialised (True) form or deserialised (default = True).
+
+        Notes:
+            Functions and lambdas are always given in serialised form.
         """
-        self_as_dict = self.dict()
+        self_as_dict = self.dict(serialised=serialised)
         with open(file_path, 'w', encoding='utf-8') as fs:
             yaml.safe_dump(self_as_dict, fs)
 
-    def to_yaml_string(self):
+    def to_yaml_string(self, serialised : bool = True):
         """
         Dumps self to YAML string.
 
+        Args:
+            serialised (bool): Give a Python dictionary in serialised (True) form or deserialised (default = True).
+
+        Notes:
+            Functions and lambdas are always given in serialised form.
+
         Returns:
             str: YAML representation.
         """
-        self_as_dict = self.dict()
+        self_as_dict = self.dict(serialised=serialised)
         return yaml.safe_dump(self_as_dict, None)
 
-    def to_json_file(self, file_path: str):
+    def to_json_file(self, file_path: str, serialised : bool = True):
         """
         Does a self dump to a JSON file.
 
         Args:
             file_path (str): File path.
+            serialised (bool): Give a Python dictionary in serialised (True) form or deserialised (default = True).
+
+        Notes:
+            Functions and lambdas are always given in serialised form.
         """
-        self_as_dict = self.dict()
+        self_as_dict = self.dict(serialised=serialised)
         with open(file_path, 'w', encoding='utf-8') as fs:
             json.dump(self_as_dict, fs)
 
-    def to_json_string(self):
+    def to_json_string(self, serialised : bool = True):
         """
         Dumps self to YAML string.
 
+        Args:
+            serialised (bool): Give a Python dictionary in serialised (True) form or deserialised (default = True).
+
+        Notes:
+            Functions and lambdas are always given in serialised form.
+
         Returns:
             str: JSON representation.
         """
-        self_as_dict = self.dict()
+        self_as_dict = self.dict(serialised=serialised)
         return json.dumps(self_as_dict)
 
     def add_attr(self, name, value):
@@ -298,17 +318,45 @@ class PickleRick(BasicRick):
             load_lambda (bool): Load lambda as code or strings.
     """
 
-    def _iternalize(self, dictionary : dict, deep : bool, args : dict = None):
+    def _iternalize(self, dictionary : dict, deep : bool, **init_args):
         for k, v in dictionary.items():
             if isinstance(v, dict):
                 if 'type' in v.keys() and v['type'] == 'env':
-                    self.add_env_variable(k, v['load'], v.get('default', None))
+                    self.add_env_variable(name=k,
+                                          load=v['load'],
+                                          default=v.get('default', None))
+                    continue
+                if 'type' in v.keys() and v['type'] == 'base64':
+                    self.add_base64(name=k,
+                                          load=v['load'])
+                    continue
+                if 'type' in v.keys() and v['type'] == 'from_file':
+                    self.add_from_file(name=k,
+                                       file_path=v['file_path'],
+                                       load_as_rick=v.get('load_as_rick', False),
+                                       deep=v.get('deep', False),
+                                       load_lambda=v.get('load_lambda', False),
+                                       is_binary=v.get('is_binary', False),
+                                       encoding=v.get('encoding', 'utf-8'))
+                    continue
+                if 'type' in v.keys() and v['type'] == 'api_json':
+                    self.add_api_json_call(name=k,
+                                           url=v['url'],
+                                           http_verb=v.get('http_verb', 'GET'),
+                                           headers=v.get('headers', None),
+                                           params=v.get('params', None),
+                                           body=v.get('body', None),
+                                           load_lambda=v.get('load_lambda', False),
+                                           deep=v.get('deep', False),
+                                           expected_http_status=v.get('expected_http_status', 200))
                     continue
                 if 'type' in v.keys() and v['type'] == 'lambda':
                     load = v['load']
                     imports = v.get('import', None)
-                    if args and args['load_lambda']:
-                        self.add_lambda(k, load, imports)
+                    if init_args and init_args['load_lambda']:
+                        self.add_lambda(name=k,
+                                        load=load,
+                                        imports=imports)
                     else:
                         self.__dict__.update({k: v})
                     continue
@@ -318,32 +366,44 @@ def _iternalize(self, dictionary : dict, deep : bool, args : dict = None):
                     args_dict = v.get('args', None)
                     imports = v.get('import', None)
 
-                    if args and args['load_lambda']:
-                        self.add_function(name, load, args_dict, imports)
+                    if init_args and init_args['load_lambda']:
+                        self.add_function(name=name,
+                                          load=load,
+                                          args=args_dict,
+                                          imports=imports)
                     else:
                         self.__dict__.update({k: v})
                     continue
-                self.__dict__.update({k:PickleRick(v, deep, args['load_lambda'])})
+                self.__dict__.update({k:PickleRick(v, deep, **init_args)})
                 continue
             if isinstance(v, list) and deep:
                 new_list = list()
                 for i in v:
                     if isinstance(i, dict):
-                        new_list.append(PickleRick(i, deep, args['load_lambda']))
+                        new_list.append(PickleRick(i, deep, **init_args))
                     else:
                         new_list.append(i)
                 self.__dict__.update({k: new_list})
                 continue
             self.__dict__.update({k: v})
 
-    def __init__(self, base: Union[dict, str] = None, deep : bool = False, load_lambda : bool = False):
+    def __init__(self, base: Union[dict, str] = None, deep : bool = False, load_lambda : bool = False, **init_args):
         self.__meta_info = dict()
-        super().__init__(base, deep, {'load_lambda' : load_lambda})
+        init_args['load_lambda'] = load_lambda
+        init_args['deep'] = deep
+        self.__init_args = init_args
+        super().__init__(base, **init_args)
 
-    def dict(self):
+    def dict(self, serialised : bool = False):
         """
         Deconstructs the whole object into a Python dictionary.
 
+        Args:
+            serialised (bool): Give a Python dictionary in serialised (True) form or deserialised (default = False).
+
+        Notes:
+            Functions and lambdas are always given in serialised form.
+
         Returns:
             dict: of object.
         """
@@ -351,15 +411,17 @@ def dict(self):
         for key, value in self.__dict__.items():
             if str(key).__contains__(self.__class__.__name__):
                 continue
-            if key in self.__meta_info.keys():
+            if serialised and key in self.__meta_info.keys():
+                d[key] = self.__meta_info[key]
+            elif key in self.__meta_info.keys() and self.__meta_info[key]['type'] in ['function', 'lambda']:
                 d[key] = self.__meta_info[key]
             elif isinstance(value, BasicRick):
-                d[key] = value.dict()
+                d[key] = value.dict(serialised=serialised)
             elif isinstance(value, list):
                 new_list = list()
                 for element in value:
                     if isinstance(element, BasicRick):
-                        new_list.append(element.dict())
+                        new_list.append(element.dict(serialised=serialised))
                     else:
                         new_list.append(element)
                 d[key] = new_list
@@ -464,3 +526,114 @@ def add_env_variable(self, name, load, default = None):
         """
         self.__dict__.update({name: os.getenv(load, default)})
         self.__meta_info[name] = {'type' : 'env', 'load' : load, 'default' : default}
+
+    def add_base64(self, name, load):
+        """
+        Add Base 64 encoded binary data.
+
+        Args:
+            name (str): Property name.
+            load (str): Base 64 encoded data.
+        """
+        b = base64.b64decode(load)
+        self.__dict__.update({name: b})
+        self.__meta_info[name] = {'type': 'base64',
+                                  'load' : load
+                                  }
+
+    def add_from_file(self, name,
+                      file_path : str,
+                      load_as_rick : bool = False,
+                      deep : bool = False,
+                      load_lambda : bool = False,
+                      is_binary : bool = False,
+                      encoding : str = 'utf-8'):
+        """
+        Adds the ability to further load Ricks from other YAML or JSON files, or alternatively load a text file.
+        This opens up dynamic possibility, but with that it also opens up extreme security vulnerabilities.
+        Only ever load files from trusted sources.
+        **Important note: Even with ``deep`` and ``load_lambda`` set to False, further file or API calls could be found within the source that loads lambda functions.**
+        **Important note: Be careful to never self-reference a file, i.e. don't load the same file from within itself to avoid infinte looping.**
+
+        Args:
+            name (str): Property name.
+            file_path (str): File path to load from.
+            load_as_rick (bool): If true, loads and creates Rick from source, else loads the contents as text (default = False).
+            deep (bool): Internalize dictionary structures in lists (default = False).
+            load_lambda (bool): Load lambda as code or strings (default = False).
+            is_binary (bool): If the file is a binary file (default = False).
+            encoding (str): If text, encoding can be specified (default = 'utf-8').
+        """
+
+        if load_as_rick and not is_binary:
+            args = copy.copy(self.__init_args)
+            args['load_lambda'] = load_lambda
+            args['deep'] = deep
+            self.__dict__.update({name: PickleRick(file_path, **args)})
+        else:
+            if is_binary:
+                with open(file_path, 'rb') as fn:
+                    self.__dict__.update({name: fn.read()})
+            else:
+                with open(file_path, 'r', encoding=encoding) as fn:
+                    self.__dict__.update({name: fn.read()})
+
+        self.__meta_info[name] = {'type': 'from_file',
+                                  'file_path' : file_path,
+                                  'load_as_rick' : load_as_rick,
+                                  'deep' : deep,
+                                  'load_lambda' : load_lambda,
+                                  'is_binary' : is_binary,
+                                  'encoding' : encoding
+                                  }
+
+    def add_api_json_call(self, name,
+                          url : str,
+                          http_verb : str = 'GET',
+                          headers : dict = None,
+                          params : dict = None,
+                          body : dict = None,
+                          deep : bool = False,
+                          load_lambda : bool = False,
+                          expected_http_status : int = 200):
+        """
+        Load a JSON response from a URL and create a Rick from it. This opens up dynamic possibility,
+        but with that it also opens up extreme security vulnerabilities. Only ever load JSON objects from trusted sources.
+        **Important note: Even with ``deep`` and ``load_lambda`` set to False, further API calls could be found within the source that loads lambda functions.**
+        **Important note: Be careful to never self-reference an API call, i.e. don't load the same API from within itself to avoid infinte looping.**
+
+        Args:
+            name (str): Property name.
+            url (str): URL to load from.
+            http_verb (str): Either 'POST' or 'GET' allowed (default = 'GET').
+            headers (dict): Key-value pair for headers (default = None).
+            params (dict): Key-value pair for parameters (default = None).
+            body (dict): Key-value pair for data (default = None).
+            deep (bool): Internalize dictionary structures in lists (default = False).
+            load_lambda (bool): Load lambda as code or strings (default = False).
+            expected_http_status (int): Should a none 200 code be expected (default = 200).
+
+        """
+        if http_verb.lower() == 'post':
+            r = requests.post(url=url, data=body, headers=headers)
+        else:
+            r = requests.get(url=url, params=params, headers=headers)
+
+        if r.status_code == expected_http_status:
+            json_dict = r.json()
+            args = copy.copy(self.__init_args)
+            args['load_lambda'] = load_lambda
+            args['deep'] = deep
+            self.__dict__.update({name: PickleRick(json_dict, **args)})
+        else:
+            raise ValueError(f'Unexpected HTTP status code in response {r.status_code}')
+        self.__meta_info[name] = {'type': 'api_json',
+                                  'url': url,
+                                  'http_verb': http_verb,
+                                  'headers' : headers,
+                                  'params' : params,
+                                  'body' : body,
+                                  'deep' : deep,
+                                  'load_lambda' : load_lambda,
+                                  'expected_http_status' : expected_http_status
+                                  }
\ No newline at end of file
diff --git a/version.json b/version.json
index 7dbc77c..e85985a 100644
--- a/version.json
+++ b/version.json
@@ -1,1 +1,1 @@
-{"major": 0, "minor": 1, "patch": 11}
\ No newline at end of file
+{"major": 0, "minor": 1, "patch": 13}
\ No newline at end of file


Test patch:
diff --git a/tests/placebos/test_config.yaml b/tests/placebos/test_config.yaml
index e14891c..32521f4 100644
--- a/tests/placebos/test_config.yaml
+++ b/tests/placebos/test_config.yaml
@@ -2,6 +2,28 @@ MYSQL:
   conn: 127.0.0.1
   usr: test
 
+skilltax:
+  type: api_json
+  url: https://skilltax-api-nl-rrlwpuonnq-ew.a.run.app/
+  expected_http_status: 500
+
+some_field: _|arg_name|_
+
+encoded:
+  type: base64
+  load: dG9vIG1hbnkgc2VjcmV0cw==
+
+another_rick:
+  type: from_file
+  file_path: './tests/placebos/test_config.json'
+  load_as_rick: true
+  deep: true
+  load_lambda: true
+
+another_text:
+  type: from_file
+  file_path: './tests/placebos/test_config.json'
+
 BASICS:
   text: test
   dictionary:
diff --git a/tests/unittest/__init__.py b/tests/unittest/__init__.py
index 420b7ec..39b4026 100644
--- a/tests/unittest/__init__.py
+++ b/tests/unittest/__init__.py
@@ -101,9 +101,9 @@ def test_config_get_search(self):
 
         value = test_conf_yaml.get('ONE')
 
-        self.assertEquals(value, 'value')
+        self.assertEquals(value, None)
 
-        value = test_conf_yaml.get('username')
+        value = test_conf_yaml.get('USERNAME')
 
         self.assertIsInstance(value, BasicRick)
         self.assertEquals(value.type, 'env')
@@ -291,10 +291,38 @@ def test_extended_config_add_lambda(self):
 
             self.assertEquals(y, y_true)
 
-
     def test_pickle_rick_dict_decon(self):
         test_conf_yaml = PickleRick('./tests/placebos/test_config.yaml', deep=True, load_lambda=True)
 
         d = test_conf_yaml.dict()
 
-        s = test_conf_yaml.to_yaml_string()
\ No newline at end of file
+        s = test_conf_yaml.to_yaml_string()
+
+    def test_pickle_rick_load_param(self):
+        test_conf_yaml = PickleRick('./tests/placebos/test_config.yaml', deep=True, arg_name='hallo_wereld', load_lambda=True)
+
+        d = test_conf_yaml.dict()
+
+        s = test_conf_yaml.to_yaml_string()
+
+        s = test_conf_yaml.to_yaml_string(serialised=False)
+
+        test_conf_yaml = PickleRick('./tests/placebos/test_config.yaml', deep=True,
+                                    load_lambda=True)
+
+        d = test_conf_yaml.dict()
+
+        s = test_conf_yaml.to_yaml_string()
+
+    def test_pickle_rick_dict_decon_deserialised_vs_serialised(self):
+        test_conf_yaml = PickleRick('./tests/placebos/test_config.yaml', deep=True, load_lambda=True)
+
+        d = test_conf_yaml.dict()
+
+        s = test_conf_yaml.to_yaml_string()
+
+        d_ = test_conf_yaml.dict(serialised=True)
+
+        s_ = test_conf_yaml.to_yaml_string(serialised=False)
+
+        self.assertTrue(True)
\ No newline at end of file