├── .DS_Store ├── .devcontainer └── devcontainer.json ├── .gitignore ├── .streamlit └── config.toml ├── LICENSE ├── Pipfile ├── Pipfile.lock ├── README.md ├── additional_data.yaml ├── default_image.png ├── requirements.txt ├── streamlit_app.py └── test.py /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrieke/components-hub/4e21e4d9c1352ad803df3511511f2365385ce96c/.DS_Store -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Python 3", 3 | // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile 4 | "image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye", 5 | "customizations": { 6 | "codespaces": { 7 | "openFiles": [ 8 | "README.md", 9 | "streamlit_app.py" 10 | ] 11 | }, 12 | "vscode": { 13 | "settings": {}, 14 | "extensions": [ 15 | "ms-python.python", 16 | "ms-python.vscode-pylance" 17 | ] 18 | } 19 | }, 20 | "updateContentCommand": "[ -f packages.txt ] && sudo apt update && sudo apt upgrade -y && sudo xargs apt install -y = '3.7'", 25 | "version": "==4.2.0" 26 | }, 27 | "anyio": { 28 | "hashes": [ 29 | "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421", 30 | "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3" 31 | ], 32 | "markers": "python_full_version >= '3.6.2'", 33 | "version": "==3.6.2" 34 | }, 35 | "attrs": { 36 | "hashes": [ 37 | "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", 38 | "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" 39 | ], 40 | "markers": "python_version >= '3.5'", 41 | "version": "==22.1.0" 42 | }, 43 | "beautifulsoup4": { 44 | "hashes": [ 45 | "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30", 46 | "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693" 47 | ], 48 | "index": "pypi", 49 | "version": "==4.11.1" 50 | }, 51 | "blinker": { 52 | "hashes": [ 53 | "sha256:1eb563df6fdbc39eeddc177d953203f99f097e9bf0e2b8f9f3cf18b6ca425e36", 54 | "sha256:923e5e2f69c155f2cc42dafbbd70e16e3fde24d2d4aa2ab72fbe386238892462" 55 | ], 56 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 57 | "version": "==1.5" 58 | }, 59 | "cachetools": { 60 | "hashes": [ 61 | "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757", 62 | "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db" 63 | ], 64 | "markers": "python_version ~= '3.7'", 65 | "version": "==5.2.0" 66 | }, 67 | "certifi": { 68 | "hashes": [ 69 | "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", 70 | "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" 71 | ], 72 | "markers": "python_version >= '3.6'", 73 | "version": "==2022.9.24" 74 | }, 75 | "chardet": { 76 | "hashes": [ 77 | "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5", 78 | "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9" 79 | ], 80 | "markers": "python_version >= '3.7'", 81 | "version": "==5.1.0" 82 | }, 83 | "charset-normalizer": { 84 | "hashes": [ 85 | "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", 86 | "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" 87 | ], 88 | "markers": "python_version >= '3.6'", 89 | "version": "==2.1.1" 90 | }, 91 | "click": { 92 | "hashes": [ 93 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", 94 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" 95 | ], 96 | "markers": "python_version >= '3.7'", 97 | "version": "==8.1.3" 98 | }, 99 | "commonmark": { 100 | "hashes": [ 101 | "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60", 102 | "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9" 103 | ], 104 | "version": "==0.9.1" 105 | }, 106 | "contourpy": { 107 | "hashes": [ 108 | "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17", 109 | "sha256:03d1b9c6b44a9e30d554654c72be89af94fab7510b4b9f62356c64c81cec8b7d", 110 | "sha256:0537cc1195245bbe24f2913d1f9211b8f04eb203de9044630abd3664c6cc339c", 111 | "sha256:06ca79e1efbbe2df795822df2fa173d1a2b38b6e0f047a0ec7903fbca1d1847e", 112 | "sha256:08e8d09d96219ace6cb596506fb9b64ea5f270b2fb9121158b976d88871fcfd1", 113 | "sha256:0b1e66346acfb17694d46175a0cea7d9036f12ed0c31dfe86f0f405eedde2bdd", 114 | "sha256:0b97454ed5b1368b66ed414c754cba15b9750ce69938fc6153679787402e4cdf", 115 | "sha256:0e4854cc02006ad6684ce092bdadab6f0912d131f91c2450ce6dbdea78ee3c0b", 116 | "sha256:12a7dc8439544ed05c6553bf026d5e8fa7fad48d63958a95d61698df0e00092b", 117 | "sha256:1b1ee48a130da4dd0eb8055bbab34abf3f6262957832fd575e0cab4979a15a41", 118 | "sha256:1c0e1308307a75e07d1f1b5f0f56b5af84538a5e9027109a7bcf6cb47c434e72", 119 | "sha256:1dedf4c64185a216c35eb488e6f433297c660321275734401760dafaeb0ad5c2", 120 | "sha256:208bc904889c910d95aafcf7be9e677726df9ef71e216780170dbb7e37d118fa", 121 | "sha256:211dfe2bd43bf5791d23afbe23a7952e8ac8b67591d24be3638cabb648b3a6eb", 122 | "sha256:341330ed19074f956cb20877ad8d2ae50e458884bfa6a6df3ae28487cc76c768", 123 | "sha256:344cb3badf6fc7316ad51835f56ac387bdf86c8e1b670904f18f437d70da4183", 124 | "sha256:358f6364e4873f4d73360b35da30066f40387dd3c427a3e5432c6b28dd24a8fa", 125 | "sha256:371f6570a81dfdddbb837ba432293a63b4babb942a9eb7aaa699997adfb53278", 126 | "sha256:375d81366afd547b8558c4720337218345148bc2fcffa3a9870cab82b29667f2", 127 | "sha256:3a1917d3941dd58732c449c810fa7ce46cc305ce9325a11261d740118b85e6f3", 128 | "sha256:4081918147fc4c29fad328d5066cfc751da100a1098398742f9f364be63803fc", 129 | "sha256:444fb776f58f4906d8d354eb6f6ce59d0a60f7b6a720da6c1ccb839db7c80eb9", 130 | "sha256:46deb310a276cc5c1fd27958e358cce68b1e8a515fa5a574c670a504c3a3fe30", 131 | "sha256:494efed2c761f0f37262815f9e3c4bb9917c5c69806abdee1d1cb6611a7174a0", 132 | "sha256:50627bf76abb6ba291ad08db583161939c2c5fab38c38181b7833423ab9c7de3", 133 | "sha256:5641927cc5ae66155d0c80195dc35726eae060e7defc18b7ab27600f39dd1fe7", 134 | "sha256:5b117d29433fc8393b18a696d794961464e37afb34a6eeb8b2c37b5f4128a83e", 135 | "sha256:613c665529899b5d9fade7e5d1760111a0b011231277a0d36c49f0d3d6914bd6", 136 | "sha256:6e459ebb8bb5ee4c22c19cc000174f8059981971a33ce11e17dddf6aca97a142", 137 | "sha256:6f56515e7c6fae4529b731f6c117752247bef9cdad2b12fc5ddf8ca6a50965a5", 138 | "sha256:730c27978a0003b47b359935478b7d63fd8386dbb2dcd36c1e8de88cbfc1e9de", 139 | "sha256:75a2e638042118118ab39d337da4c7908c1af74a8464cad59f19fbc5bbafec9b", 140 | "sha256:78ced51807ccb2f45d4ea73aca339756d75d021069604c2fccd05390dc3c28eb", 141 | "sha256:7ee394502026d68652c2824348a40bf50f31351a668977b51437131a90d777ea", 142 | "sha256:8468b40528fa1e15181cccec4198623b55dcd58306f8815a793803f51f6c474a", 143 | "sha256:84c593aeff7a0171f639da92cb86d24954bbb61f8a1b530f74eb750a14685832", 144 | "sha256:913bac9d064cff033cf3719e855d4f1db9f1c179e0ecf3ba9fdef21c21c6a16a", 145 | "sha256:9447c45df407d3ecb717d837af3b70cfef432138530712263730783b3d016512", 146 | "sha256:9b0e7fe7f949fb719b206548e5cde2518ffb29936afa4303d8a1c4db43dcb675", 147 | "sha256:9bc407a6af672da20da74823443707e38ece8b93a04009dca25856c2d9adadb1", 148 | "sha256:9e8e686a6db92a46111a1ee0ee6f7fbfae4048f0019de207149f43ac1812cf95", 149 | "sha256:9fc4e7973ed0e1fe689435842a6e6b330eb7ccc696080dda9a97b1a1b78e41db", 150 | "sha256:a457ee72d9032e86730f62c5eeddf402e732fdf5ca8b13b41772aa8ae13a4563", 151 | "sha256:a628bba09ba72e472bf7b31018b6281fd4cc903f0888049a3724afba13b6e0b8", 152 | "sha256:a79d239fc22c3b8d9d3de492aa0c245533f4f4c7608e5749af866949c0f1b1b9", 153 | "sha256:aa4674cf3fa2bd9c322982644967f01eed0c91bb890f624e0e0daf7a5c3383e9", 154 | "sha256:acd2bd02f1a7adff3a1f33e431eb96ab6d7987b039d2946a9b39fe6fb16a1036", 155 | "sha256:b3b1bd7577c530eaf9d2bc52d1a93fef50ac516a8b1062c3d1b9bcec9ebe329b", 156 | "sha256:b48d94386f1994db7c70c76b5808c12e23ed7a4ee13693c2fc5ab109d60243c0", 157 | "sha256:b64f747e92af7da3b85631a55d68c45a2d728b4036b03cdaba4bd94bcc85bd6f", 158 | "sha256:b98c820608e2dca6442e786817f646d11057c09a23b68d2b3737e6dcb6e4a49b", 159 | "sha256:c1baa49ab9fedbf19d40d93163b7d3e735d9cd8d5efe4cce9907902a6dad391f", 160 | "sha256:c38c6536c2d71ca2f7e418acaf5bca30a3af7f2a2fa106083c7d738337848dbe", 161 | "sha256:c78bfbc1a7bff053baf7e508449d2765964d67735c909b583204e3240a2aca45", 162 | "sha256:cd2bc0c8f2e8de7dd89a7f1c10b8844e291bca17d359373203ef2e6100819edd", 163 | "sha256:d2eff2af97ea0b61381828b1ad6cd249bbd41d280e53aea5cccd7b2b31b8225c", 164 | "sha256:d8834c14b8c3dd849005e06703469db9bf96ba2d66a3f88ecc539c9a8982e0ee", 165 | "sha256:d912f0154a20a80ea449daada904a7eb6941c83281a9fab95de50529bfc3a1da", 166 | "sha256:da1ef35fd79be2926ba80fbb36327463e3656c02526e9b5b4c2b366588b74d9a", 167 | "sha256:dbe6fe7a1166b1ddd7b6d887ea6fa8389d3f28b5ed3f73a8f40ece1fc5a3d340", 168 | "sha256:dcd556c8fc37a342dd636d7eef150b1399f823a4462f8c968e11e1ebeabee769", 169 | "sha256:e13b31d1b4b68db60b3b29f8e337908f328c7f05b9add4b1b5c74e0691180109", 170 | "sha256:e1739496c2f0108013629aa095cc32a8c6363444361960c07493818d0dea2da4", 171 | "sha256:e43255a83835a129ef98f75d13d643844d8c646b258bebd11e4a0975203e018f", 172 | "sha256:e626cefff8491bce356221c22af5a3ea528b0b41fbabc719c00ae233819ea0bf", 173 | "sha256:eadad75bf91897f922e0fb3dca1b322a58b1726a953f98c2e5f0606bd8408621", 174 | "sha256:f33da6b5d19ad1bb5e7ad38bb8ba5c426d2178928bc2b2c44e8823ea0ecb6ff3", 175 | "sha256:f4052a8a4926d4468416fc7d4b2a7b2a3e35f25b39f4061a7e2a3a2748c4fc48", 176 | "sha256:f6ca38dd8d988eca8f07305125dec6f54ac1c518f1aaddcc14d08c01aebb6efc" 177 | ], 178 | "markers": "python_version >= '3.7'", 179 | "version": "==1.0.6" 180 | }, 181 | "cycler": { 182 | "hashes": [ 183 | "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3", 184 | "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f" 185 | ], 186 | "markers": "python_version >= '3.6'", 187 | "version": "==0.11.0" 188 | }, 189 | "dataproperty": { 190 | "hashes": [ 191 | "sha256:73ccf10f8b123968210438a1a1aa859ea6d5a16b4e1f4d307da7a81b838e79fa", 192 | "sha256:a8f29175950f4b2c33a387aa3809130d87b9a8d3b92a916c906c49efdb566b32" 193 | ], 194 | "markers": "python_version >= '3.6'", 195 | "version": "==0.55.0" 196 | }, 197 | "decorator": { 198 | "hashes": [ 199 | "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", 200 | "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" 201 | ], 202 | "markers": "python_version >= '3.5'", 203 | "version": "==5.1.1" 204 | }, 205 | "dominate": { 206 | "hashes": [ 207 | "sha256:520101360892ebf9d0553f67d37e359ff92403d8a1e33814030503088a05da49", 208 | "sha256:5fe4258614687c6d3de67b0bbd881ed435a93a19742ae187344055db17052402" 209 | ], 210 | "version": "==2.7.0" 211 | }, 212 | "entrypoints": { 213 | "hashes": [ 214 | "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", 215 | "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" 216 | ], 217 | "markers": "python_version >= '3.6'", 218 | "version": "==0.4" 219 | }, 220 | "faker": { 221 | "hashes": [ 222 | "sha256:2d5443724f640ce07658ca8ca8bbd40d26b58914e63eec6549727869aa67e2cc", 223 | "sha256:c2a2ff9dd8dfd991109b517ab98d5cb465e857acb45f6b643a0e284a9eb2cc76" 224 | ], 225 | "markers": "python_version >= '3.7'", 226 | "version": "==15.3.4" 227 | }, 228 | "favicon": { 229 | "hashes": [ 230 | "sha256:6d6b5a78de2a0d0084589f687f384b2ecd6a6527093fec564403b1a30605d7a8", 231 | "sha256:7fec0617c73dcb8521ea788e1d38cdc7226c7cb8e28c81e11625d85fa1534880" 232 | ], 233 | "version": "==0.7.0" 234 | }, 235 | "fonttools": { 236 | "hashes": [ 237 | "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1", 238 | "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb" 239 | ], 240 | "markers": "python_version >= '3.7'", 241 | "version": "==4.38.0" 242 | }, 243 | "gitdb": { 244 | "hashes": [ 245 | "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", 246 | "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7" 247 | ], 248 | "markers": "python_version >= '3.7'", 249 | "version": "==4.0.10" 250 | }, 251 | "gitpython": { 252 | "hashes": [ 253 | "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f", 254 | "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd" 255 | ], 256 | "markers": "python_version >= '3.7'", 257 | "version": "==3.1.29" 258 | }, 259 | "h11": { 260 | "hashes": [ 261 | "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", 262 | "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761" 263 | ], 264 | "markers": "python_version >= '3.7'", 265 | "version": "==0.14.0" 266 | }, 267 | "htbuilder": { 268 | "hashes": [ 269 | "sha256:b7cafab8f27162a35f7ce15e387239c95d12c3d81fc38f91cad499e88cc0fcd8" 270 | ], 271 | "markers": "python_version >= '3.5'", 272 | "version": "==0.6.1" 273 | }, 274 | "httpcore": { 275 | "hashes": [ 276 | "sha256:52c79095197178856724541e845f2db86d5f1527640d9254b5b8f6f6cebfdee6", 277 | "sha256:c35c5176dc82db732acfd90b581a3062c999a72305df30c0fc8fafd8e4aca068" 278 | ], 279 | "markers": "python_version >= '3.7'", 280 | "version": "==0.16.2" 281 | }, 282 | "httpx": { 283 | "hashes": [ 284 | "sha256:0b9b1f0ee18b9978d637b0776bfd7f54e2ca278e063e3586d8f01cda89e042a8", 285 | "sha256:202ae15319be24efe9a8bd4ed4360e68fde7b38bcc2ce87088d416f026667d19" 286 | ], 287 | "markers": "python_version >= '3.7'", 288 | "version": "==0.23.1" 289 | }, 290 | "idna": { 291 | "hashes": [ 292 | "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", 293 | "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" 294 | ], 295 | "markers": "python_version >= '3.5'", 296 | "version": "==3.4" 297 | }, 298 | "importlib-metadata": { 299 | "hashes": [ 300 | "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b", 301 | "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313" 302 | ], 303 | "markers": "python_version >= '3.7'", 304 | "version": "==5.1.0" 305 | }, 306 | "jinja2": { 307 | "hashes": [ 308 | "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", 309 | "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" 310 | ], 311 | "markers": "python_version >= '3.7'", 312 | "version": "==3.1.2" 313 | }, 314 | "jsonschema": { 315 | "hashes": [ 316 | "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", 317 | "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" 318 | ], 319 | "markers": "python_version >= '3.7'", 320 | "version": "==4.17.3" 321 | }, 322 | "kiwisolver": { 323 | "hashes": [ 324 | "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b", 325 | "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166", 326 | "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c", 327 | "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c", 328 | "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0", 329 | "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4", 330 | "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9", 331 | "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286", 332 | "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767", 333 | "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c", 334 | "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6", 335 | "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b", 336 | "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004", 337 | "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf", 338 | "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494", 339 | "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac", 340 | "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626", 341 | "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766", 342 | "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514", 343 | "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6", 344 | "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f", 345 | "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d", 346 | "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191", 347 | "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d", 348 | "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51", 349 | "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f", 350 | "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8", 351 | "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454", 352 | "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb", 353 | "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da", 354 | "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8", 355 | "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de", 356 | "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a", 357 | "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9", 358 | "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008", 359 | "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3", 360 | "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32", 361 | "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938", 362 | "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1", 363 | "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9", 364 | "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d", 365 | "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824", 366 | "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b", 367 | "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd", 368 | "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2", 369 | "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5", 370 | "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69", 371 | "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3", 372 | "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae", 373 | "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597", 374 | "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e", 375 | "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955", 376 | "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca", 377 | "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a", 378 | "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea", 379 | "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede", 380 | "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4", 381 | "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6", 382 | "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686", 383 | "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408", 384 | "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871", 385 | "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29", 386 | "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750", 387 | "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897", 388 | "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0", 389 | "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2", 390 | "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09", 391 | "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c" 392 | ], 393 | "markers": "python_version >= '3.7'", 394 | "version": "==1.4.4" 395 | }, 396 | "lxml": { 397 | "hashes": [ 398 | "sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318", 399 | "sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c", 400 | "sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b", 401 | "sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000", 402 | "sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73", 403 | "sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d", 404 | "sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb", 405 | "sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8", 406 | "sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2", 407 | "sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345", 408 | "sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94", 409 | "sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e", 410 | "sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b", 411 | "sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc", 412 | "sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a", 413 | "sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9", 414 | "sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc", 415 | "sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387", 416 | "sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb", 417 | "sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7", 418 | "sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4", 419 | "sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97", 420 | "sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67", 421 | "sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627", 422 | "sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7", 423 | "sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd", 424 | "sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3", 425 | "sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7", 426 | "sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130", 427 | "sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b", 428 | "sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036", 429 | "sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785", 430 | "sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca", 431 | "sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91", 432 | "sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc", 433 | "sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536", 434 | "sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391", 435 | "sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3", 436 | "sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d", 437 | "sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21", 438 | "sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3", 439 | "sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d", 440 | "sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29", 441 | "sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715", 442 | "sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed", 443 | "sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25", 444 | "sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c", 445 | "sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785", 446 | "sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837", 447 | "sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4", 448 | "sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b", 449 | "sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2", 450 | "sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067", 451 | "sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448", 452 | "sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d", 453 | "sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2", 454 | "sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc", 455 | "sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c", 456 | "sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5", 457 | "sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84", 458 | "sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8", 459 | "sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf", 460 | "sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7", 461 | "sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e", 462 | "sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb", 463 | "sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b", 464 | "sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3", 465 | "sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad", 466 | "sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8", 467 | "sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f" 468 | ], 469 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 470 | "version": "==4.9.1" 471 | }, 472 | "markdown": { 473 | "hashes": [ 474 | "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186", 475 | "sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff" 476 | ], 477 | "markers": "python_version >= '3.7'", 478 | "version": "==3.4.1" 479 | }, 480 | "markdownlit": { 481 | "hashes": [ 482 | "sha256:3c24be515ad62ea9ec210cfafa59799ec5e451381643fdebbf875dbeef06237e", 483 | "sha256:4ab9a7292af0c0718de73b89d9350f894cc4248d3076522e13642e676f600b27" 484 | ], 485 | "index": "pypi", 486 | "version": "==0.0.5" 487 | }, 488 | "markupsafe": { 489 | "hashes": [ 490 | "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", 491 | "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", 492 | "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", 493 | "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", 494 | "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", 495 | "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", 496 | "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", 497 | "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", 498 | "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", 499 | "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", 500 | "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", 501 | "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", 502 | "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", 503 | "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", 504 | "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", 505 | "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", 506 | "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", 507 | "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", 508 | "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", 509 | "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", 510 | "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", 511 | "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", 512 | "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", 513 | "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", 514 | "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", 515 | "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", 516 | "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", 517 | "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", 518 | "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", 519 | "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", 520 | "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", 521 | "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", 522 | "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", 523 | "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", 524 | "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", 525 | "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", 526 | "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", 527 | "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", 528 | "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", 529 | "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" 530 | ], 531 | "markers": "python_version >= '3.7'", 532 | "version": "==2.1.1" 533 | }, 534 | "matplotlib": { 535 | "hashes": [ 536 | "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a", 537 | "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2", 538 | "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501", 539 | "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95", 540 | "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c", 541 | "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267", 542 | "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428", 543 | "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb", 544 | "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83", 545 | "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17", 546 | "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1", 547 | "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73", 548 | "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0", 549 | "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812", 550 | "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a", 551 | "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b", 552 | "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f", 553 | "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f", 554 | "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee", 555 | "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33", 556 | "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028", 557 | "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c", 558 | "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae", 559 | "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc", 560 | "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558", 561 | "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5", 562 | "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc", 563 | "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab", 564 | "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990", 565 | "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27", 566 | "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136", 567 | "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa", 568 | "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6", 569 | "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c", 570 | "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b", 571 | "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617", 572 | "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1", 573 | "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3", 574 | "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4", 575 | "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0", 576 | "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec" 577 | ], 578 | "markers": "python_version >= '3.8'", 579 | "version": "==3.6.2" 580 | }, 581 | "mbstrdecoder": { 582 | "hashes": [ 583 | "sha256:0a99413b92bbaddda89d376f496d710dc7131417e98414a756ebcd41374e068d", 584 | "sha256:37a7739a365f1bf8aa5ff2de2d66b1a84e96dcb41868cc97c480c20b40c3670b" 585 | ], 586 | "markers": "python_version >= '3.6'", 587 | "version": "==1.1.1" 588 | }, 589 | "more-itertools": { 590 | "hashes": [ 591 | "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41", 592 | "sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab" 593 | ], 594 | "markers": "python_version >= '3.7'", 595 | "version": "==9.0.0" 596 | }, 597 | "numpy": { 598 | "hashes": [ 599 | "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d", 600 | "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07", 601 | "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df", 602 | "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9", 603 | "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d", 604 | "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a", 605 | "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719", 606 | "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2", 607 | "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280", 608 | "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa", 609 | "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387", 610 | "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1", 611 | "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43", 612 | "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f", 613 | "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398", 614 | "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63", 615 | "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de", 616 | "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8", 617 | "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481", 618 | "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0", 619 | "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d", 620 | "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e", 621 | "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96", 622 | "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb", 623 | "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6", 624 | "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d", 625 | "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a", 626 | "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135" 627 | ], 628 | "markers": "python_version >= '3.8'", 629 | "version": "==1.23.5" 630 | }, 631 | "packaging": { 632 | "hashes": [ 633 | "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", 634 | "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" 635 | ], 636 | "markers": "python_version >= '3.6'", 637 | "version": "==21.3" 638 | }, 639 | "pandas": { 640 | "hashes": [ 641 | "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883", 642 | "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028", 643 | "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b", 644 | "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824", 645 | "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe", 646 | "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e", 647 | "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261", 648 | "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b", 649 | "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f", 650 | "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5", 651 | "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0", 652 | "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a", 653 | "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc", 654 | "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39", 655 | "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5", 656 | "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702", 657 | "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f", 658 | "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3", 659 | "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519", 660 | "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f", 661 | "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc", 662 | "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72", 663 | "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb", 664 | "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789", 665 | "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090", 666 | "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273", 667 | "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2" 668 | ], 669 | "markers": "python_version >= '3.8'", 670 | "version": "==1.5.2" 671 | }, 672 | "pathvalidate": { 673 | "hashes": [ 674 | "sha256:5ff57d0fabe5ecb7a4f1e4957bfeb5ad8ab5ab4c0fa71f79c6bbc24bd9b7d14d", 675 | "sha256:e39a4dfacdba70e3a96d3e4c6ff617a39e991cf242e6e1f2017f1f67c3408d33" 676 | ], 677 | "markers": "python_version >= '3.6'", 678 | "version": "==2.5.2" 679 | }, 680 | "pillow": { 681 | "hashes": [ 682 | "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", 683 | "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", 684 | "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", 685 | "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", 686 | "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", 687 | "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", 688 | "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", 689 | "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", 690 | "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", 691 | "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", 692 | "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", 693 | "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", 694 | "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", 695 | "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", 696 | "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", 697 | "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", 698 | "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", 699 | "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", 700 | "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", 701 | "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", 702 | "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", 703 | "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", 704 | "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", 705 | "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", 706 | "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", 707 | "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", 708 | "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", 709 | "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", 710 | "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", 711 | "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", 712 | "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", 713 | "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", 714 | "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", 715 | "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", 716 | "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", 717 | "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", 718 | "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", 719 | "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", 720 | "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", 721 | "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", 722 | "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", 723 | "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", 724 | "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", 725 | "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", 726 | "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", 727 | "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", 728 | "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", 729 | "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", 730 | "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", 731 | "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", 732 | "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", 733 | "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", 734 | "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", 735 | "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", 736 | "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", 737 | "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", 738 | "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", 739 | "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", 740 | "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", 741 | "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", 742 | "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" 743 | ], 744 | "markers": "python_version >= '3.7'", 745 | "version": "==9.3.0" 746 | }, 747 | "platformdirs": { 748 | "hashes": [ 749 | "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7", 750 | "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10" 751 | ], 752 | "markers": "python_version >= '3.7'", 753 | "version": "==2.5.4" 754 | }, 755 | "prettytable": { 756 | "hashes": [ 757 | "sha256:52f682ba4efe29dccb38ff0fe5bac8a23007d0780ff92a8b85af64bc4fc74d72", 758 | "sha256:fe391c3b545800028edf5dbb6a5360893feb398367fcc1cf8d7a5b29ce5c59a1" 759 | ], 760 | "markers": "python_version >= '3.7'", 761 | "version": "==3.5.0" 762 | }, 763 | "protobuf": { 764 | "hashes": [ 765 | "sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7", 766 | "sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c", 767 | "sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2", 768 | "sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b", 769 | "sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050", 770 | "sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9", 771 | "sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7", 772 | "sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454", 773 | "sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480", 774 | "sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469", 775 | "sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c", 776 | "sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e", 777 | "sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db", 778 | "sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905", 779 | "sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b", 780 | "sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86", 781 | "sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4", 782 | "sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402", 783 | "sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7", 784 | "sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4", 785 | "sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99", 786 | "sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee" 787 | ], 788 | "markers": "python_version >= '3.7'", 789 | "version": "==3.20.3" 790 | }, 791 | "pyarrow": { 792 | "hashes": [ 793 | "sha256:0ec7587d759153f452d5263dbc8b1af318c4609b607be2bd5127dcda6708cdb1", 794 | "sha256:1765a18205eb1e02ccdedb66049b0ec148c2a0cb52ed1fb3aac322dfc086a6ee", 795 | "sha256:1a14f57a5f472ce8234f2964cd5184cccaa8df7e04568c64edc33b23eb285dd5", 796 | "sha256:254017ca43c45c5098b7f2a00e995e1f8346b0fb0be225f042838323bb55283c", 797 | "sha256:42ba7c5347ce665338f2bc64685d74855900200dac81a972d49fe127e8132f75", 798 | "sha256:443eb9409b0cf78df10ced326490e1a300205a458fbeb0767b6b31ab3ebae6b2", 799 | "sha256:61f4c37d82fe00d855d0ab522c685262bdeafd3fbcb5fe596fe15025fbc7341b", 800 | "sha256:668e00e3b19f183394388a687d29c443eb000fb3fe25599c9b4762a0afd37775", 801 | "sha256:6f7a7dbe2f7f65ac1d0bd3163f756deb478a9e9afc2269557ed75b1b25ab3610", 802 | "sha256:70acca1ece4322705652f48db65145b5028f2c01c7e426c5d16a30ba5d739c24", 803 | "sha256:7b4ede715c004b6fc535de63ef79fa29740b4080639a5ff1ea9ca84e9282f349", 804 | "sha256:94fb4a0c12a2ac1ed8e7e2aa52aade833772cf2d3de9dde685401b22cec30002", 805 | "sha256:abb57334f2c57979a49b7be2792c31c23430ca02d24becd0b511cbe7b6b08649", 806 | "sha256:b069602eb1fc09f1adec0a7bdd7897f4d25575611dfa43543c8b8a75d99d6874", 807 | "sha256:b1fc226d28c7783b52a84d03a66573d5a22e63f8a24b841d5fc68caeed6784d4", 808 | "sha256:ba71e6fc348c92477586424566110d332f60d9a35cb85278f42e3473bc1373da", 809 | "sha256:bf26f809926a9d74e02d76593026f0aaeac48a65b64f1bb17eed9964bfe7ae1a", 810 | "sha256:cb627673cb98708ef00864e2e243f51ba7b4c1b9f07a1d821f98043eccd3f585", 811 | "sha256:d1bc6e4d5d6f69e0861d5d7f6cf4d061cf1069cb9d490040129877acf16d4c2a", 812 | "sha256:db0c5986bf0808927f49640582d2032a07aa49828f14e51f362075f03747d198", 813 | "sha256:e00174764a8b4e9d8d5909b6d19ee0c217a6cf0232c5682e31fdfbd5a9f0ae52", 814 | "sha256:e141a65705ac98fa52a9113fe574fdaf87fe0316cde2dffe6b94841d3c61544c", 815 | "sha256:e3fe5049d2e9ca661d8e43fab6ad5a4c571af12d20a57dffc392a014caebef65", 816 | "sha256:efa59933b20183c1c13efc34bd91efc6b2997377c4c6ad9272da92d224e3beb1", 817 | "sha256:f2d00aa481becf57098e85d99e34a25dba5a9ade2f44eb0b7d80c80f2984fc03" 818 | ], 819 | "markers": "python_version >= '3.7'", 820 | "version": "==10.0.1" 821 | }, 822 | "pydeck": { 823 | "hashes": [ 824 | "sha256:07edde833f7cfcef6749124351195aa7dcd24663d4909fd7898dbd0b6fbc01ec", 825 | "sha256:a8fa7757c6f24bba033af39db3147cb020eef44012ba7e60d954de187f9ed4d5" 826 | ], 827 | "markers": "python_version >= '3.7'", 828 | "version": "==0.8.0" 829 | }, 830 | "pygments": { 831 | "hashes": [ 832 | "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", 833 | "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" 834 | ], 835 | "markers": "python_version >= '3.6'", 836 | "version": "==2.13.0" 837 | }, 838 | "pymdown-extensions": { 839 | "hashes": [ 840 | "sha256:0f8fb7b74a37a61cc34e90b2c91865458b713ec774894ffad64353a5fce85cfc", 841 | "sha256:ac698c15265680db5eb13cd4342abfcde2079ac01e5486028f47a1b41547b859" 842 | ], 843 | "markers": "python_version >= '3.7'", 844 | "version": "==9.9" 845 | }, 846 | "pympler": { 847 | "hashes": [ 848 | "sha256:993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa", 849 | "sha256:d260dda9ae781e1eab6ea15bacb84015849833ba5555f141d2d9b7b7473b307d" 850 | ], 851 | "markers": "python_version >= '3.6'", 852 | "version": "==1.0.1" 853 | }, 854 | "pyparsing": { 855 | "hashes": [ 856 | "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", 857 | "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" 858 | ], 859 | "markers": "python_full_version >= '3.6.8'", 860 | "version": "==3.0.9" 861 | }, 862 | "pypistats": { 863 | "hashes": [ 864 | "sha256:425ebfda99ce15ae10396a499003bc2b095b880a936c59bd54cf2c3e52269163", 865 | "sha256:48f7b98bf73e8107e63a6f6c555cc82a04bc787e84bc323772a65006786bbb5c" 866 | ], 867 | "index": "pypi", 868 | "version": "==1.1.0" 869 | }, 870 | "pyrsistent": { 871 | "hashes": [ 872 | "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", 873 | "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", 874 | "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", 875 | "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", 876 | "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", 877 | "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", 878 | "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", 879 | "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", 880 | "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", 881 | "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", 882 | "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", 883 | "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", 884 | "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", 885 | "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", 886 | "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", 887 | "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", 888 | "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", 889 | "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", 890 | "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", 891 | "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", 892 | "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", 893 | "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" 894 | ], 895 | "markers": "python_version >= '3.7'", 896 | "version": "==0.19.2" 897 | }, 898 | "pytablewriter": { 899 | "extras": [ 900 | "html" 901 | ], 902 | "hashes": [ 903 | "sha256:99409d401d6ef5f06d1bc40f265a8e3053afe4cbfbaf709f71124076afb40dbb", 904 | "sha256:c46d1ddc40ef4d084213a86f8626cee33b3aa0119535aa8555da64cb5b65e382" 905 | ], 906 | "markers": "python_version >= '3.6'", 907 | "version": "==0.64.2" 908 | }, 909 | "python-dateutil": { 910 | "hashes": [ 911 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", 912 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" 913 | ], 914 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", 915 | "version": "==2.8.2" 916 | }, 917 | "python-slugify": { 918 | "hashes": [ 919 | "sha256:003aee64f9fd955d111549f96c4b58a3f40b9319383c70fad6277a4974bbf570", 920 | "sha256:7a0f21a39fa6c1c4bf2e5984c9b9ae944483fd10b54804cb0e23a3ccd4954f0b" 921 | ], 922 | "markers": "python_version >= '3.7'", 923 | "version": "==7.0.0" 924 | }, 925 | "pytz": { 926 | "hashes": [ 927 | "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", 928 | "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" 929 | ], 930 | "version": "==2022.6" 931 | }, 932 | "pytz-deprecation-shim": { 933 | "hashes": [ 934 | "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", 935 | "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" 936 | ], 937 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 938 | "version": "==0.1.0.post0" 939 | }, 940 | "pyyaml": { 941 | "hashes": [ 942 | "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", 943 | "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", 944 | "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", 945 | "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", 946 | "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", 947 | "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", 948 | "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", 949 | "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", 950 | "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", 951 | "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", 952 | "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", 953 | "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", 954 | "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", 955 | "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", 956 | "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", 957 | "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", 958 | "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", 959 | "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", 960 | "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", 961 | "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", 962 | "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", 963 | "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", 964 | "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", 965 | "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", 966 | "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", 967 | "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", 968 | "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", 969 | "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", 970 | "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", 971 | "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", 972 | "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", 973 | "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", 974 | "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", 975 | "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", 976 | "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", 977 | "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", 978 | "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", 979 | "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", 980 | "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", 981 | "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" 982 | ], 983 | "index": "pypi", 984 | "version": "==6.0" 985 | }, 986 | "requests": { 987 | "hashes": [ 988 | "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", 989 | "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" 990 | ], 991 | "markers": "python_version >= '3.7' and python_full_version < '4.0.0'", 992 | "version": "==2.28.1" 993 | }, 994 | "rfc3986": { 995 | "extras": [ 996 | "idna2008" 997 | ], 998 | "hashes": [ 999 | "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835", 1000 | "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97" 1001 | ], 1002 | "version": "==1.5.0" 1003 | }, 1004 | "rich": { 1005 | "hashes": [ 1006 | "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e", 1007 | "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0" 1008 | ], 1009 | "markers": "python_full_version >= '3.6.3' and python_full_version < '4.0.0'", 1010 | "version": "==12.6.0" 1011 | }, 1012 | "semver": { 1013 | "hashes": [ 1014 | "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4", 1015 | "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f" 1016 | ], 1017 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1018 | "version": "==2.13.0" 1019 | }, 1020 | "setuptools": { 1021 | "hashes": [ 1022 | "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54", 1023 | "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75" 1024 | ], 1025 | "markers": "python_version >= '3.7'", 1026 | "version": "==65.6.3" 1027 | }, 1028 | "six": { 1029 | "hashes": [ 1030 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", 1031 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" 1032 | ], 1033 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", 1034 | "version": "==1.16.0" 1035 | }, 1036 | "smmap": { 1037 | "hashes": [ 1038 | "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", 1039 | "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" 1040 | ], 1041 | "markers": "python_version >= '3.6'", 1042 | "version": "==5.0.0" 1043 | }, 1044 | "sniffio": { 1045 | "hashes": [ 1046 | "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", 1047 | "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" 1048 | ], 1049 | "markers": "python_version >= '3.7'", 1050 | "version": "==1.3.0" 1051 | }, 1052 | "soupsieve": { 1053 | "hashes": [ 1054 | "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759", 1055 | "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d" 1056 | ], 1057 | "markers": "python_version >= '3.6'", 1058 | "version": "==2.3.2.post1" 1059 | }, 1060 | "st-annotated-text": { 1061 | "hashes": [ 1062 | "sha256:b63a55ef03411ce4e37bf9269a32e6ee4b344a658552e3fb0b4924bca0c5dc40" 1063 | ], 1064 | "markers": "python_version >= '3.5'", 1065 | "version": "==3.0.0" 1066 | }, 1067 | "stqdm": { 1068 | "hashes": [ 1069 | "sha256:8f83e0d2cd441a4f24ecd1fdaaea437626387b4aa45218af1cde558f8e6746c0", 1070 | "sha256:9e369d38abdc0a8f14b577fd1ae7a45aa047a4ee5afc8fa102845498b8ceb868" 1071 | ], 1072 | "index": "pypi", 1073 | "version": "==0.0.4" 1074 | }, 1075 | "streamlit": { 1076 | "hashes": [ 1077 | "sha256:31b2fa33848f8dbcf526e6c93017cf58c81a8479844c4f6ff553382e1bac6152", 1078 | "sha256:40933b64e7b3a1770d798918cbd2ae52a6671a52266ac069f62e1b66f38e0662" 1079 | ], 1080 | "index": "pypi", 1081 | "version": "==1.15.2" 1082 | }, 1083 | "streamlit-camera-input-live": { 1084 | "hashes": [ 1085 | "sha256:20ceb952b98410084176fcfeb9148e02ea29033a88d4a923161ac7890cedae0f", 1086 | "sha256:dacb56cdedbb0d6c07e35a66b755b9145b5023e5c855c64193c3d3e73198e9be" 1087 | ], 1088 | "markers": "python_version >= '3.7'", 1089 | "version": "==0.2.0" 1090 | }, 1091 | "streamlit-card": { 1092 | "hashes": [ 1093 | "sha256:1908b41b00be8ec705c45bedcf9d4f3417a3f2ec563e4c2fb06e41ecd93e765c", 1094 | "sha256:5fe81450310f1e2b6660c83eb6d82f1a5b671d5d42b5e46b3bc654120c481a2c" 1095 | ], 1096 | "markers": "python_version >= '3.8'", 1097 | "version": "==0.0.4" 1098 | }, 1099 | "streamlit-embedcode": { 1100 | "hashes": [ 1101 | "sha256:22a50eb43407bab3d0ed2d4b58e89819da477cd0592ef87edbd373c286712e3a", 1102 | "sha256:b3c9520c1b48f2eef3c702b5a967f64c9a8ff2ea8e74ebb26c0e9195965bb923" 1103 | ], 1104 | "markers": "python_version >= '3.6'", 1105 | "version": "==0.1.2" 1106 | }, 1107 | "streamlit-extras": { 1108 | "hashes": [ 1109 | "sha256:3270d0633a6eeb20901287bba8a24538d357c397fd93ede6e44b8249dcad666a", 1110 | "sha256:3dfff0eb14c3457d34a365236582b58f9168c7131a0b09402c99a927d60a0c02" 1111 | ], 1112 | "markers": "python_version not in '2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7' and python_version >= '3.8'", 1113 | "version": "==0.2.4" 1114 | }, 1115 | "streamlit-faker": { 1116 | "hashes": [ 1117 | "sha256:3b6625fefb5c2bc759a3b2407c53c97b23cf69924ec31bd2fa7d5313b7691068", 1118 | "sha256:93d3d910d9be3e60f07c21b28d2ed0487737e071e48ce1faf858e1f68e05b624" 1119 | ], 1120 | "markers": "python_version >= '3.6'", 1121 | "version": "==0.0.2" 1122 | }, 1123 | "streamlit-keyup": { 1124 | "hashes": [ 1125 | "sha256:5a38037af547163566eff9fec0ee17a7e3556e4bf99b68d44327c726b8ea85b3", 1126 | "sha256:7a187a40c3a95e3fea71be08e96e24c92c7054914e35c5bec3071be46f8a498e" 1127 | ], 1128 | "markers": "python_version >= '3.7'", 1129 | "version": "==0.2.0" 1130 | }, 1131 | "streamlit-pills": { 1132 | "hashes": [ 1133 | "sha256:47668ad4fd8c137b203ee1aec9d9d44ed8b2ff7ded9f586984f204be2eac772f", 1134 | "sha256:b66fdf7b1820c09b751a76ef1ae01ab93221d0c2c2d1cd489b711b9afaae0513" 1135 | ], 1136 | "index": "pypi", 1137 | "version": "==0.3.0" 1138 | }, 1139 | "streamlit-toggle-switch": { 1140 | "hashes": [ 1141 | "sha256:0081212d80d178bda337acf2432425e2016d757f57834b18645d4c5b928d4c0f", 1142 | "sha256:991b103cd3448b0f6507f8051777b996a17b4630956d5b6fa13344175b20e572" 1143 | ], 1144 | "markers": "python_version >= '3.6'", 1145 | "version": "==1.0.2" 1146 | }, 1147 | "streamlit-vertical-slider": { 1148 | "hashes": [ 1149 | "sha256:6eaee79a397341eee6ec7862b77d27d548d2bdd126812fd811f831bd4d561f48", 1150 | "sha256:ab727cd5c1799c1d9a19c6201ff2a9bcda08222c849c5670ad7a0d994c9fdcdc" 1151 | ], 1152 | "markers": "python_version >= '3.6'", 1153 | "version": "==1.0.2" 1154 | }, 1155 | "tabledata": { 1156 | "hashes": [ 1157 | "sha256:2016fa561552bbf2266682fe328e9161359e605620084bac4754e91c238880f1", 1158 | "sha256:54541b0c9e58f8fa38251ea0a60965dbaf95737027fa80e6ab56f98d7e4d61e9" 1159 | ], 1160 | "markers": "python_version >= '3.6'", 1161 | "version": "==1.3.0" 1162 | }, 1163 | "tcolorpy": { 1164 | "hashes": [ 1165 | "sha256:88b1a5c1f4d14fa0a3c9fb97d93f84f0540c7a0e3f3957b1967b1b8ea93dbdbc", 1166 | "sha256:8a669c29aada6e6715048ae04116e6b620f0864541fecb8722ede568f403b76e" 1167 | ], 1168 | "markers": "python_version >= '3.6'", 1169 | "version": "==0.1.2" 1170 | }, 1171 | "termcolor": { 1172 | "hashes": [ 1173 | "sha256:67cee2009adc6449c650f6bcf3bdeed00c8ba53a8cda5362733c53e0a39fb70b", 1174 | "sha256:fa852e957f97252205e105dd55bbc23b419a70fec0085708fc0515e399f304fd" 1175 | ], 1176 | "markers": "python_version >= '3.7'", 1177 | "version": "==2.1.1" 1178 | }, 1179 | "text-unidecode": { 1180 | "hashes": [ 1181 | "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", 1182 | "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93" 1183 | ], 1184 | "version": "==1.3" 1185 | }, 1186 | "toml": { 1187 | "hashes": [ 1188 | "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", 1189 | "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" 1190 | ], 1191 | "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", 1192 | "version": "==0.10.2" 1193 | }, 1194 | "toolz": { 1195 | "hashes": [ 1196 | "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f", 1197 | "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194" 1198 | ], 1199 | "markers": "python_version >= '3.5'", 1200 | "version": "==0.12.0" 1201 | }, 1202 | "tornado": { 1203 | "hashes": [ 1204 | "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca", 1205 | "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72", 1206 | "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23", 1207 | "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8", 1208 | "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b", 1209 | "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9", 1210 | "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13", 1211 | "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75", 1212 | "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac", 1213 | "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e", 1214 | "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b" 1215 | ], 1216 | "markers": "python_version >= '3.7'", 1217 | "version": "==6.2" 1218 | }, 1219 | "tqdm": { 1220 | "hashes": [ 1221 | "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4", 1222 | "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1" 1223 | ], 1224 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1225 | "version": "==4.64.1" 1226 | }, 1227 | "typepy": { 1228 | "extras": [ 1229 | "datetime" 1230 | ], 1231 | "hashes": [ 1232 | "sha256:96788530614083164993d1443959f6c58e6bb8e2da839812ddf462c203e4b84c", 1233 | "sha256:cf1913982969cf6348152c4a5feec08e324addd99670999e57cdb3ad87a61e9a" 1234 | ], 1235 | "markers": "python_version >= '3.6'", 1236 | "version": "==1.3.0" 1237 | }, 1238 | "typing-extensions": { 1239 | "hashes": [ 1240 | "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", 1241 | "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" 1242 | ], 1243 | "markers": "python_version >= '3.7'", 1244 | "version": "==4.4.0" 1245 | }, 1246 | "tzdata": { 1247 | "hashes": [ 1248 | "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d", 1249 | "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa" 1250 | ], 1251 | "markers": "python_version >= '3.6'", 1252 | "version": "==2022.7" 1253 | }, 1254 | "tzlocal": { 1255 | "hashes": [ 1256 | "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745", 1257 | "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7" 1258 | ], 1259 | "markers": "python_version >= '3.6'", 1260 | "version": "==4.2" 1261 | }, 1262 | "urllib3": { 1263 | "hashes": [ 1264 | "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", 1265 | "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" 1266 | ], 1267 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 1268 | "version": "==1.26.13" 1269 | }, 1270 | "validators": { 1271 | "hashes": [ 1272 | "sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a" 1273 | ], 1274 | "markers": "python_version >= '3.4'", 1275 | "version": "==0.20.0" 1276 | }, 1277 | "wcwidth": { 1278 | "hashes": [ 1279 | "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", 1280 | "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" 1281 | ], 1282 | "version": "==0.2.5" 1283 | }, 1284 | "zipp": { 1285 | "hashes": [ 1286 | "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", 1287 | "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" 1288 | ], 1289 | "markers": "python_version >= '3.7'", 1290 | "version": "==3.11.0" 1291 | } 1292 | }, 1293 | "develop": { 1294 | "altair": { 1295 | "hashes": [ 1296 | "sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a", 1297 | "sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026" 1298 | ], 1299 | "markers": "python_version >= '3.7'", 1300 | "version": "==4.2.0" 1301 | }, 1302 | "attrs": { 1303 | "hashes": [ 1304 | "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", 1305 | "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" 1306 | ], 1307 | "markers": "python_version >= '3.5'", 1308 | "version": "==22.1.0" 1309 | }, 1310 | "black": { 1311 | "hashes": [ 1312 | "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7", 1313 | "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6", 1314 | "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650", 1315 | "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb", 1316 | "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d", 1317 | "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d", 1318 | "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de", 1319 | "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395", 1320 | "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae", 1321 | "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa", 1322 | "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef", 1323 | "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383", 1324 | "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66", 1325 | "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87", 1326 | "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d", 1327 | "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0", 1328 | "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b", 1329 | "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458", 1330 | "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4", 1331 | "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1", 1332 | "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff" 1333 | ], 1334 | "index": "pypi", 1335 | "version": "==22.10.0" 1336 | }, 1337 | "blinker": { 1338 | "hashes": [ 1339 | "sha256:1eb563df6fdbc39eeddc177d953203f99f097e9bf0e2b8f9f3cf18b6ca425e36", 1340 | "sha256:923e5e2f69c155f2cc42dafbbd70e16e3fde24d2d4aa2ab72fbe386238892462" 1341 | ], 1342 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 1343 | "version": "==1.5" 1344 | }, 1345 | "cachetools": { 1346 | "hashes": [ 1347 | "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757", 1348 | "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db" 1349 | ], 1350 | "markers": "python_version ~= '3.7'", 1351 | "version": "==5.2.0" 1352 | }, 1353 | "certifi": { 1354 | "hashes": [ 1355 | "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", 1356 | "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" 1357 | ], 1358 | "markers": "python_version >= '3.6'", 1359 | "version": "==2022.9.24" 1360 | }, 1361 | "charset-normalizer": { 1362 | "hashes": [ 1363 | "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", 1364 | "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" 1365 | ], 1366 | "markers": "python_version >= '3.6'", 1367 | "version": "==2.1.1" 1368 | }, 1369 | "click": { 1370 | "hashes": [ 1371 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", 1372 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" 1373 | ], 1374 | "markers": "python_version >= '3.7'", 1375 | "version": "==8.1.3" 1376 | }, 1377 | "commonmark": { 1378 | "hashes": [ 1379 | "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60", 1380 | "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9" 1381 | ], 1382 | "version": "==0.9.1" 1383 | }, 1384 | "decorator": { 1385 | "hashes": [ 1386 | "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", 1387 | "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" 1388 | ], 1389 | "markers": "python_version >= '3.5'", 1390 | "version": "==5.1.1" 1391 | }, 1392 | "entrypoints": { 1393 | "hashes": [ 1394 | "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", 1395 | "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" 1396 | ], 1397 | "markers": "python_version >= '3.6'", 1398 | "version": "==0.4" 1399 | }, 1400 | "gitdb": { 1401 | "hashes": [ 1402 | "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", 1403 | "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7" 1404 | ], 1405 | "markers": "python_version >= '3.7'", 1406 | "version": "==4.0.10" 1407 | }, 1408 | "gitpython": { 1409 | "hashes": [ 1410 | "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f", 1411 | "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd" 1412 | ], 1413 | "markers": "python_version >= '3.7'", 1414 | "version": "==3.1.29" 1415 | }, 1416 | "idna": { 1417 | "hashes": [ 1418 | "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", 1419 | "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" 1420 | ], 1421 | "markers": "python_version >= '3.5'", 1422 | "version": "==3.4" 1423 | }, 1424 | "importlib-metadata": { 1425 | "hashes": [ 1426 | "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b", 1427 | "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313" 1428 | ], 1429 | "markers": "python_version >= '3.7'", 1430 | "version": "==5.1.0" 1431 | }, 1432 | "jinja2": { 1433 | "hashes": [ 1434 | "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", 1435 | "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" 1436 | ], 1437 | "markers": "python_version >= '3.7'", 1438 | "version": "==3.1.2" 1439 | }, 1440 | "jsonschema": { 1441 | "hashes": [ 1442 | "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", 1443 | "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" 1444 | ], 1445 | "markers": "python_version >= '3.7'", 1446 | "version": "==4.17.3" 1447 | }, 1448 | "markupsafe": { 1449 | "hashes": [ 1450 | "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", 1451 | "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", 1452 | "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", 1453 | "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", 1454 | "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", 1455 | "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", 1456 | "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", 1457 | "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", 1458 | "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", 1459 | "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", 1460 | "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", 1461 | "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", 1462 | "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", 1463 | "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", 1464 | "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", 1465 | "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", 1466 | "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", 1467 | "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", 1468 | "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", 1469 | "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", 1470 | "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", 1471 | "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", 1472 | "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", 1473 | "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", 1474 | "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", 1475 | "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", 1476 | "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", 1477 | "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", 1478 | "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", 1479 | "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", 1480 | "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", 1481 | "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", 1482 | "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", 1483 | "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", 1484 | "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", 1485 | "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", 1486 | "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", 1487 | "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", 1488 | "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", 1489 | "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" 1490 | ], 1491 | "markers": "python_version >= '3.7'", 1492 | "version": "==2.1.1" 1493 | }, 1494 | "mypy-extensions": { 1495 | "hashes": [ 1496 | "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", 1497 | "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" 1498 | ], 1499 | "version": "==0.4.3" 1500 | }, 1501 | "numpy": { 1502 | "hashes": [ 1503 | "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d", 1504 | "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07", 1505 | "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df", 1506 | "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9", 1507 | "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d", 1508 | "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a", 1509 | "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719", 1510 | "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2", 1511 | "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280", 1512 | "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa", 1513 | "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387", 1514 | "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1", 1515 | "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43", 1516 | "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f", 1517 | "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398", 1518 | "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63", 1519 | "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de", 1520 | "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8", 1521 | "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481", 1522 | "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0", 1523 | "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d", 1524 | "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e", 1525 | "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96", 1526 | "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb", 1527 | "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6", 1528 | "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d", 1529 | "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a", 1530 | "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135" 1531 | ], 1532 | "markers": "python_version >= '3.8'", 1533 | "version": "==1.23.5" 1534 | }, 1535 | "packaging": { 1536 | "hashes": [ 1537 | "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", 1538 | "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" 1539 | ], 1540 | "markers": "python_version >= '3.6'", 1541 | "version": "==21.3" 1542 | }, 1543 | "pandas": { 1544 | "hashes": [ 1545 | "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883", 1546 | "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028", 1547 | "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b", 1548 | "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824", 1549 | "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe", 1550 | "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e", 1551 | "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261", 1552 | "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b", 1553 | "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f", 1554 | "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5", 1555 | "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0", 1556 | "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a", 1557 | "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc", 1558 | "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39", 1559 | "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5", 1560 | "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702", 1561 | "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f", 1562 | "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3", 1563 | "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519", 1564 | "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f", 1565 | "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc", 1566 | "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72", 1567 | "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb", 1568 | "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789", 1569 | "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090", 1570 | "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273", 1571 | "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2" 1572 | ], 1573 | "markers": "python_version >= '3.8'", 1574 | "version": "==1.5.2" 1575 | }, 1576 | "pathspec": { 1577 | "hashes": [ 1578 | "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5", 1579 | "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0" 1580 | ], 1581 | "markers": "python_version >= '3.7'", 1582 | "version": "==0.10.2" 1583 | }, 1584 | "pillow": { 1585 | "hashes": [ 1586 | "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", 1587 | "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", 1588 | "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", 1589 | "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", 1590 | "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", 1591 | "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", 1592 | "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", 1593 | "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", 1594 | "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", 1595 | "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", 1596 | "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", 1597 | "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", 1598 | "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", 1599 | "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", 1600 | "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", 1601 | "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", 1602 | "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", 1603 | "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", 1604 | "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", 1605 | "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", 1606 | "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", 1607 | "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", 1608 | "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", 1609 | "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", 1610 | "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", 1611 | "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", 1612 | "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", 1613 | "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", 1614 | "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", 1615 | "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", 1616 | "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", 1617 | "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", 1618 | "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", 1619 | "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", 1620 | "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", 1621 | "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", 1622 | "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", 1623 | "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", 1624 | "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", 1625 | "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", 1626 | "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", 1627 | "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", 1628 | "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", 1629 | "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", 1630 | "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", 1631 | "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", 1632 | "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", 1633 | "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", 1634 | "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", 1635 | "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", 1636 | "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", 1637 | "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", 1638 | "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", 1639 | "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", 1640 | "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", 1641 | "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", 1642 | "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", 1643 | "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", 1644 | "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", 1645 | "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", 1646 | "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" 1647 | ], 1648 | "markers": "python_version >= '3.7'", 1649 | "version": "==9.3.0" 1650 | }, 1651 | "platformdirs": { 1652 | "hashes": [ 1653 | "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7", 1654 | "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10" 1655 | ], 1656 | "markers": "python_version >= '3.7'", 1657 | "version": "==2.5.4" 1658 | }, 1659 | "protobuf": { 1660 | "hashes": [ 1661 | "sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7", 1662 | "sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c", 1663 | "sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2", 1664 | "sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b", 1665 | "sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050", 1666 | "sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9", 1667 | "sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7", 1668 | "sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454", 1669 | "sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480", 1670 | "sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469", 1671 | "sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c", 1672 | "sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e", 1673 | "sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db", 1674 | "sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905", 1675 | "sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b", 1676 | "sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86", 1677 | "sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4", 1678 | "sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402", 1679 | "sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7", 1680 | "sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4", 1681 | "sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99", 1682 | "sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee" 1683 | ], 1684 | "markers": "python_version >= '3.7'", 1685 | "version": "==3.20.3" 1686 | }, 1687 | "pyarrow": { 1688 | "hashes": [ 1689 | "sha256:0ec7587d759153f452d5263dbc8b1af318c4609b607be2bd5127dcda6708cdb1", 1690 | "sha256:1765a18205eb1e02ccdedb66049b0ec148c2a0cb52ed1fb3aac322dfc086a6ee", 1691 | "sha256:1a14f57a5f472ce8234f2964cd5184cccaa8df7e04568c64edc33b23eb285dd5", 1692 | "sha256:254017ca43c45c5098b7f2a00e995e1f8346b0fb0be225f042838323bb55283c", 1693 | "sha256:42ba7c5347ce665338f2bc64685d74855900200dac81a972d49fe127e8132f75", 1694 | "sha256:443eb9409b0cf78df10ced326490e1a300205a458fbeb0767b6b31ab3ebae6b2", 1695 | "sha256:61f4c37d82fe00d855d0ab522c685262bdeafd3fbcb5fe596fe15025fbc7341b", 1696 | "sha256:668e00e3b19f183394388a687d29c443eb000fb3fe25599c9b4762a0afd37775", 1697 | "sha256:6f7a7dbe2f7f65ac1d0bd3163f756deb478a9e9afc2269557ed75b1b25ab3610", 1698 | "sha256:70acca1ece4322705652f48db65145b5028f2c01c7e426c5d16a30ba5d739c24", 1699 | "sha256:7b4ede715c004b6fc535de63ef79fa29740b4080639a5ff1ea9ca84e9282f349", 1700 | "sha256:94fb4a0c12a2ac1ed8e7e2aa52aade833772cf2d3de9dde685401b22cec30002", 1701 | "sha256:abb57334f2c57979a49b7be2792c31c23430ca02d24becd0b511cbe7b6b08649", 1702 | "sha256:b069602eb1fc09f1adec0a7bdd7897f4d25575611dfa43543c8b8a75d99d6874", 1703 | "sha256:b1fc226d28c7783b52a84d03a66573d5a22e63f8a24b841d5fc68caeed6784d4", 1704 | "sha256:ba71e6fc348c92477586424566110d332f60d9a35cb85278f42e3473bc1373da", 1705 | "sha256:bf26f809926a9d74e02d76593026f0aaeac48a65b64f1bb17eed9964bfe7ae1a", 1706 | "sha256:cb627673cb98708ef00864e2e243f51ba7b4c1b9f07a1d821f98043eccd3f585", 1707 | "sha256:d1bc6e4d5d6f69e0861d5d7f6cf4d061cf1069cb9d490040129877acf16d4c2a", 1708 | "sha256:db0c5986bf0808927f49640582d2032a07aa49828f14e51f362075f03747d198", 1709 | "sha256:e00174764a8b4e9d8d5909b6d19ee0c217a6cf0232c5682e31fdfbd5a9f0ae52", 1710 | "sha256:e141a65705ac98fa52a9113fe574fdaf87fe0316cde2dffe6b94841d3c61544c", 1711 | "sha256:e3fe5049d2e9ca661d8e43fab6ad5a4c571af12d20a57dffc392a014caebef65", 1712 | "sha256:efa59933b20183c1c13efc34bd91efc6b2997377c4c6ad9272da92d224e3beb1", 1713 | "sha256:f2d00aa481becf57098e85d99e34a25dba5a9ade2f44eb0b7d80c80f2984fc03" 1714 | ], 1715 | "markers": "python_version >= '3.7'", 1716 | "version": "==10.0.1" 1717 | }, 1718 | "pydeck": { 1719 | "hashes": [ 1720 | "sha256:07edde833f7cfcef6749124351195aa7dcd24663d4909fd7898dbd0b6fbc01ec", 1721 | "sha256:a8fa7757c6f24bba033af39db3147cb020eef44012ba7e60d954de187f9ed4d5" 1722 | ], 1723 | "markers": "python_version >= '3.7'", 1724 | "version": "==0.8.0" 1725 | }, 1726 | "pygments": { 1727 | "hashes": [ 1728 | "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", 1729 | "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" 1730 | ], 1731 | "markers": "python_version >= '3.6'", 1732 | "version": "==2.13.0" 1733 | }, 1734 | "pyinstrument": { 1735 | "hashes": [ 1736 | "sha256:01920b3b3d1d5fb063e1f7ae00711f2bcbdb1ab987133ed46ef208e9c0d59a3a", 1737 | "sha256:0fc6a26a2088471e5fa5dba8e410044eba62f8206ab7dc59c8e44ae8291b472d", 1738 | "sha256:15837ac5188334d684555f1edc7ea3cf4e859ccb12fc813353cff30f327ea23f", 1739 | "sha256:1dc2791d2cd2fd3459cb55010004a5cc2a9a8b4625a0cbea45a4b1aebbe2c3a2", 1740 | "sha256:4776484afbdf9cc1ec090f5933ec297a4b38e545dace4728b29d3d338c037898", 1741 | "sha256:50a0a260e0867717991d0b8b35568e03451d4e4adcdf3e693fc0dd0e01a2a86a", 1742 | "sha256:54c94dd9f196ed3510cfb951b6930d89162e5279cc0f793b456e68e3b5f2c087", 1743 | "sha256:5a562ed5febecf7e76f9b58bb1a77e4c76973dee3fe96d63c7df6d861b8198ef", 1744 | "sha256:5b0228271c8799504d0638255a0666a68db45f9938dc6e739d7facc8d5aa65dd", 1745 | "sha256:6262c876534b0734bcd23ca65004a1f40c47b7af60e801612a876562d1792b54", 1746 | "sha256:634f431037fdf3311fc7592e4f250e2657f82e97c4592234de567d674fd9d8e1", 1747 | "sha256:75eade68081645d5deb073e93c18a0c1194724ebe63e43d94b13d922714209fe", 1748 | "sha256:848d7cd1e8a6b6d8efc3a0658f949ca8e05e0fd008101d22ec2c720079840ae0", 1749 | "sha256:864fd4ef0651bca4c304a89da8736400a6c12469b28d6799d961e0f4babb3033", 1750 | "sha256:88d358ca7de27b65dbe88a8926922ebca236172072620bdaab0bb85933d0e665", 1751 | "sha256:8a57444ce2098777b031b7b88d80832f93162b44a930c95d86b55d96b11d39f8", 1752 | "sha256:917017b100efce161b9de0cd3aa60a8bc177a95ce8c6c195269b4b4a9fbea169", 1753 | "sha256:a1fabafc10bec10e431a0b9fb535c90f96e40cd9b185292c01e8bbeb774b4132", 1754 | "sha256:a2b112a9b1d59017dede3e965aafe1faed716e671d3be4c3e507a3c0bbb76d20", 1755 | "sha256:ad9e4bc40939eced2621fd41740d4e730fa9ef3efe10250b4307a51ed679de65", 1756 | "sha256:beb4b3347b3f1403d34f32d864540c1a57b322268fc632f422d05ceb826f6eb2", 1757 | "sha256:d156d80cea866a3f67fab750acce6b2e8c7f3dcb6aceb33c20f0baee49ff078e", 1758 | "sha256:d59ca2ff6929e87b60eca6ce1405d160db7ce048d57f4b681790c29778c023be", 1759 | "sha256:e73c05b393ea48fefd5e06a78fb90385eecdc0c6ad8b83ffb95b00ff3fe00a22", 1760 | "sha256:f7c4589f5027ac9bdd24d59f76ee7f31091a92ca1f60dac22262789bba97db2c", 1761 | "sha256:f7dad2844048cf1438dfccdc1a126711a422cc1fb4b2989685b727ae85af27d7", 1762 | "sha256:f9b94bd788a3c07df4dbc4275ffab258a19b927462b3e0463a95a8963b04b9c6", 1763 | "sha256:fd0b92d9dfe97222e65ecec811e2923776f096f8df8a53ece24db18683755131" 1764 | ], 1765 | "markers": "python_version >= '3.7'", 1766 | "version": "==4.1.1" 1767 | }, 1768 | "pympler": { 1769 | "hashes": [ 1770 | "sha256:993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa", 1771 | "sha256:d260dda9ae781e1eab6ea15bacb84015849833ba5555f141d2d9b7b7473b307d" 1772 | ], 1773 | "markers": "python_version >= '3.6'", 1774 | "version": "==1.0.1" 1775 | }, 1776 | "pyparsing": { 1777 | "hashes": [ 1778 | "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", 1779 | "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" 1780 | ], 1781 | "markers": "python_full_version >= '3.6.8'", 1782 | "version": "==3.0.9" 1783 | }, 1784 | "pyrsistent": { 1785 | "hashes": [ 1786 | "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", 1787 | "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", 1788 | "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", 1789 | "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", 1790 | "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", 1791 | "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", 1792 | "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", 1793 | "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", 1794 | "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", 1795 | "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", 1796 | "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", 1797 | "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", 1798 | "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", 1799 | "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", 1800 | "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", 1801 | "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", 1802 | "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", 1803 | "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", 1804 | "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", 1805 | "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", 1806 | "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", 1807 | "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" 1808 | ], 1809 | "markers": "python_version >= '3.7'", 1810 | "version": "==0.19.2" 1811 | }, 1812 | "python-dateutil": { 1813 | "hashes": [ 1814 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", 1815 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" 1816 | ], 1817 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", 1818 | "version": "==2.8.2" 1819 | }, 1820 | "pytz": { 1821 | "hashes": [ 1822 | "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", 1823 | "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" 1824 | ], 1825 | "version": "==2022.6" 1826 | }, 1827 | "pytz-deprecation-shim": { 1828 | "hashes": [ 1829 | "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", 1830 | "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" 1831 | ], 1832 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 1833 | "version": "==0.1.0.post0" 1834 | }, 1835 | "requests": { 1836 | "hashes": [ 1837 | "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", 1838 | "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" 1839 | ], 1840 | "markers": "python_version >= '3.7' and python_full_version < '4.0.0'", 1841 | "version": "==2.28.1" 1842 | }, 1843 | "rich": { 1844 | "hashes": [ 1845 | "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e", 1846 | "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0" 1847 | ], 1848 | "markers": "python_full_version >= '3.6.3' and python_full_version < '4.0.0'", 1849 | "version": "==12.6.0" 1850 | }, 1851 | "semver": { 1852 | "hashes": [ 1853 | "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4", 1854 | "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f" 1855 | ], 1856 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1857 | "version": "==2.13.0" 1858 | }, 1859 | "six": { 1860 | "hashes": [ 1861 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", 1862 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" 1863 | ], 1864 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", 1865 | "version": "==1.16.0" 1866 | }, 1867 | "smmap": { 1868 | "hashes": [ 1869 | "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", 1870 | "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" 1871 | ], 1872 | "markers": "python_version >= '3.6'", 1873 | "version": "==5.0.0" 1874 | }, 1875 | "streamlit": { 1876 | "hashes": [ 1877 | "sha256:31b2fa33848f8dbcf526e6c93017cf58c81a8479844c4f6ff553382e1bac6152", 1878 | "sha256:40933b64e7b3a1770d798918cbd2ae52a6671a52266ac069f62e1b66f38e0662" 1879 | ], 1880 | "index": "pypi", 1881 | "version": "==1.15.2" 1882 | }, 1883 | "streamlit-profiler": { 1884 | "hashes": [ 1885 | "sha256:0d87494abdbd9d8372fc004360e06e18dfce316432853d210334026bf616cd2b", 1886 | "sha256:66b0a95da4bd2377ee1c7c9020f5b535bb03cd77ffe801b341dfaa2490676506" 1887 | ], 1888 | "index": "pypi", 1889 | "version": "==0.2.4" 1890 | }, 1891 | "toml": { 1892 | "hashes": [ 1893 | "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", 1894 | "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" 1895 | ], 1896 | "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", 1897 | "version": "==0.10.2" 1898 | }, 1899 | "tomli": { 1900 | "hashes": [ 1901 | "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", 1902 | "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" 1903 | ], 1904 | "markers": "python_full_version < '3.11.0a7'", 1905 | "version": "==2.0.1" 1906 | }, 1907 | "toolz": { 1908 | "hashes": [ 1909 | "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f", 1910 | "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194" 1911 | ], 1912 | "markers": "python_version >= '3.5'", 1913 | "version": "==0.12.0" 1914 | }, 1915 | "tornado": { 1916 | "hashes": [ 1917 | "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca", 1918 | "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72", 1919 | "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23", 1920 | "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8", 1921 | "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b", 1922 | "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9", 1923 | "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13", 1924 | "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75", 1925 | "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac", 1926 | "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e", 1927 | "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b" 1928 | ], 1929 | "markers": "python_version >= '3.7'", 1930 | "version": "==6.2" 1931 | }, 1932 | "typing-extensions": { 1933 | "hashes": [ 1934 | "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", 1935 | "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" 1936 | ], 1937 | "markers": "python_version >= '3.7'", 1938 | "version": "==4.4.0" 1939 | }, 1940 | "tzdata": { 1941 | "hashes": [ 1942 | "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d", 1943 | "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa" 1944 | ], 1945 | "markers": "python_version >= '3.6'", 1946 | "version": "==2022.7" 1947 | }, 1948 | "tzlocal": { 1949 | "hashes": [ 1950 | "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745", 1951 | "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7" 1952 | ], 1953 | "markers": "python_version >= '3.6'", 1954 | "version": "==4.2" 1955 | }, 1956 | "urllib3": { 1957 | "hashes": [ 1958 | "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", 1959 | "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" 1960 | ], 1961 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 1962 | "version": "==1.26.13" 1963 | }, 1964 | "validators": { 1965 | "hashes": [ 1966 | "sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a" 1967 | ], 1968 | "markers": "python_version >= '3.4'", 1969 | "version": "==0.20.0" 1970 | }, 1971 | "watchdog": { 1972 | "hashes": [ 1973 | "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412", 1974 | "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654", 1975 | "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306", 1976 | "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33", 1977 | "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd", 1978 | "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7", 1979 | "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892", 1980 | "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609", 1981 | "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6", 1982 | "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1", 1983 | "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591", 1984 | "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d", 1985 | "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d", 1986 | "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c", 1987 | "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3", 1988 | "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39", 1989 | "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213", 1990 | "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330", 1991 | "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428", 1992 | "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1", 1993 | "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846", 1994 | "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153", 1995 | "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3", 1996 | "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9", 1997 | "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658" 1998 | ], 1999 | "index": "pypi", 2000 | "version": "==2.1.9" 2001 | }, 2002 | "zipp": { 2003 | "hashes": [ 2004 | "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", 2005 | "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" 2006 | ], 2007 | "markers": "python_version >= '3.7'", 2008 | "version": "==3.11.0" 2009 | } 2010 | } 2011 | } 2012 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | # components-hub 3 | An automated hub of Streamlit components 4 | 5 |

6 | Explore all custom components for Streamlit on one page – animated, ranked, searchable, and with category filters. Check it out at components.streamlit.app!

7 | 8 |

9 | -------------------------------------------------------------------------------- /additional_data.yaml: -------------------------------------------------------------------------------- 1 | hiplot: 2 | categories: 3 | - charts 4 | streamlit-webrtc: 5 | categories: 6 | - video 7 | spacy-streamlit: 8 | categories: 9 | - text 10 | nlu: 11 | categories: 12 | - text 13 | streamlit-aggrid: 14 | categories: 15 | - dataframe 16 | streamlit-drawable-canvas: 17 | categories: 18 | - image 19 | st-annotated-text: 20 | categories: 21 | - text 22 | streamlit-authenticator: 23 | categories: 24 | - authentication 25 | streamlit-echarts: 26 | categories: 27 | - charts 28 | streamlit-folium: 29 | categories: 30 | - maps 31 | plost: 32 | categories: 33 | - charts 34 | streamlit-pandas-profiling: 35 | categories: 36 | - dataframe 37 | - development 38 | extra-streamlit-components: 39 | categories: 40 | - collection 41 | - navigation 42 | - widgets 43 | - development 44 | streamlit-option-menu: 45 | categories: 46 | - navigation 47 | streamlit-agraph: 48 | categories: 49 | - graph 50 | barfi: 51 | categories: 52 | - integrations 53 | streamlit-prophet: 54 | categories: 55 | - integrations 56 | streamlit-ace: 57 | categories: 58 | - text 59 | - code 60 | streamlit-elements: 61 | categories: 62 | - collection 63 | - widgets 64 | streamlit-bokeh-events: 65 | categories: 66 | - charts 67 | streamlit-analytics: 68 | categories: 69 | - development 70 | streamlit-tags: 71 | categories: 72 | - widgets 73 | streamlit-image-comparison: 74 | categories: 75 | - image 76 | stqdm: 77 | categories: 78 | - widgets 79 | stmol: 80 | categories: 81 | - science 82 | streamlit-terran-timeline: 83 | categories: 84 | - video 85 | streamlit-pydantic: 86 | categories: 87 | - app-builder 88 | streamlit-plotly-events: 89 | categories: 90 | - charts 91 | streamlit-extras: 92 | categories: 93 | - collection 94 | - charts 95 | - text 96 | - navigation 97 | - video 98 | - style 99 | - dataframe 100 | - integrations 101 | - development 102 | - widgets 103 | streamlit-chat: 104 | categories: 105 | - text 106 | streamlit-cropper: 107 | categories: 108 | - image 109 | streamlit-launchpad: 110 | categories: 111 | - navigation 112 | streamlit-lottie: 113 | categories: 114 | - style 115 | streamlit-observable: 116 | categories: 117 | - integrations 118 | streamlit-vega-lite: 119 | categories: 120 | - charts 121 | streamlit-autorefresh: 122 | categories: 123 | - development 124 | streamlit-player: 125 | categories: 126 | - video 127 | streamlit-img-label: 128 | categories: 129 | - image 130 | hydralit-components: 131 | categories: 132 | - navigation 133 | streamlit-book: 134 | categories: 135 | - app-builder 136 | streamlit-labelstudio: 137 | categories: 138 | - integrations 139 | - text 140 | - image 141 | - video 142 | streamlit-d3-demo: 143 | categories: 144 | - charts 145 | streamlit-on-Hover-tabs: 146 | categories: 147 | - navigation 148 | streamlit-timeline: 149 | categories: 150 | - widgets 151 | streamlit-keplergl: 152 | categories: 153 | - maps 154 | streamlit-embedcode: 155 | categories: 156 | - code 157 | streamlit-pages: 158 | categories: 159 | - navigation 160 | streamlit-server-state: 161 | categories: 162 | - development 163 | streamlit-jina: 164 | categories: 165 | - integrations 166 | - text 167 | streamlit-shap: 168 | categories: 169 | - charts 170 | streamlit-login-auth-ui: 171 | categories: 172 | - authentication 173 | streamlit-tensorboard: 174 | categories: 175 | - integrations 176 | streamlit-nested-layout: 177 | categories: 178 | - style 179 | streamlit-javascript: 180 | categories: 181 | - development 182 | streamlit-keyup: 183 | categories: 184 | - widgets 185 | streamlit-vis-timeline: 186 | categories: 187 | - widgets 188 | streamlit-profiler: 189 | categories: 190 | - development 191 | streamlit-modal: 192 | categories: 193 | - widgets 194 | streamlit-awesome-table: 195 | categories: 196 | - dataframe 197 | streamlit-antv: 198 | categories: 199 | - integrations 200 | streamlit-sidemenu: 201 | categories: 202 | - navigation 203 | streamlit-xui: 204 | categories: 205 | - widgets 206 | st-click-detector: 207 | categories: 208 | - widgets 209 | - image 210 | streamlit-searchbox: 211 | categories: 212 | - widgets 213 | streamlit-kickoff-cli: 214 | categories: 215 | - development 216 | st-vizzu: 217 | categories: 218 | - charts 219 | streamlit-quill: 220 | categories: 221 | - code 222 | streamlit-metrics: 223 | categories: 224 | - widgets 225 | streamlit-d3graph: 226 | categories: 227 | - graph 228 | streamlit-image-select: 229 | categories: 230 | - image 231 | st-speckmol: 232 | categories: 233 | - science 234 | st-clickable-images: 235 | categories: 236 | - image 237 | streamlit-tree-select: 238 | categories: 239 | - widgets 240 | streamlit-faker: 241 | categories: 242 | - development 243 | streamlit-image-crop: 244 | categories: 245 | - image 246 | streamlit-wordcloud: 247 | categories: 248 | - text 249 | streamlit-yellowbrick: 250 | categories: 251 | - charts 252 | streamlit-disqus: 253 | categories: 254 | - integrations 255 | st-btn-select: 256 | categories: 257 | - widgets 258 | streamlit-cytoscapejs: 259 | categories: 260 | - graph 261 | streamlit-multipage: 262 | categories: 263 | - navigation 264 | st-material-table: 265 | categories: 266 | - dataframe 267 | streamlit-letsplot: 268 | categories: 269 | - charts 270 | st-cytoscape: 271 | categories: 272 | - graph 273 | streamlit-discourse: 274 | categories: 275 | - integrations 276 | streamlit-ext: 277 | categories: 278 | - development 279 | streamlit-vertical-slider: 280 | categories: 281 | - widgets 282 | streamlit-visgraph: 283 | categories: 284 | - graph 285 | st-execbox: 286 | categories: 287 | - code 288 | streamlit-audiorecorder: 289 | categories: 290 | - audio 291 | streamlit-permalink: 292 | categories: 293 | - development 294 | - widgets 295 | streamlit-sortables: 296 | categories: 297 | - widgets 298 | streamlit-forum: 299 | categories: 300 | - development 301 | streamlit-text-label: 302 | categories: 303 | - text 304 | streamlit-base-extras: 305 | categories: 306 | - collection 307 | streamlit-callbacks: 308 | categories: 309 | - development 310 | streamlit-raster: 311 | categories: 312 | - maps 313 | streamlit-custom-toggle: 314 | categories: 315 | - widgets 316 | streamlit-toggle-switch: 317 | categories: 318 | - widgets 319 | streamlit-bridge: 320 | categories: 321 | - development 322 | streamlit-excel-table: 323 | categories: 324 | - dataframe 325 | streamlit-nivo: 326 | categories: 327 | - charts 328 | streamlit-parameters: 329 | categories: 330 | - development 331 | streamlit-sync: 332 | categories: 333 | - development 334 | streamlit-gchart: 335 | categories: 336 | - charts 337 | - text 338 | streamlit-ws-localstorage: 339 | categories: 340 | - development 341 | streamlit-camera-input-live: 342 | categories: 343 | - video 344 | - image 345 | streamlit-text-rating: 346 | categories: 347 | - widgets 348 | streamlit-custom-notification-box: 349 | categories: 350 | - widgets 351 | streamlit-dynamic-tabs: 352 | categories: 353 | - widgets 354 | stpyvista: 355 | categories: 356 | - 3d 357 | streamlit-gosling: 358 | categories: 359 | - charts 360 | - science 361 | streamlit-inspector: 362 | categories: 363 | - development 364 | streamlit-leaflet: 365 | categories: 366 | - maps 367 | streamlit-mapbox: 368 | categories: 369 | - maps 370 | streamlit-raw-echarts: 371 | categories: 372 | - charts 373 | streamlit-pretty-notification-box: 374 | categories: 375 | - widgets 376 | streamlit-keycloak: 377 | categories: 378 | - authentication 379 | streamlit-supabase-auth: 380 | categories: 381 | - authentication 382 | elyra-streamlit-extension: 383 | categories: 384 | - integrations 385 | multipage-streamlit: 386 | categories: 387 | - navigation 388 | streamlit-pagination: 389 | categories: 390 | - widgets 391 | streamlit-datalist: 392 | categories: 393 | - widgets 394 | streamlit-marquee: 395 | categories: 396 | - widgets 397 | streamlit-react-flow: 398 | categories: 399 | - graph 400 | streamlit-js-eval: 401 | categories: 402 | - development 403 | st-pages: 404 | categories: 405 | - navigation 406 | streamlit-card: 407 | categories: 408 | - widgets 409 | streamlit-cookies-manager: 410 | categories: 411 | - devleopment 412 | streamlit-inspect: 413 | categories: 414 | - development 415 | streamlit-router: 416 | categories: 417 | - navigation 418 | stvis: 419 | categories: 420 | - graph 421 | streamlit-firstlanguage: 422 | categories: 423 | - text 424 | - integrations 425 | streamlit-cardselectable: 426 | categories: 427 | - widgets 428 | streamlit-dimensions: 429 | categories: 430 | - development 431 | - widgets 432 | streamlit-draggable-list: 433 | categories: 434 | - widgets 435 | streamlitfront: 436 | categories: 437 | - app-builder 438 | streamlit-globe: 439 | categories: 440 | - maps 441 | streamlit-gov-uk-components: 442 | categories: 443 | - collections 444 | streamlit-plotly-mapboxEvents: 445 | categories: 446 | - maps 447 | streamlit-scrollable-textbox: 448 | categories: 449 | - widgets 450 | - text 451 | audio-recorder-streamlit: 452 | categories: 453 | - audio 454 | st-card-component: 455 | categories: 456 | - widgets 457 | st-echarts-events: 458 | categories: 459 | - charts 460 | st-mui-multiselect: 461 | categories: 462 | - widgets 463 | streamlit-auth0: 464 | categories: 465 | - authentication 466 | streamlit-business-intelligence: 467 | categories: 468 | - '' 469 | streamlit-force-graph-simulator: 470 | categories: 471 | - graph 472 | streamlit-heroku: 473 | categories: 474 | - '' 475 | streamlit-mock: 476 | categories: 477 | - '' 478 | streamlit-persistence: 479 | categories: 480 | - '' 481 | streamlit-space: 482 | categories: 483 | - '' 484 | streamlit-tfx: 485 | categories: 486 | - '' 487 | streamlit-url-fragment: 488 | categories: 489 | - '' 490 | st-compare-stock: 491 | categories: 492 | - '' 493 | streamlit-aggrid-community: 494 | categories: 495 | - '' 496 | streamlit-query-builder: 497 | categories: 498 | - '' 499 | streamlit_highcharts: 500 | categories: 501 | - '' 502 | ct-auth0-streamlit-component: 503 | categories: 504 | - '' 505 | dvc-streamlit: 506 | categories: 507 | - '' 508 | flet-like-streamlit: 509 | categories: 510 | - '' 511 | metastreamlit: 512 | categories: 513 | - '' 514 | mystreamlit: 515 | categories: 516 | - '' 517 | pollination-streamlit: 518 | categories: 519 | - '' 520 | pr-streamlit-template: 521 | categories: 522 | - '' 523 | semantha-streamlit-compare: 524 | categories: 525 | - '' 526 | sherpa-streamlit: 527 | categories: 528 | - '' 529 | st-agraph-symrzknr: 530 | categories: 531 | - '' 532 | st-card-alert-2: 533 | categories: 534 | - '' 535 | st-card-component-0: 536 | categories: 537 | - '' 538 | st-card-component-2: 539 | categories: 540 | - '' 541 | st-card-component-alex: 542 | categories: 543 | - '' 544 | st-card-search-component: 545 | categories: 546 | - '' 547 | st-comp-3dmodel: 548 | categories: 549 | - '' 550 | st-dataframe-component: 551 | categories: 552 | - '' 553 | st-dep-parsing-component: 554 | categories: 555 | - '' 556 | st-event-selectioninterface: 557 | categories: 558 | - '' 559 | st-event-selection-interfaces: 560 | categories: 561 | - '' 562 | st-flashcard: 563 | categories: 564 | - '' 565 | st-highlightable-text: 566 | categories: 567 | - '' 568 | st-rating-df: 569 | categories: 570 | - '' 571 | streamlit-alert-component: 572 | categories: 573 | - '' 574 | streamlit-auth0-component: 575 | categories: 576 | - '' 577 | streamlit-auth0-service: 578 | categories: 579 | - '' 580 | streamlit-azure-ad-login: 581 | categories: 582 | - '' 583 | streamlit-bias-rank-component: 584 | categories: 585 | - '' 586 | streamlit-browser-storage: 587 | categories: 588 | - '' 589 | streamlit-card-select: 590 | categories: 591 | - '' 592 | streamlit-cards-templates: 593 | categories: 594 | - '' 595 | streamlit-charticulator: 596 | categories: 597 | - charts 598 | streamlit-charty: 599 | categories: 600 | - '' 601 | streamlit-circular-progress-component: 602 | categories: 603 | - '' 604 | streamlit-cookies: 605 | categories: 606 | - '' 607 | streamlit-custom-button: 608 | categories: 609 | - '' 610 | streamlit-custom-tooltip: 611 | categories: 612 | - '' 613 | streamlit-data-profile-viewer: 614 | categories: 615 | - '' 616 | streamlit-dbtree: 617 | categories: 618 | - '' 619 | streamlit-diff-viewer: 620 | categories: 621 | - '' 622 | streamlit-doubutsushogi: 623 | categories: 624 | - '' 625 | streamlit-elements-fluence: 626 | categories: 627 | - '' 628 | streamlit-embeded: 629 | categories: 630 | - '' 631 | streamlit-fb-post: 632 | categories: 633 | - '' 634 | streamlit-firebase-remote-config-component: 635 | categories: 636 | - '' 637 | streamlit-flashcard: 638 | categories: 639 | - '' 640 | streamlit-gallery: 641 | categories: 642 | - '' 643 | streamlit-gcp: 644 | categories: 645 | - '' 646 | streamlit-geo-selector: 647 | categories: 648 | - '' 649 | streamlit-google-geochart: 650 | categories: 651 | - '' 652 | streamlit-gradio: 653 | categories: 654 | - '' 655 | streamlit-graphic-slider: 656 | categories: 657 | - '' 658 | streamlit-hgb: 659 | categories: 660 | - '' 661 | streamlit-highcharts: 662 | categories: 663 | - '' 664 | streamlit-huggingface: 665 | categories: 666 | - '' 667 | streamlit-icon-component: 668 | categories: 669 | - '' 670 | streamlit-imagegrid: 671 | categories: 672 | - '' 673 | streamlit-jet: 674 | categories: 675 | - '' 676 | streamlit-keboola-api: 677 | categories: 678 | - '' 679 | streamlit-kpi-metric: 680 | categories: 681 | - '' 682 | streamlit-lianshan: 683 | categories: 684 | - '' 685 | streamlit-likedislike: 686 | categories: 687 | - '' 688 | streamlit-location: 689 | categories: 690 | - '' 691 | streamlit-message: 692 | categories: 693 | - '' 694 | streamlit-monaco-yaml: 695 | categories: 696 | - '' 697 | streamlit-multi-row-inputs: 698 | categories: 699 | - '' 700 | streamlit-multi-textarea: 701 | categories: 702 | - '' 703 | streamlit-node-graph: 704 | categories: 705 | - '' 706 | streamlit-ocean-compute: 707 | categories: 708 | - '' 709 | streamlit-pagination-component: 710 | categories: 711 | - '' 712 | streamlit-pagnation: 713 | categories: 714 | - '' 715 | streamlit-pollination: 716 | categories: 717 | - '' 718 | streamlit-rightly-component: 719 | categories: 720 | - '' 721 | streamlit-searchbar: 722 | categories: 723 | - '' 724 | streamlit-sentence-selector: 725 | categories: 726 | - '' 727 | streamlit-stackoverflow: 728 | categories: 729 | - '' 730 | streamlit-state: 731 | categories: 732 | - '' 733 | streamlit-stepper-bar: 734 | categories: 735 | - '' 736 | streamlit-talk: 737 | categories: 738 | - '' 739 | streamlit-text-annotation: 740 | categories: 741 | - '' 742 | streamlit-text-like: 743 | categories: 744 | - '' 745 | streamlit-theme: 746 | categories: 747 | - '' 748 | streamlit-timing: 749 | categories: 750 | - '' 751 | streamlit-toggle: 752 | categories: 753 | - '' 754 | streamlit-vtkjs: 755 | categories: 756 | - '' 757 | streamlit-wallet-connect: 758 | categories: 759 | - '' 760 | streamlit-weather-widget: 761 | categories: 762 | - '' 763 | streamlit-webscrap-tool: 764 | categories: 765 | - '' 766 | streamlit-widget-tracker: 767 | categories: 768 | - '' 769 | streamlit-wizard: 770 | categories: 771 | - '' 772 | st-row-buttons: 773 | categories: 774 | - '' 775 | st-searchbar: 776 | categories: 777 | - '' 778 | st-stylish: 779 | categories: 780 | - '' 781 | st-textnav-2: 782 | categories: 783 | - '' 784 | st-textnav-3: 785 | categories: 786 | - '' 787 | st-textnav-4: 788 | categories: 789 | - '' 790 | st-textnav-5: 791 | categories: 792 | - '' 793 | st-textnav-6: 794 | categories: 795 | - '' 796 | st-textnav-7: 797 | categories: 798 | - '' 799 | st-textnav-8: 800 | categories: 801 | - '' 802 | st-textnav-component: 803 | categories: 804 | - '' 805 | st-textnav-components: 806 | categories: 807 | - '' 808 | st-tokenization-vis-component: 809 | categories: 810 | - '' 811 | vegafusion-streamlit: 812 | categories: 813 | - '' 814 | -------------------------------------------------------------------------------- /default_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrieke/components-hub/4e21e4d9c1352ad803df3511511f2365385ce96c/default_image.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | streamlit==1.15.2 2 | beautifulsoup4==4.11.1 3 | stqdm==0.0.4 4 | pypistats==1.1.0 5 | markdownlit==0.0.5 6 | pyyaml==6.0 7 | streamlit-pills==0.3.0 -------------------------------------------------------------------------------- /streamlit_app.py: -------------------------------------------------------------------------------- 1 | import re 2 | import time 3 | from dataclasses import dataclass 4 | from datetime import datetime, timedelta 5 | from typing import List 6 | 7 | import httpx 8 | import pypistats 9 | import requests 10 | import streamlit as st 11 | import yaml 12 | from bs4 import BeautifulSoup 13 | from markdownlit import mdlit 14 | from stqdm import stqdm 15 | 16 | # from streamlit_dimensions import st_dimensions 17 | from streamlit_pills import pills 18 | 19 | # from streamlit_profiler import Profiler 20 | 21 | # profiler = Profiler() 22 | 23 | st.set_page_config("Streamlit Components Hub", "🎪", layout="wide") 24 | NUM_COLS = 4 25 | 26 | EXCLUDE = [ 27 | "streamlit", 28 | "streamlit-nightly", 29 | "repl-streamlit", 30 | "streamlit-with-ssl", 31 | "streamlit-fesion", 32 | "streamlit-aggrid-pro", 33 | "st-dbscan", 34 | "st-kickoff", 35 | "st-undetected-chromedriver", 36 | "st-package-reviewer", 37 | "streamlit-webcam-example", 38 | "st-pyv8", 39 | "streamlit-extras-arnaudmiribel", 40 | "st-schema-python", 41 | "st-optics", 42 | "st-spin", 43 | "st-dataprovider", 44 | "st-microservice", 45 | "st_nester", 46 | "st-jsme", 47 | "st-parsetree", 48 | "st-git-hooks", 49 | "st-schema", 50 | "st-distributions", 51 | "st-common-data", 52 | "awesome-streamlit", 53 | "awesome-streamlit-master", 54 | "extra-streamlit-components-SEM", 55 | "barfi", 56 | "streamlit-plotly-events-retro", 57 | "pollination-streamlit-io", 58 | "pollination-streamlit-viewer", 59 | "st-clustering", 60 | "streamlit-text-rating-component", 61 | "custom-streamlit", 62 | "hf-streamlit", 63 | ] 64 | 65 | CATEGORY_NAMES = { 66 | # Putting this first so people don't miss it. Plus I think's it's one of the most 67 | # important ones. 68 | "widgets": "General widgets", # 35 69 | # Visualizations of different data types. 70 | "charts": "Charts", # 16 71 | "image": "Images", # 10 72 | "video": "Video", # 6 73 | "text": "Text", # 12 74 | "maps": "Maps & geospatial", # 7 75 | "dataframe": "Dataframes & tables", # 6 76 | "science": "Molecules & genes", # 3 77 | "graph": "Graphs", # 7 78 | "3d": "3D", # 1 79 | "code": "Code & editors", # 4 80 | # More general elements in the app. 81 | "navigation": "Page navigation", # 12 82 | "authentication": "Authentication", # 5 83 | "style": "Style & layout", # 3 84 | # More backend-y/dev stuff. 85 | # TODO: Should probably split this up, "Developer tools" contains a lot of stuff. 86 | "development": "Developer tools", # 22 87 | "app-builder": "App builders", # 3 88 | # General purpose categories. 89 | "integrations": "Integrations with other tools", # 14 90 | "collection": "Collections of components", # 4 91 | } 92 | 93 | CATEGORY_ICONS = [ 94 | "🧰", 95 | "📊", 96 | "🌇", 97 | "🎥", 98 | "📝", 99 | "🗺️", 100 | "🧮", 101 | "🧬", 102 | "🪢", 103 | "🧊", 104 | "✏️", 105 | "📃", 106 | "🔐", 107 | "🎨", 108 | "🛠️", 109 | "🏗️", 110 | "🔌", 111 | "📦", 112 | ] 113 | 114 | 115 | def icon(emoji: str): 116 | """Shows an emoji as a Notion-style page icon.""" 117 | st.write( 118 | f'{emoji}', 119 | unsafe_allow_html=True, 120 | ) 121 | 122 | 123 | st.write( 124 | '', 125 | unsafe_allow_html=True, 126 | ) 127 | 128 | # Only do this once at the beginning of the session. If we're doing it at every rerun, 129 | # the width will fluctuate because the sidebar appears or disappears, leading to 130 | # this running over and over again. 131 | # Note that this slows the app down quite a bit because it triggers a second rerun, 132 | # as soon as st_dimensions knows its width. 133 | # if "screen_width" not in st.session_state: 134 | # dimensions = st_dimensions() 135 | # if dimensions is not None: 136 | # st.session_state.screen_width = dimensions["width"] 137 | 138 | # if "screen_width" in st.session_state and st.session_state.screen_width < 768: 139 | # container = st.container() # small screen, show controls at top of page 140 | # else: 141 | # container = st.sidebar # large screen, show controls in sidebar 142 | 143 | # with container: 144 | icon("🎪") 145 | """ 146 | # Streamlit Components Hub 147 | 148 | [![](https://img.shields.io/github/stars/jrieke/components-hub?style=social)](https://github.com/jrieke/components-hub)   [![](https://img.shields.io/twitter/follow/jrieke?style=social)](https://twitter.com/jrieke) 149 | """ 150 | 151 | description_text = """ 152 | Discover {} Streamlit components! Most information on this page is 153 | automatically crawled from Github, PyPI, and the 154 | [Streamlit forum](https://discuss.streamlit.io/t/streamlit-components-community-tracker/4634). 155 | If you build your own [custom component](https://docs.streamlit.io/library/components/create), 156 | it should appear here within a few days. 157 | """ 158 | description = st.empty() 159 | description.write(description_text.format("all")) 160 | col1, col2 = st.columns([2, 1]) 161 | search = col1.text_input("Search", placeholder='e.g. "image" or "text" or "card"') 162 | if search: 163 | print(f"Search term: {search}") 164 | sorting = col2.selectbox( 165 | "Sort by", ["⭐️ Stars on GitHub", "⬇️ Downloads last month", "🐣 Newest"] 166 | ) 167 | install_command = "pip install" 168 | category = pills( 169 | "Category", 170 | list(CATEGORY_NAMES.keys()), 171 | CATEGORY_ICONS, 172 | index=None, 173 | format_func=lambda x: CATEGORY_NAMES.get(x, x), 174 | label_visibility="collapsed", 175 | ) 176 | 177 | # if "screen_width" in st.session_state and st.session_state.screen_width < 768: 178 | st.write("") 179 | st.error("This app is deprecated and unmaintained. You can now find all components at https://streamlit.io/components") 180 | 181 | @st.experimental_memo(ttl=28 * 24 * 3600, persist="disk", show_spinner=False) 182 | def get(*args, **kwargs): 183 | res = requests.get(*args, **kwargs) 184 | return res.status_code, res.text 185 | 186 | 187 | @st.experimental_memo(ttl=28 * 24 * 3600, persist="disk", show_spinner=False) 188 | def get_github_info(url): 189 | """use the github api to get the number of stars for a given repo""" 190 | url = url.replace("https://", "").replace("http://", "") 191 | user, repo = url.split("/")[1:3] 192 | response = requests.get( 193 | f"https://api.github.com/repos/{user}/{repo}", 194 | headers={ 195 | "Accept": "application/vnd.github.v3+json", 196 | "Authorization": f"Token {st.secrets.gh_token}", 197 | }, 198 | ) 199 | if response.status_code == 404: 200 | return None, None, None, None 201 | elif response.status_code != 200: 202 | raise RuntimeError( 203 | f"Couldn't get repo details, status code {response.status_code} for url: {url}, user: {user}, repo: {repo}" 204 | ) 205 | response_json = response.json() 206 | created_at = datetime.strptime(response_json["created_at"], "%Y-%m-%dT%H:%M:%SZ") 207 | return ( 208 | response_json["stargazers_count"], 209 | response_json["description"], 210 | response_json["owner"]["avatar_url"], 211 | created_at, 212 | ) 213 | 214 | 215 | @st.experimental_memo(ttl=28 * 24 * 3600, persist="disk", show_spinner=False) 216 | def parse_github_readme(url): 217 | """get the image url from the github readme""" 218 | # TODO: Could do this by getting the raw readme file and not the rendered page. 219 | # But then it's a lot more difficult to find images, since we need to parse markdown. 220 | status_code, text = get( 221 | url, 222 | headers={ 223 | "Authorization": f"Token {st.secrets.gh_token}", 224 | }, 225 | ) 226 | if status_code == 404: 227 | return None, None, None 228 | elif status_code != 200: 229 | raise RuntimeError( 230 | f"Couldn't get Github page, status code {status_code} for url: {url}" 231 | ) 232 | time.sleep(0.2) # wait a bit to not get rate limited 233 | soup = BeautifulSoup(text, "html.parser") 234 | # st.expander("Show HTML").code(response.text) 235 | readme = soup.find(id="readme") 236 | if readme is None: 237 | return None, None, None 238 | 239 | # Find first image that's not a badge or logo. 240 | images = readme.find_all("img") 241 | 242 | def is_no_badge(img): 243 | srcs = img["src"] + img.get("data-canonical-src", "") 244 | return not ( 245 | "badge" in srcs 246 | or "shields.io" in srcs 247 | or "circleci" in srcs 248 | or "buymeacoffee" in srcs 249 | or "ko-fi" in srcs 250 | or "logo" in srcs 251 | or "streamlit-mark" in srcs 252 | or "coverage" in srcs 253 | or "Cover" in srcs 254 | or "hydra.png" in srcs 255 | ) 256 | 257 | images = list(filter(is_no_badge, images)) 258 | if not images: 259 | image_url = None 260 | else: 261 | image_url = images[0]["src"] 262 | if image_url.startswith("/"): 263 | image_url = "https://github.com" + image_url 264 | 265 | # Find text in first paragraph. 266 | description = None 267 | paragraphs = readme.find_all("p") 268 | for paragraph in paragraphs: 269 | clean_paragraph = paragraph.text.replace("\n", "").strip() 270 | if clean_paragraph: 271 | description = clean_paragraph 272 | break 273 | 274 | # Find link to demo app. 275 | # TODO: Should only do this if demo app is not known yet. 276 | try: 277 | demo_url = soup.find("a", href=re.compile("share\.streamlit\.io/+"))["href"] 278 | except TypeError: 279 | try: 280 | demo_url = soup.find("a", href=re.compile("\.streamlitapp\.com"))["href"] 281 | except TypeError: 282 | demo_url = None 283 | # TODO: Need to add streamlit.app here. 284 | 285 | # print("func", image_url, description) 286 | return image_url, description, demo_url 287 | 288 | 289 | def chunks(lst, n): 290 | """Yield successive n-sized chunks from lst.""" 291 | for i in range(0, len(lst), n): 292 | yield lst[i : i + n] 293 | 294 | 295 | TRACKER = "https://discuss.streamlit.io/t/streamlit-components-community-tracker/4634" 296 | 297 | 298 | @dataclass 299 | class Component: 300 | name: str = None 301 | package: str = None 302 | demo: str = None 303 | forum_post: str = None 304 | github: str = None 305 | pypi: str = None 306 | image_url: str = None 307 | # screenshot_url: str = None 308 | stars: int = None 309 | github_description: str = None 310 | pypi_description: str = None 311 | avatar: str = None 312 | search_text: str = None 313 | github_author: str = None 314 | pypi_author: str = None 315 | created_at: datetime = None 316 | downloads: int = None 317 | categories: List[str] = None 318 | 319 | 320 | @st.experimental_memo(ttl=28 * 24 * 3600, persist="disk", show_spinner=False) 321 | def get_all_packages(): 322 | url = "https://pypi.org/simple/" 323 | status_code, text = get(url) 324 | soup = BeautifulSoup(text, "html.parser") 325 | packages = [ 326 | a.text 327 | for a in soup.find_all("a") 328 | if ( 329 | "streamlit" in a.text 330 | or a.text.startswith("st-") 331 | or a.text.startswith("st_") 332 | ) 333 | and a.text not in EXCLUDE 334 | ] 335 | return packages 336 | 337 | 338 | @st.experimental_memo(ttl=24 * 3600, persist="disk", show_spinner=False) 339 | def get_downloads(package): 340 | try: 341 | downloads = pypistats.recent(package, "month", format="pandas")["last_month"][ 342 | 0 343 | ] # .iloc[-1]["downloads"] 344 | except httpx.HTTPStatusError: 345 | time.sleep(10) 346 | try: 347 | downloads = pypistats.recent(package, "month", format="pandas")[ 348 | "last_month" 349 | ][ 350 | 0 351 | ] # .iloc[-1]["downloads"] 352 | except httpx.HTTPStatusError: 353 | # give up 354 | return 0 355 | time.sleep(0.1) # don't get rate-limited 356 | return downloads 357 | 358 | 359 | @st.experimental_memo(ttl=28 * 24 * 3600, show_spinner=False) 360 | def get_components(): 361 | components_dict = {} 362 | 363 | # Step 1: Get components from tracker 364 | status_code, text = get(TRACKER) 365 | if status_code != 200: 366 | raise RuntimeError( 367 | f"Could not access components tracker, status code {status_code}" 368 | ) 369 | 370 | soup = BeautifulSoup(text, "html.parser") 371 | lis = soup.find_all("ul")[3].find_all("li") 372 | 373 | for li in stqdm(lis, desc="🎈 Crawling Streamlit forum (step 1/5)"): 374 | c = Component() 375 | name = re.sub("\(.*?\)", "", li.text) 376 | name = name.split(" – ")[0] 377 | name = name.strip() 378 | c.name = name 379 | 380 | links = [a.get("href") for a in li.find_all("a")] 381 | for l in links: 382 | if l.startswith("https://github.com"): 383 | c.github = l 384 | elif l.startswith("https://share.streamlit.io") or "streamlitapp.com" in l: 385 | c.demo = l 386 | elif l.startswith("https://discuss.streamlit.io"): 387 | c.forum_post = l 388 | elif l.startswith("https://pypi.org"): 389 | c.pypi = l 390 | c.package = re.match("https://pypi.org/project/(.*?)/", l).group(1) 391 | 392 | if c.github and not c.package: 393 | repo_name = ( 394 | c.github.replace("https://", "").replace("http://", "").split("/")[2] 395 | ) 396 | # print(repo_name) 397 | url = f"https://pypi.org/project/{repo_name}/" 398 | status_code, text = get(url) 399 | if status_code != 404: 400 | c.package = repo_name 401 | c.pypi = url 402 | # print("found package based on repo name:", repo_name) 403 | 404 | if c.package: 405 | components_dict[c.package] = c 406 | else: 407 | components_dict[c.name] = c 408 | 409 | # Step 2: Download PyPI index 410 | with st.spinner("⬇️ Downloading PyPI index (step 2/5)"): 411 | packages = get_all_packages() 412 | 413 | # Step 3: Search through PyPI packages 414 | # TODO: This could be wrapped in memo as well. 415 | for p in stqdm(packages, desc="📦 Crawling PyPI (step 3/5)"): 416 | # if p.startswith("streamlit") or p.startswith("st-") or p.startswith("st_"): 417 | 418 | # TODO: There's a JSON API to do this: https://pypi.org/pypi//json 419 | 420 | url = f"https://pypi.org/project/{p}/" 421 | status_code, text = get(url) 422 | if status_code != 404: 423 | # st.expander("show html").code(res.text) 424 | 425 | if p not in components_dict: 426 | components_dict[p] = Component(name=p) 427 | c = components_dict[p] 428 | 429 | if not c.package: 430 | c.package = p 431 | if not c.pypi: 432 | c.pypi = url 433 | 434 | if not c.pypi_author or not c.github: 435 | soup = BeautifulSoup(text, "html.parser") 436 | 437 | if not c.pypi_author: 438 | pypi_author = soup.find( 439 | "span", class_="sidebar-section__user-gravatar-text" 440 | ).text.strip() 441 | c.pypi_author = pypi_author 442 | 443 | if not c.github: 444 | homepage = soup.find("i", class_="fas fa-home") 445 | if homepage and "github.com" in homepage.parent["href"]: 446 | c.github = homepage.parent["href"] 447 | # print("found github link from homepage link:", c.github) 448 | else: 449 | sidebar_links = soup.find_all( 450 | "a", 451 | class_="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed", 452 | ) 453 | for l in sidebar_links: 454 | if "github.com" in l["href"]: 455 | c.github = l["href"] 456 | # print( 457 | # "found github link from sidebar link:", 458 | # c.github, 459 | # ) 460 | break 461 | 462 | # TODO: Maybe do this outside of the if? 463 | summary = soup.find("p", class_="package-description__summary") 464 | if ( 465 | summary 466 | and summary.text 467 | and summary.text != "No project description provided" 468 | ): 469 | # print("found summary description on pypi:", summary.text) 470 | c.pypi_description = summary.text 471 | else: 472 | # Search for first non-empty paragraph. 473 | project_description = soup.find("div", class_="project-description") 474 | if project_description: 475 | paragraphs = project_description.find_all("p") 476 | for p in paragraphs: 477 | text = p.text.replace("\n", "").strip() 478 | if text: 479 | c.pypi_description = text 480 | break 481 | 482 | # profiler.start() 483 | # Step 4: Enrich info of components found above by reading data from Github 484 | for c in stqdm(components_dict.values(), desc="👾 Crawling Github (step 4/5)"): 485 | # Try to get Github URL by combining PyPI author name + package name. 486 | if not c.github and c.package and c.pypi_author: 487 | possible_repo_names = [c.package] 488 | if "-" in c.package: 489 | # Sometimes, package names contain "-"" but repos "_", so check for these 490 | # mutations as well. 491 | possible_repo_names.append(c.package.replace("-", "_")) 492 | for repo in possible_repo_names: 493 | status_code, text = get( 494 | f"https://api.github.com/repos/{c.pypi_author}/{repo}", 495 | headers={ 496 | "Accept": "application/vnd.github.v3+json", 497 | "Authorization": f"Token {st.secrets.gh_token}", 498 | }, 499 | ) 500 | if status_code == 200: 501 | c.github = f"https://github.com/{c.pypi_author}/{repo}" 502 | if repo != c.package: 503 | print( 504 | f"found github url by mutating package name, original: {c.package}, mutated: {repo}" 505 | ) 506 | break 507 | 508 | if c.github: 509 | # print(c.github) 510 | c.github_author = re.search("github.com/(.*?)/", c.github).group(1) 511 | try: 512 | ( 513 | c.stars, 514 | c.github_description, 515 | c.avatar, 516 | c.created_at, 517 | ) = get_github_info(c.github) 518 | except: 519 | pass # TODO: Handle this better. Sometimes Github shows 401 errors. 520 | 521 | # this can also return None! 522 | c.image_url, readme_description, demo_url = parse_github_readme(c.github) 523 | if not c.github_description and readme_description: 524 | # print("found description in github readme") 525 | c.github_description = readme_description 526 | if not c.demo and demo_url: 527 | # print("found demo url in github readme", demo_url) 528 | c.demo = demo_url 529 | 530 | # Get download numbers from PyPI 531 | if c.package: 532 | c.downloads = get_downloads(c.package) 533 | 534 | # Set names based on PyPI package names. 535 | # TODO: If I go with this, I should not even fetch the names from the forum post 536 | # above. 537 | if c.package: 538 | name = c.package 539 | if name.startswith("st-") or name.startswith("st_"): # only do at start 540 | name = name[3:] 541 | c.name = ( 542 | name.replace("streamlit", "") 543 | .replace("--", " ") 544 | .replace("-", " ") 545 | .replace("__", " ") 546 | .replace("_", " ") 547 | .strip() 548 | .title() 549 | .replace("Nlu", "NLU") # special case adjustments for top results ;) 550 | .replace(" Cli", " CLI") 551 | .replace("rtc", "RTC") 552 | .replace("Hiplot", "HiPlot") 553 | .replace("Spacy", "SpaCy") 554 | .replace("Aggrid", "AgGrid") 555 | .replace("Echarts", "ECharts") 556 | .replace("Ui", "UI") 557 | ) 558 | 559 | # if c.package.startswith("streamlit-"): 560 | # c.name = c.package[10:].replace("-", " ").capitalize() 561 | # elif c.package.endswith("-streamlit"): 562 | # c.name = c.package[:-10].replace("-", " ").capitalize() 563 | # elif c.package.startswith("st-"): 564 | # c.name = c.package[3:].replace("-", " ").capitalize() 565 | # else: 566 | # c.name = c.package.replace("-streamlit-", " ").replace("-", " ").capitalize() 567 | 568 | c.search_text = ( 569 | str(c.name) 570 | + str(c.github_description) 571 | + str(c.pypi_description) 572 | + str(c.github_author) 573 | + str(c.package) 574 | ) 575 | 576 | # profiler.stop() 577 | 578 | # Step 5: Enrich with additional data that was manually curated in 579 | # additional_data.yaml (currently only categories). 580 | with open("additional_data.yaml") as f: 581 | additional_data = yaml.safe_load(f) 582 | for c in stqdm( 583 | components_dict.values(), 584 | desc="🖐 Enriching with manually collected data (step 5/5)", 585 | ): 586 | # TODO: Need to do this better. Maybe just store pypi name instead of entire url. 587 | if c.pypi and c.pypi.split("/")[-2] in additional_data: 588 | c.categories = additional_data[c.pypi.split("/")[-2]]["categories"] 589 | else: 590 | c.categories = [] 591 | return list(components_dict.values()) 592 | 593 | 594 | @st.experimental_memo(show_spinner=False) 595 | def sort_components(components: list, by): 596 | if by == "⭐️ Stars on GitHub": 597 | return sorted( 598 | components, 599 | key=lambda c: ( 600 | c.stars if c.stars is not None else 0, 601 | c.image_url is not None, # items with image first 602 | ), 603 | reverse=True, 604 | ) 605 | elif by == "🐣 Newest": 606 | # TODO: This only works for components that have a Github link because we pull 607 | # the created_at date from Github. Make this work with the release date on PyPI. 608 | return sorted( 609 | components, 610 | key=lambda c: ( 611 | c.created_at if c.created_at is not None else datetime(1970, 1, 1), 612 | c.image_url is not None, # items with image first 613 | ), 614 | reverse=True, 615 | ) 616 | elif by == "⬇️ Downloads last month": 617 | return sorted( 618 | components, 619 | key=lambda c: ( 620 | c.downloads if c.downloads is not None else 0, 621 | c.image_url is not None, # items with image first 622 | ), 623 | reverse=True, 624 | ) 625 | else: 626 | raise ValueError("`by` must be either 'Stars' or 'Newest'") 627 | 628 | 629 | @st.experimental_memo(show_spinner=False) 630 | def filter_components(components, search=None, category=None, newer_than=None): 631 | if search: 632 | components = list(filter(lambda c: search.lower() in c.search_text, components)) 633 | if category: 634 | components = list(filter(lambda c: category in c.categories, components)) 635 | if newer_than: 636 | components = list( 637 | filter(lambda c: c.created_at and c.created_at >= newer_than, components) 638 | ) 639 | return components 640 | 641 | 642 | def shorten(text, length=100): 643 | if len(text) > length: 644 | short_text = text[:length] 645 | 646 | # Cut last word if short_text doesn't end on a word. 647 | if short_text[-1] != " " and text[length] != " ": 648 | short_text = short_text[: short_text.rfind(" ")] 649 | 650 | # Remove whitespace at the end. 651 | short_text = short_text.rstrip() 652 | 653 | # Deal with sentence end markers. 654 | if short_text[-1] in [".", "!", "?"]: 655 | return short_text 656 | elif short_text[-1] in [",", ";", ":", "-"]: 657 | return short_text[:-1] + "..." 658 | else: 659 | return short_text + "..." 660 | else: 661 | return text 662 | 663 | 664 | # Can't memo-ize this right now because st.image doesn't work. 665 | # @st.experimental_memo 666 | def show_components(components, limit=None): 667 | if limit is not None: 668 | components = components[:limit] 669 | 670 | for i, components_chunk in enumerate(chunks(components, NUM_COLS)): 671 | cols = st.columns(NUM_COLS, gap="medium") 672 | for c, col in zip(components_chunk, cols): 673 | with col: 674 | if c.image_url is not None: 675 | img_path = c.image_url 676 | # TODO: This doesn't work on Cloud, disabling for now. 677 | # elif c.demo is not None: 678 | # screenshot_dir = Path("screenshots") 679 | # screenshot_dir.mkdir(exist_ok=True, parents=True) 680 | # escaped_screenshot_url = ( 681 | # c.demo.replace("https://", "") 682 | # .replace("/", "_") 683 | # .replace(".", "_") 684 | # ) 685 | # img_path = screenshot_dir / f"{escaped_screenshot_url}.png" 686 | # if not img_path.exists(): 687 | # save_screenshot(c.demo, img_path, sleep=15) 688 | else: 689 | img_path = "default_image.png" 690 | 691 | st.image(str(img_path), use_column_width=True) 692 | title = f"#### {c.name}" 693 | if c.stars: 694 | title += f" ({c.stars} ⭐️)" 695 | # print(title) 696 | st.write(title) 697 | if c.avatar: 698 | avatar_path = c.avatar 699 | else: 700 | # TODO: Need to use web URL because we can't expose image through static folder. 701 | avatar_path = "https://icon-library.com/images/default-profile-icon/default-profile-icon-16.jpg" 702 | if c.github_author and c.avatar: 703 | st.caption( 704 | f'   {c.github_author}', 705 | unsafe_allow_html=True, 706 | ) 707 | # elif c.github_author: 708 | # # TODO: Some of the Github pages extracted above return 404, so 709 | # # we can't get the avatar image from them. We could get them by 710 | # # querying with the author name directly but for now I'm just hiding the avatar images. 711 | # st.caption( 712 | # f'{c.github_author}', 713 | # unsafe_allow_html=True, 714 | # ) 715 | elif c.pypi_author: 716 | st.caption( 717 | f'   {c.pypi_author}', 718 | unsafe_allow_html=True, 719 | ) 720 | 721 | if c.github_description: 722 | st.write(shorten(c.github_description)) 723 | elif c.pypi_description: 724 | st.write(c.pypi_description) 725 | if c.package: 726 | st.code(f"{install_command} {c.package}", None) 727 | formatted_links = [] 728 | if c.github: 729 | # formatted_links.append(mention("Github", c.github, icon="github", write=False)) 730 | # formatted_links.append(f"[GitHub]({c.github})") 731 | formatted_links.append(f"@(GitHub)({c.github})") 732 | if c.demo: 733 | # formatted_links.append(mention("Demo", c.demo, icon="🎈", write=False)) 734 | # formatted_links.append(f"[Demo]({c.demo})") 735 | formatted_links.append(f"@(🎈)(Demo)({c.demo})") 736 | if c.forum_post: 737 | # formatted_links.append(f"[Forum]({c.forum_post})") 738 | # formatted_links.append(mention("Forum", c.forum_post, icon="streamlit", write=False)) 739 | formatted_links.append(f"@(Forum)({c.forum_post})") 740 | if c.pypi: 741 | # formatted_links.append(f"[PyPI]({c.pypi})") 742 | # formatted_links.append(mention("PyPI", c.pypi, icon="📦", write=False)) 743 | formatted_links.append(f"@(📦)(PyPI)({c.pypi})") 744 | 745 | # st.write(" • ".join(formatted_links), unsafe_allow_html=True) 746 | mdlit("  •  ".join(formatted_links)) 747 | # st.caption(", ".join(c.categories)) 748 | st.write("") 749 | st.write("") 750 | st.write("") 751 | 752 | # if i < (min(limit, len(components)) // NUM_COLS) - 1: 753 | # st.write("---") 754 | 755 | 756 | if "limit" not in st.session_state: 757 | st.session_state["limit"] = 60 758 | 759 | 760 | def show_more(): 761 | st.session_state["limit"] += 40 762 | 763 | 764 | components = get_components() 765 | description.write(description_text.format(len(components))) 766 | 767 | # It's more performant to do the sorting first. It's cached, so even though it's running 768 | # on more elements when done first, we almost always have a cache hit since the list of 769 | # components doesn't change. 770 | components = sort_components(components, sorting) 771 | 772 | if not search and not category and sorting != "🐣 Newest": 773 | "## 🚀 Newcomers" 774 | st.write("") 775 | new_components = filter_components( 776 | components, search, category, newer_than=datetime.now() - timedelta(days=60) 777 | ) 778 | show_components(new_components, limit=4) 779 | 780 | "## 🌟 All-time favorites" 781 | 782 | st.write("") 783 | st.write("") 784 | 785 | components = filter_components(components, search, category) 786 | show_components(components, st.session_state["limit"]) 787 | 788 | if len(components) > st.session_state["limit"]: 789 | st.button("Show more components", on_click=show_more, type="primary") 790 | 791 | # if st.button("write additional data file"): 792 | # yaml_dict = { 793 | # c.pypi.split("/")[-2]: {"categories": [""]} for c in components if c.pypi 794 | # } 795 | # import yaml 796 | 797 | # with open("additional_data.yaml", "w") as f: 798 | # yaml.dump(yaml_dict, f, sort_keys=False) 799 | 800 | 801 | # cols = st.columns(5) 802 | # for page in range(1, 1+ math.ceil(len(components) / 100)): 803 | # print(page) 804 | # cols[page - 1].button(f"Page {page}", on_click=set_page, args=(page,)) 805 | 806 | # downloads = pypistats.recent("streamlit-image-select", "month", format="pandas")["last_month"][0]#.iloc[-1]["downloads"] 807 | # st.write(downloads) 808 | 809 | # status_code, text = get("https://pypi.org/project/st-searchbar/") 810 | # soup = BeautifulSoup(text, "html.parser") 811 | # summary = soup.find("p", class_="package-description__summary") 812 | # if summary and summary.text and summary.text != "No project description provided": 813 | # print("found summary description on pypi:", summary.text) 814 | # print(summary) 815 | -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrieke/components-hub/4e21e4d9c1352ad803df3511511f2365385ce96c/test.py --------------------------------------------------------------------------------