{ "info": { "author": "Yuki Sawa", "author_email": "yukisawa@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# \ud83c\udffa AWSJar\n[![PyPI version](https://badge.fury.io/py/awsjar.svg)](https://badge.fury.io/py/awsjar)\n[![Downloads](https://pepy.tech/badge/awsjar/month)](https://pepy.tech/project/awsjar)\n[![Python 3.6](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/release/python-360/)\n[![Travis](https://travis-ci.com/ysawa0/awsjar.svg?branch=master)](https://travis-ci.com/ysawa0/awsjar)\n[![Coverage Status](https://coveralls.io/repos/github/ysawa0/awsjar/badge.svg?branch=master)](https://coveralls.io/github/ysawa0/awsjar?branch=master)\n\n\n\n

\n \"Jar\n

\n\n\n\ud83c\udffa [AWSJar](https://github.com/ysawa0/awsjar) makes it easy to save data from AWS Lambda.\n\nThe data (either a dict, list, float, int, or string) can be saved within the Lambda itself as an environment variable or on S3.\n\n## Install\n```\npip install awsjar\n```\n\n## Examples\n### Increment a sum with every invocation\n```\nimport awsjar\n\ndef lambda_handler(event, context):\n jar = awsjar.Jar(context.function_name)\n data = jar.get() # Will return an empty dict if state does not already exist.\n\n s = data.get(\"sum\", 0)\n data[\"sum\"] = s + 1\n\n jar.put(data)\n \n return data\n```\n### Make sure your website is up 24/7\n```\nimport awsjar\nimport requests\n\n# Set a CloudWatch Event to run this Lambda every minute.\ndef lambda_handler(event, context):\n jar = awsjar.Jar(context.function_name)\n data = jar.get() # Will return an empty dict if state does not already exist.\n \n last_status_code = data.get(\"last_status_code\", 200)\n \n result = requests.get('http://example.com')\n cur_status_code = result.status_code\n \n if last_status_code != 200 and cur_status_code != 200:\n print('Website might be down!')\n\n jar.put({'last_status_code': cur_status_code})\n```\n### Save data to S3\n\n```\nimport awsjar\n\n# Save your data to an S3 object - s3://my-bucket/state.json \nbkt = awsjar.Bucket('my-bucket', key='state.json')\n\ndata = {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}\nbkt.put(data)\n\nstate = bkt.get()\n>> {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}\n```\n\n## How to\n1. [Jar](#jar)\n 1. [Initialization](#jar-init)\n 2. [Save Data](#jar-save-data)\n 2. [Serialize Data](#jar-serialize)\n 2. [IAM Role for Lambda](#jar-iam)\n2. [Bucket](#bucket)\n 1. [Initialization](#bucket-init)\n 2. [Save data](#bucket-save-data)\n 3. [Specifying Keys](#bucket-specify)\n 3. [S3 Versioning](#bucket-version)\n 4. [Serialize Data](#bucket-serialize)\n\n## Jar \nSave your data within the Lambda itself, as an environment variable.\n\nThis method has **no associated costs** but AWS only allows you to **store up to 4KB of data** in the environment variables.\n\nJar can compress the data before storing it, allowing **up to about 8KB of uncompressed data.**\n\nThis may not seem like much, but it can cover a lot of use cases. It's also nice to not have to provision extra resources and keep everything self contained.\nHere's a 7KB list that will fit with Jar. \n```\nx = list(range(1400))\n>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399]\njar.put(x)\n``` \n\n### Initialization \n```\nimport awsjar\n\n# Cans specify region if testing locally\njar = awsjar.Jar(lambda_name='sams-lambda', region='us-east-1')\n\n# If running the code in Lambda, it will automatically know the proper region it's running in. \njar = awsjar.Jar(lambda_name='sams-lambda')\n\n# Turn on data compression\njar = awsjar.Jar(lambda_name='sams-lambda', compression=True)\n```\n\n### Save data \n\n```\ndata = {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}\njar.put(data)\n\nstate = jar.get()\n>> {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}\n```\n\n### Serializing data \nJar comes with datetime encoders/decoders for you to use.\n\nIt uses the standard library json.dumps and json.loads to serialize data so it's possible to write your own encoder/decoders to serialize your data.\n\n[Here's some instructions](https://www.google.com/search?client=firefox-b-1-ab&ei=FrI2XIe9M-Xk9APIzJbwCw&q=python+json+serialize+data&oq=python+json+serialize+data&gs_l=psy-ab.3..0i22i30l2.51201.51646..51753...0.0..0.183.542.3j2......0....1..gws-wiz.......0i71j0i67j0.5HjqPa8O5YE) \n```\nfrom awsjar import Jar, datetime_decoder, datetime_encoder\nfrom datetime import datetime\n\njar = Jar(\n lambda_name=lambda_name,\n region=region,\n decoder=datetime_decoder,\n encoder=datetime_encoder,\n)\ntime = datetime.now()\n\ndata = {\"list\": [1, 2, 3], \"dt1\": time}\n\njar.put(data)\nx = jar.get()\n>> {\"list\": [1, 2, 3], 'dt1': datetime.datetime(2019, 1, 9, 18, 49, 44, 847202)}\n```\n\n### IAM Role \nAny Lambda using Jar to save to an env var will need these permissions specified in the Role.\n```\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"VisualEditor0\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"lambda:UpdateFunctionConfiguration\",\n \"lambda:GetFunctionConfiguration\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n```\n\n## Bucket \nSave your data to S3.\n\n### Initialization \n```\nimport awsjar\n\nbkt = awsjar.Bucket(bucket='my-bucket', key='state.json')\n\n# Can specify region if you'd like.\nbkt = awsjar.Bucket(bucket='my-bucket', key='state.json', region='us-east-1')\n\n# This will pretty print any data saved to S3.\nbkt = awsjar.Bucket(bucket='my-bucket', key='state.json', pretty=True)\n```\n\n### Save data \n```\ndata = {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}\nbkt.put(data)\n\nstate = bkt.get()\n>> {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}\n\nbkt.delete() # Delete the object\nbkt.delete(key=\"key123\") # Delete the object\n```\n\n### Specifying keys \nYou can specify the key to override the key that was used in initialization.\n```\nbkt = aj.Bucket(bucket='my-bucket', key='state.json')\nbkt.put(['test']) # Saved to s3://my-bucket/state.json\n\ndata = ['override']\nbkt.put(data, key=\"override.json\") # Saved to s3://my-bucket/override.json\n\nstate = bkt.get(key=\"override.json\")\n>> ['override']\n```\n\n### Versioning \nS3 has an [eventual consistency data model](https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel)\n\nFor example, this means that getting an object immediately after overwriting it may not return the data you expect.\n\nTo overcome this, enable [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html)\n\nIf an S3 Bucket has versioning enabled, Bucket will detect it automatically and fetch the latest version of an object on any `get()` calls.\n\n```\n# Check versioning status\nbkt.is_versioning_enabled()\n\n# Enable versioning\nbkt.enable_versioning()\n\n# Disable versioning\nbkt.enable_versioning()\n```\n\n### Serializing data \nSame as Jar\n\n## Contributing\n\nPlease see the [contributing guide](CONTRIBUTING.md) for more specifics.\n\n## Contact / Support\n\nPlease use the [Issues](https://github.com/ysawa0/awsjar/issues) page\n\nI greatly appreciate any feedback / suggestions! Email me at: yukisawa@gmail.com\n\n## License\n\nDistributed under the Apache License 2.0. See [`LICENSE`](LICENSE) for more information.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ysawa0/awsjar", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "awsjar", "package_url": "https://pypi.org/project/awsjar/", "platform": "", "project_url": "https://pypi.org/project/awsjar/", "project_urls": { "Homepage": "https://github.com/ysawa0/awsjar" }, "release_url": "https://pypi.org/project/awsjar/0.2.11/", "requires_dist": null, "requires_python": "", "summary": "Jar make it easy to store the state of your AWS Lambda functions.", "version": "0.2.11" }, "last_serial": 5102418, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "93559a7e07a3e9818e6216f377b4be1a", "sha256": "6eb3f514ab8b0c6fc260be0902fa82cbbbb17e0440c654de4bce9c8bf25b0d9e" }, "downloads": -1, "filename": "awsjar-0.0.10.tar.gz", "has_sig": false, "md5_digest": "93559a7e07a3e9818e6216f377b4be1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19682, "upload_time": "2019-01-07T21:08:09", "url": "https://files.pythonhosted.org/packages/98/f6/1b171739e38ed853768760f67d2faa4e165fa2912ef913421099cb05a533/awsjar-0.0.10.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "62a404dad65e39e0cd3989d591dbdac3", "sha256": "08e8b3eaa442c2ab3598d658128a664b0f41e498d40da52811359a40c93c0329" }, "downloads": -1, "filename": "awsjar-0.0.12.tar.gz", "has_sig": false, "md5_digest": "62a404dad65e39e0cd3989d591dbdac3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19693, "upload_time": "2019-01-07T21:19:12", "url": "https://files.pythonhosted.org/packages/0a/89/fe065c2fe8ab9965547ff63532698836fd09174785dc8ef0874bc623cfaa/awsjar-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "c84d47bd8374901849c7ce0d4b74abca", "sha256": "e73f815b481b516a6b2720bb1ed57300ab0138ccb61041f0f87357d1ee687f87" }, "downloads": -1, "filename": "awsjar-0.0.13.tar.gz", "has_sig": false, "md5_digest": "c84d47bd8374901849c7ce0d4b74abca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19867, "upload_time": "2019-01-08T18:25:24", "url": "https://files.pythonhosted.org/packages/bc/6f/805b8e25e43b990e7f26dbf3b3549775e0aecb783fafed9b9f1b27ec6772/awsjar-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "1f551b2d617a53a3c8fead2dcbf5129a", "sha256": "f6cdf535a56e261bcccd969ce29dfdb70e0631f55d63b6a69a59ea74d0de966c" }, "downloads": -1, "filename": "awsjar-0.0.14.tar.gz", "has_sig": false, "md5_digest": "1f551b2d617a53a3c8fead2dcbf5129a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20116, "upload_time": "2019-01-09T17:42:50", "url": "https://files.pythonhosted.org/packages/e3/53/066aee92fd1f1d531d07c328edf9d37f588876761dbed461aed6517dee74/awsjar-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "057287ea94c27902357d807f89a11a73", "sha256": "652edde96e06b6773fce7ede2b52dcc63c781e96f1e7afa0721e2caac06c9bd1" }, "downloads": -1, "filename": "awsjar-0.0.15.tar.gz", "has_sig": false, "md5_digest": "057287ea94c27902357d807f89a11a73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20151, "upload_time": "2019-01-09T17:49:26", "url": "https://files.pythonhosted.org/packages/a7/1a/e4f8ab11241766e43eaa5509815e41f70ef8eaf4e46f59909130d5f62922/awsjar-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "2ac98fc1b884be2f0dd33862e3da5f18", "sha256": "a533e2f7f6597e0c933623ad0c77cee8c16a8c98ca6d7a356fcf68b454122283" }, "downloads": -1, "filename": "awsjar-0.0.16.tar.gz", "has_sig": false, "md5_digest": "2ac98fc1b884be2f0dd33862e3da5f18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20188, "upload_time": "2019-01-10T02:00:26", "url": "https://files.pythonhosted.org/packages/9e/04/90a9c06e9f04ae2fc4e57af1c64e626648dd80dcfc8ab5890b41b62bfd88/awsjar-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "a951e304bdac0fb1e8756f5bdc2bb841", "sha256": "4fba47df4a059b5a9919e01393040caf3d46cc9e9766451e5fce3a68e0e27b9e" }, "downloads": -1, "filename": "awsjar-0.0.17.tar.gz", "has_sig": false, "md5_digest": "a951e304bdac0fb1e8756f5bdc2bb841", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20716, "upload_time": "2019-01-10T05:15:38", "url": "https://files.pythonhosted.org/packages/74/91/03e6cfb16c42fd93c505715e042d865582b7eb2f6f77c86eeea448dccbc6/awsjar-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "a082c9c0be3244bcda1411a150a3b026", "sha256": "33764c2d50eef265b3d37a5be48ae93ce840f76a7f71a56432c7d63b5f906207" }, "downloads": -1, "filename": "awsjar-0.0.18.tar.gz", "has_sig": false, "md5_digest": "a082c9c0be3244bcda1411a150a3b026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20835, "upload_time": "2019-01-11T23:55:45", "url": "https://files.pythonhosted.org/packages/c7/6d/2e8a2173a4c1c5a933104d0e6c5b5b362ec2a0e81e4597ac6050a955f1e7/awsjar-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "f2cd4189894ba933c71b2e825eb61e8b", "sha256": "94dc8c874a6f9e161ba2b16050e2af82e7d4dc542b478583aec733187527aedc" }, "downloads": -1, "filename": "awsjar-0.0.19.tar.gz", "has_sig": false, "md5_digest": "f2cd4189894ba933c71b2e825eb61e8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21234, "upload_time": "2019-01-12T00:53:56", "url": "https://files.pythonhosted.org/packages/fa/b3/8a3cf53d8611d5d74c0b31a652150cc8a19b0442468bb98d99fe2ff571ac/awsjar-0.0.19.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "b189ac749cbb5f3e811cb75bb4754ff1", "sha256": "97411e9848cc9557537707bec8242335f91c58a32dee693b62cb6b518f8b9448" }, "downloads": -1, "filename": "awsjar-0.0.20.tar.gz", "has_sig": false, "md5_digest": "b189ac749cbb5f3e811cb75bb4754ff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21240, "upload_time": "2019-01-12T00:54:57", "url": "https://files.pythonhosted.org/packages/e7/ba/b4806be3d59aac2521a80a7eae3d3f728746128a15c5d214741d3990260a/awsjar-0.0.20.tar.gz" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "da00e476d7d84aa4b35f0b86c9876bb6", "sha256": "ff520e6906dec4cf1a0d178abe3a0213c187e1f0c299b0e96b90492cf09ee6b3" }, "downloads": -1, "filename": "awsjar-0.0.21.tar.gz", "has_sig": false, "md5_digest": "da00e476d7d84aa4b35f0b86c9876bb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21256, "upload_time": "2019-01-12T01:01:15", "url": "https://files.pythonhosted.org/packages/3f/17/d7ff41b50c982af41ce50ff07cda14601049accb5f6e1534c98e6eeb01ef/awsjar-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "f15e1256aba28b7e9ef1b12799a78148", "sha256": "913205088c00d9643d4e7fe4979d2853b2e671031f729603dbee124814c6dc20" }, "downloads": -1, "filename": "awsjar-0.0.22.tar.gz", "has_sig": false, "md5_digest": "f15e1256aba28b7e9ef1b12799a78148", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21235, "upload_time": "2019-01-12T01:04:08", "url": "https://files.pythonhosted.org/packages/e8/71/f5bd26f8022d4b9103f19be2ac22ac448098cb708f304bdf84ef92b28abf/awsjar-0.0.22.tar.gz" } ], "0.0.23": [ { "comment_text": "", "digests": { "md5": "697c207b2207f7547c881c8d84662309", "sha256": "dc4dd04367ec835d44ca4d1988421cacd1ff37d000c476017e3e39f18dc8275a" }, "downloads": -1, "filename": "awsjar-0.0.23.tar.gz", "has_sig": false, "md5_digest": "697c207b2207f7547c881c8d84662309", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21259, "upload_time": "2019-01-12T01:10:01", "url": "https://files.pythonhosted.org/packages/cb/f0/1959c310dcc70c255c6e0805da756b60080969bcab7b928ebbedbf855673/awsjar-0.0.23.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "311591be160f1850606e13716ad2b959", "sha256": "54a4fa085b3ec874030355eb90e6d4ef5a0e5973bb1f47c8464cb4b56ee0bb97" }, "downloads": -1, "filename": "awsjar-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "311591be160f1850606e13716ad2b959", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3892, "upload_time": "2018-12-26T08:29:39", "url": "https://files.pythonhosted.org/packages/68/0b/48f219457d48df3792e3b99283111526a75332225894593b547c76503f61/awsjar-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c48cb717a2b451a32c90136ed6423bd", "sha256": "65756834d3e773e31b99189195495f41b307bd21c0efe4cb4a1b8945dfdde156" }, "downloads": -1, "filename": "awsjar-0.0.5.tar.gz", "has_sig": false, "md5_digest": "6c48cb717a2b451a32c90136ed6423bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2775, "upload_time": "2018-12-26T08:29:41", "url": "https://files.pythonhosted.org/packages/ba/a3/3e3fcba35dec4f3dfaf9d4ecd1ff583d25c93186a46a2e0de72818637ad8/awsjar-0.0.5.tar.gz" } ], "0.0.7a2": [ { "comment_text": "", "digests": { "md5": "5d4ffcc7785d876fca180fc50de5572b", "sha256": "6537b26cb3a8f21ca4ef09d3090ce8a58ac5c08f2c81c7721012fef1c5cad51f" }, "downloads": -1, "filename": "awsjar-0.0.7a2.tar.gz", "has_sig": false, "md5_digest": "5d4ffcc7785d876fca180fc50de5572b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19028, "upload_time": "2018-12-28T06:16:26", "url": "https://files.pythonhosted.org/packages/fe/8d/8c011c4920052932d4136995f78fcbefd6ba26d019313589f81ff9ca5ac7/awsjar-0.0.7a2.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "db26464bb30934e116c1cda336d51990", "sha256": "64f903db2a2a0b0192b445c3cfb345cc62316d5c85428ee007a734b1008521d1" }, "downloads": -1, "filename": "awsjar-0.0.8.tar.gz", "has_sig": false, "md5_digest": "db26464bb30934e116c1cda336d51990", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19574, "upload_time": "2019-01-07T06:12:06", "url": "https://files.pythonhosted.org/packages/1f/cc/8d1d24bd96c75f400b71f7a34da7a14504915edc3efa21dd36fb2bee47e9/awsjar-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "a0a6425867cea183c19fba0078096f63", "sha256": "dc527ebf2ea377237cd1acedb207dc68aa85e2e5a07bd96d411dcc8c294a3623" }, "downloads": -1, "filename": "awsjar-0.0.9.tar.gz", "has_sig": false, "md5_digest": "a0a6425867cea183c19fba0078096f63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19688, "upload_time": "2019-01-07T18:26:11", "url": "https://files.pythonhosted.org/packages/2f/25/ddd4feb1544c04e28e3565297e31e28aec8d207540a6c82cef1a67fae244/awsjar-0.0.9.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0919a24d532235a19049eaf7500cb79d", "sha256": "8c2bd25a58a60991fecedb4eab646c4409fb5ab5cfc59c0f8bc51f74c1700916" }, "downloads": -1, "filename": "awsjar-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0919a24d532235a19049eaf7500cb79d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21281, "upload_time": "2019-01-12T01:34:55", "url": "https://files.pythonhosted.org/packages/c3/26/c8322fa7273e06ccce71bed6a105702d58be1ca76f6ab8859215e282391a/awsjar-0.1.2.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "063d4fce8ccfb0bbc77aa9e74ade3ddd", "sha256": "9bd8c8fe88f38dedad25edff8c6cea1672abb41aecfc91fb7b057d5e429f6cb7" }, "downloads": -1, "filename": "awsjar-0.1.5.tar.gz", "has_sig": false, "md5_digest": "063d4fce8ccfb0bbc77aa9e74ade3ddd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21346, "upload_time": "2019-01-12T01:40:52", "url": "https://files.pythonhosted.org/packages/04/f5/9d13f4cc1ce2ad9fae7307c55ad36b451e756adf28c5dfb8c168a8a76284/awsjar-0.1.5.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "e845398e69f5dbe5c616ae2e5a2f11e4", "sha256": "cfadaf96c3bc1d7c59cfbb5a7e23abde83199454b4cf822a6fefd63e53604806" }, "downloads": -1, "filename": "awsjar-0.1.8.tar.gz", "has_sig": false, "md5_digest": "e845398e69f5dbe5c616ae2e5a2f11e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21346, "upload_time": "2019-01-12T01:48:09", "url": "https://files.pythonhosted.org/packages/32/6c/75cd8b00591e2c08348bdeab36ff409c00d09f8c6eac5811ff385230ff11/awsjar-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "b59a3aae2c030109208b57cbbe283339", "sha256": "a1a47706b1e4b00048062e5381254db5bd22846a52c33751e6f8308055a4f31f" }, "downloads": -1, "filename": "awsjar-0.1.9.tar.gz", "has_sig": false, "md5_digest": "b59a3aae2c030109208b57cbbe283339", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21474, "upload_time": "2019-01-12T01:51:27", "url": "https://files.pythonhosted.org/packages/01/5e/48da35f5ff4d676e4ec3a6d2afe9265d35981433e60581cc6fd969905646/awsjar-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f8aeac3222f59c4e9b4d8226dbbc69e2", "sha256": "fd38a23a09704bf01ab3c3acd54d39108e9b878a27aaa071bddc4133791f9663" }, "downloads": -1, "filename": "awsjar-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f8aeac3222f59c4e9b4d8226dbbc69e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21687, "upload_time": "2019-01-13T04:37:40", "url": "https://files.pythonhosted.org/packages/88/af/8f6b0e82f91b24604b088cbf6f91f0d2f40a4b1bfd3c233da4f2864b690c/awsjar-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "290935cc211f0056ab7bd8503f6b0baa", "sha256": "28bc4b1ebd80eb8c155ad18c300a5b2d3054f51594267f3593c75dc220100481" }, "downloads": -1, "filename": "awsjar-0.2.1.tar.gz", "has_sig": false, "md5_digest": "290935cc211f0056ab7bd8503f6b0baa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21709, "upload_time": "2019-01-13T04:41:46", "url": "https://files.pythonhosted.org/packages/e3/b0/f0cea0008a72400f3348c5ac6c9c15ddfb928f7681b2e950852728e81751/awsjar-0.2.1.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "f8d09301b99d3bd7e8dc7367dd361e00", "sha256": "5d37e8736e719909e052f1914ee62521129743912a7c31b52a072beb88ca4716" }, "downloads": -1, "filename": "awsjar-0.2.11.tar.gz", "has_sig": false, "md5_digest": "f8d09301b99d3bd7e8dc7367dd361e00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34542, "upload_time": "2019-04-05T07:35:39", "url": "https://files.pythonhosted.org/packages/81/76/a19f4f549dc15a33156ef4c201e5aee3ec0e12b013a165140846bd5beebc/awsjar-0.2.11.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "89d3cdcee872094864f9bb5fe71e1b0c", "sha256": "1ccd040075d6a888ddf19611c9d6296b7723f9854cf5690040cd15e51e7107f8" }, "downloads": -1, "filename": "awsjar-0.2.2.tar.gz", "has_sig": false, "md5_digest": "89d3cdcee872094864f9bb5fe71e1b0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22033, "upload_time": "2019-01-16T06:04:02", "url": "https://files.pythonhosted.org/packages/52/d6/4c9923a1779962d619814b694eca0c4e9f3bcfab765f1e3aad06a81d2436/awsjar-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ace359226a66f0ed33e1aac7fa002f95", "sha256": "5a57db8edefd5ea0347a9010e4ca98e8667430e2d6a6fced19b4d28dba60d2b4" }, "downloads": -1, "filename": "awsjar-0.2.3.tar.gz", "has_sig": false, "md5_digest": "ace359226a66f0ed33e1aac7fa002f95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22031, "upload_time": "2019-01-16T06:07:29", "url": "https://files.pythonhosted.org/packages/06/b9/55382250ab0b0eb28b4a8cf8939b647bac9fc6e3be495a854bfc86c8b9ce/awsjar-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "3977b7a2187c9f353ead17bbab4d1255", "sha256": "13b1127e9d10851a75f86e237e2e00f8f2c8d70d0552b3e6f8d1f51daf6eedc6" }, "downloads": -1, "filename": "awsjar-0.2.4.tar.gz", "has_sig": false, "md5_digest": "3977b7a2187c9f353ead17bbab4d1255", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22045, "upload_time": "2019-01-16T06:19:35", "url": "https://files.pythonhosted.org/packages/fc/34/68ec81ea0560f5d223fe668ac39ebafd08a862a18d17aa25902d62fe6717/awsjar-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "6cbbd3db7f1cfea86e8312bb0c1d6dfb", "sha256": "cdf894dc3c190506e06c025463dead30e827cadc0785d011744038184a0a664c" }, "downloads": -1, "filename": "awsjar-0.2.5.tar.gz", "has_sig": false, "md5_digest": "6cbbd3db7f1cfea86e8312bb0c1d6dfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22058, "upload_time": "2019-01-16T06:25:40", "url": "https://files.pythonhosted.org/packages/f9/cf/dffbc456fd54da3352096a15941655082cead2f9a93bc151b210392042c9/awsjar-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "72b6813347bfc41dde0490c86cec9052", "sha256": "8c68c28e30fe9d3bd65c88aa6722cf0fd9a343d04b2fb09e7ba0a2164e184b02" }, "downloads": -1, "filename": "awsjar-0.2.6.tar.gz", "has_sig": false, "md5_digest": "72b6813347bfc41dde0490c86cec9052", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22066, "upload_time": "2019-01-16T08:30:14", "url": "https://files.pythonhosted.org/packages/ba/be/2b22ac451e882f326631a80852e09e134e5d015fc59293d7bbd1906607fc/awsjar-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "daa3dd34f3360d8c0ce85fec88fb8495", "sha256": "db37e915e96e4b231aa867c6b95dcaba4d0e4b5e9dedfe127b29d052efe87a79" }, "downloads": -1, "filename": "awsjar-0.2.7.tar.gz", "has_sig": false, "md5_digest": "daa3dd34f3360d8c0ce85fec88fb8495", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22090, "upload_time": "2019-01-18T21:05:32", "url": "https://files.pythonhosted.org/packages/aa/3f/740c1c0b00313c8a396a8365c9077a3c3edf7932ac4e7e1f277f7792f1be/awsjar-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "708693868ee58b3cdb62f0fab402d71b", "sha256": "c19b9cc11ac8d34f84e803cb7e0ad9965b8017a74cc08a11ae1de228c40d5933" }, "downloads": -1, "filename": "awsjar-0.2.8.tar.gz", "has_sig": false, "md5_digest": "708693868ee58b3cdb62f0fab402d71b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22086, "upload_time": "2019-01-18T23:58:26", "url": "https://files.pythonhosted.org/packages/20/0b/bc3600de57296b6856f8d91bfc2033a4f101b24c4dce9513eed9c7cb9773/awsjar-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "7d8e1e7a3034b530ef6cdc9675cd3221", "sha256": "c12ddc48001fe6e4c2337ece002ff986d34ec84e614d4748b10c3126ed8effc9" }, "downloads": -1, "filename": "awsjar-0.2.9.tar.gz", "has_sig": false, "md5_digest": "7d8e1e7a3034b530ef6cdc9675cd3221", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22186, "upload_time": "2019-01-20T22:19:06", "url": "https://files.pythonhosted.org/packages/60/2c/dfde6d3a02625fa952fd6739d59d65374f254dc2ad2eecec2c0b30ced1ac/awsjar-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f8d09301b99d3bd7e8dc7367dd361e00", "sha256": "5d37e8736e719909e052f1914ee62521129743912a7c31b52a072beb88ca4716" }, "downloads": -1, "filename": "awsjar-0.2.11.tar.gz", "has_sig": false, "md5_digest": "f8d09301b99d3bd7e8dc7367dd361e00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34542, "upload_time": "2019-04-05T07:35:39", "url": "https://files.pythonhosted.org/packages/81/76/a19f4f549dc15a33156ef4c201e5aee3ec0e12b013a165140846bd5beebc/awsjar-0.2.11.tar.gz" } ] }