{ "info": { "author": "PureSec", "author_email": "support@puresec.io", "bugtrack_url": null, "classifiers": [], "description": "FunctionShield\n--------------\n\n Serverless Security Library for Developers. Regain Control over Your\n Serverless Runtime.\n\nHow FunctionShield helps With Serverless Security?\n--------------------------------------------------\n\n- By monitoring (or blocking) outbound network traffic from your\n function, you can be certain that your data is never leaked\n- By disabling read/write operations on the /tmp/ directory, you can\n make your function truly ephemeral\n- By disabling the ability to launch child processes, you can make sure\n that no rogue processes are spawned without your knowledge by\n potentially malicious packages\n- By disabling the ability to read the function's (handler) source code\n through the file system, you can prevent handler source code leakage,\n which is oftentimes the first step in a serverless attack\n\nSupports AWS Lambda and Google Cloud Functions\n\nGet a free token\n----------------\n\nPlease visit: https://www.puresec.io/function-shield-token-form\n\nInstall\n-------\n\n.. code:: sh\n\n $ pip install function-shield\n\nSuper simple to use\n-------------------\n\n.. code:: python\n\n import function_shield\n\n function_shield.configure({\n \"policy\": {\n # \"block\" mode => active blocking\n # \"alert\" mode => log only\n # \"allow\" mode => allowed, implicitly occurs if key does not exist\n \"outbound_connectivity\": \"block\",\n \"read_write_tmp\": \"block\",\n \"create_child_process\": \"block\",\n \"read_handler\": \"block\"\n },\n \"token\": os.environ[\"FUNCTION_SHIELD_TOKEN\"]\n })\n\n def handler(event, context):\n # Your Code Here #\n\nLogging & Security Visibility\n-----------------------------\n\nFunctionShield logs are sent directly to your function's AWS CloudWatch\nlog group. Here are a few sample logs, demonstrating the log format you\nshould expect:\n\n.. code:: js\n\n // Log example #1:\n {\n \"details\": {\n \"host\": \"microsoft.com\",\n \"ip\": \"13.77.161.179\"\n },\n \"function_shield\": true,\n \"timestamp\": \"2019-06-19T09:08:00.455144Z\",\n \"policy\": \"outbound_connectivity\",\n \"mode\": \"block\"\n }\n\n // Log example #2:\n {\n \"details\": {\n \"path\": \"/tmp/block\"\n },\n \"function_shield\": true,\n \"timestamp\": \"2019-06-19T09:08:00.422553Z\",\n \"policy\": \"read_write_tmp\",\n \"mode\": \"block\"\n }\n\n // Log example #3:\n {\n \"details\": {\n \"arguments\": [\n \"uname\",\n \"-a\"\n ],\n \"path\": \"/bin/uname\"\n },\n \"function_shield\": true,\n \"timestamp\": \"2019-06-19T09:08:00.469822Z\",\n \"policy\": \"create_child_process\",\n \"mode\": \"block\"\n }\n\n // Log example #4:\n {\n \"details\": {\n \"path\": \"/var/task/handler.py\"\n },\n \"function_shield\": true,\n \"timestamp\": \"2019-06-19T09:08:00.433942Z\",\n \"policy\": \"read_handler\",\n \"mode\": \"block\"\n }\n\nReconfiguring FunctionShield\n-----------------------------\n``function_shield.configure`` can be called multiple time to temporary disable one of the policies.\n\nNote that you need to add an additional parameter ``cookie`` to any subsequent call to ``function_shield.configure``.\n\n.. code:: python\n\n import function_shield\n import requests\n\n cookie = function_shield.configure({\n \"policy\": {\n \"outbound_connectivity\": \"block\",\n \"read_write_tmp\": \"block\",\n \"create_child_process\": \"block\",\n \"read_handler\": \"block\"\n },\n \"token\": os.environ[\"FUNCTION_SHIELD_TOKEN\"]\n })\n\n def handler(event, context):\n ...\n function_shield.configure({\n \"cookie\": cookie,\n \"policy\": {\n \"outbound_connectivity\": \"allow\"\n }\n })\n\n r = requests.get(\"https://api.company.com/users\")\n\n function_shield.configure({\n \"cookie\": cookie,\n \"policy\": {\n \"outbound_connectivity\": \"block\"\n }\n })\n ...\n \n\nCustom Security Policy (whitelisting)\n-------------------------------------\n\nCustom security policy is only supported with the PureSec SSP full\nproduct.\n\n`Get PureSec`_\n\n.. _Get PureSec: https://www.puresec.io/product", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/puresec/FunctionShield", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "function-shield", "package_url": "https://pypi.org/project/function-shield/", "platform": "", "project_url": "https://pypi.org/project/function-shield/", "project_urls": { "Homepage": "https://github.com/puresec/FunctionShield" }, "release_url": "https://pypi.org/project/function-shield/2.0.16/", "requires_dist": null, "requires_python": "", "summary": "", "version": "2.0.16" }, "last_serial": 5975369, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "adb9d656e4a7b5c69fe1c40b9b46068f", "sha256": "d8836a340191b5329d2d3372a5b630e9aad6d4318e4270d79ac411d97c27d94b" }, "downloads": -1, "filename": "function_shield-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "adb9d656e4a7b5c69fe1c40b9b46068f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 66637, "upload_time": "2018-07-29T14:48:46", "url": "https://files.pythonhosted.org/packages/ac/34/8fc3bcf22f6c20c231a91d6e3249bb39202be4642d89d4a19a06280872ad/function_shield-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1761a6b8f368e29d559f1cd019f55f9", "sha256": "63d2828a7d1562ab9fcd42ab62e565e78e0342d9114dee0a47129a29a947c900" }, "downloads": -1, "filename": "function_shield-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d1761a6b8f368e29d559f1cd019f55f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 66608, "upload_time": "2018-07-29T14:48:48", "url": "https://files.pythonhosted.org/packages/33/5c/4c56d8155a8b5ea17314f1e157f030af28eee2348c0a8ae71761cf3d9cce/function_shield-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eeb68245a02ed344cea3758bace56c0a", "sha256": "4cc6cc80c8fd3fab5a1f712110c468d54cbddce33befff73f6f47a712adc07e8" }, "downloads": -1, "filename": "function-shield-1.0.2.tar.gz", "has_sig": false, "md5_digest": "eeb68245a02ed344cea3758bace56c0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65452, "upload_time": "2018-07-29T14:48:49", "url": "https://files.pythonhosted.org/packages/20/d5/362c86f58b12585a4e8b3aaafa5391416348d8fa68c83c049712d5c6b517/function-shield-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "5e9efb53ca87d491993d08bc2ad20955", "sha256": "1eddae3f13a41e6b4bd7584604b2e4698ecd5c6a33a7551b5504af094ee53a90" }, "downloads": -1, "filename": "function_shield-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "5e9efb53ca87d491993d08bc2ad20955", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 66689, "upload_time": "2018-08-14T14:55:03", "url": "https://files.pythonhosted.org/packages/a5/21/8ec48711121bffadcf01e05b17b16f96ee7b92ce43cd03281fc9ae79aded/function_shield-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29432dd3e967ebcfe71d5d7e60073bf6", "sha256": "222ea19c4f98a43c840362a02b8fd7619f6c487b8478698819e92324c00c6003" }, "downloads": -1, "filename": "function_shield-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "29432dd3e967ebcfe71d5d7e60073bf6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 66660, "upload_time": "2018-08-14T14:55:06", "url": "https://files.pythonhosted.org/packages/13/7f/26f733f737246bbcd29e386cd14887e04923c74707894d509773a546198b/function_shield-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9643b8f425fc8f05bd0f7d61904feeea", "sha256": "a08531c78bf01a74530c021bea6cb6036308e5f762a2ae3f471d122e61438d5f" }, "downloads": -1, "filename": "function-shield-1.0.3.tar.gz", "has_sig": false, "md5_digest": "9643b8f425fc8f05bd0f7d61904feeea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65513, "upload_time": "2018-08-06T12:28:39", "url": "https://files.pythonhosted.org/packages/b4/19/7cbb98b0d92128ff1bd1948d232f8c9dc2c50e0b29123d6d3c5dc25c8388/function-shield-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "99495d34c3a08890decf9255fd9cb4fa", "sha256": "9b797c1262b70ae05e71764ec2943b24e51b4362a592a38c9b83c8930166c700" }, "downloads": -1, "filename": "function_shield-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "99495d34c3a08890decf9255fd9cb4fa", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 66700, "upload_time": "2018-09-09T09:31:16", "url": "https://files.pythonhosted.org/packages/1b/26/0f8fbe7d49561bbc07e086bb0497499d9fc5fb925f7cf50577a5af600bd5/function_shield-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35193f3430b27508f2722ea5641dddac", "sha256": "0535c58380d749a0c7245365b4ecb0bee1da0ddc0c51bb4fb3a86f7202fc9b65" }, "downloads": -1, "filename": "function_shield-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "35193f3430b27508f2722ea5641dddac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 66670, "upload_time": "2018-09-09T09:31:18", "url": "https://files.pythonhosted.org/packages/4f/e8/40613ccf78046a2b8ac86e262a87648f1adba44063a41b81efcfc862f27f/function_shield-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abcf029601245ba3f2134c65b1d084bb", "sha256": "05482548845cbd843e60bd23f3bde8dcdce82c74a69a12601ad680d2a52b8ecc" }, "downloads": -1, "filename": "function-shield-1.0.4.tar.gz", "has_sig": false, "md5_digest": "abcf029601245ba3f2134c65b1d084bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65524, "upload_time": "2018-09-09T09:31:19", "url": "https://files.pythonhosted.org/packages/4a/52/703931aabd0410b455c6e9899bd82e6f5bbd85af1cd88e7be16a51c0b8d5/function-shield-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "c17813a407ce704264855384c41738c3", "sha256": "d94ef58925f441cb9aabbc43cacc10e31bd5be89c0dfc26a84a1952e8161a2d0" }, "downloads": -1, "filename": "function_shield-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "c17813a407ce704264855384c41738c3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 66925, "upload_time": "2018-09-12T12:40:24", "url": "https://files.pythonhosted.org/packages/35/a9/2b66095c730944a2522629400abd29cdbb5a1cb014c754e7a31675ccda65/function_shield-1.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4515b8c18a960c04eecd5ef46e503e5", "sha256": "88c30694d36cc9ee1c1dd2e8e42f98716e294365b16a157785bc570ed09fe429" }, "downloads": -1, "filename": "function_shield-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d4515b8c18a960c04eecd5ef46e503e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 66894, "upload_time": "2018-09-12T12:40:27", "url": "https://files.pythonhosted.org/packages/55/25/866b0deca677b2957d68c64809b15aeb8fe9b4d62b0328fcb3b5ee747e80/function_shield-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a32d243837db6592ff9861805967bfd7", "sha256": "97e92becb41e291d6484f2fa9aba22e589e5a291838ba7838d3e15e5253576b9" }, "downloads": -1, "filename": "function-shield-1.0.5.tar.gz", "has_sig": false, "md5_digest": "a32d243837db6592ff9861805967bfd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65728, "upload_time": "2018-09-12T12:40:28", "url": "https://files.pythonhosted.org/packages/5d/01/ef714adac1be508e340a2fcba1c019621116121fc05528114a15ff62e9e2/function-shield-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "27fb6966530647c277601f29ae9d4921", "sha256": "138ffcb038038110e2602f80ef542f3ecf9165f37dd5791a164c08e2fb0737a9" }, "downloads": -1, "filename": "function_shield-1.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "27fb6966530647c277601f29ae9d4921", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 67220, "upload_time": "2018-09-26T15:09:46", "url": "https://files.pythonhosted.org/packages/04/9c/f807a65982798095c0d150ba922397e8ee4a8c416cf38b141fa1d3b633fc/function_shield-1.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b646cae57131e3f55c5383edfdfc9c3b", "sha256": "2fccb4b52f34d30da6f9324ffea03120a0884249779b980d2c5c36f8af0fc665" }, "downloads": -1, "filename": "function_shield-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "b646cae57131e3f55c5383edfdfc9c3b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67192, "upload_time": "2018-09-26T15:09:48", "url": "https://files.pythonhosted.org/packages/d0/62/5476506612606300a0f93cb83015c3b80939cdd08f1a7b3dcac2d174c230/function_shield-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd40686325067041b18e18606de7496a", "sha256": "26ae6607f29dda8dccaa14a974629c1dd5a95cdc4b8704effe55550b21d2a626" }, "downloads": -1, "filename": "function-shield-1.0.6.tar.gz", "has_sig": false, "md5_digest": "dd40686325067041b18e18606de7496a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65876, "upload_time": "2018-09-26T15:09:50", "url": "https://files.pythonhosted.org/packages/74/54/293b521f11b24360cbc7b96e29b91315f5a2d64ed7eb781f91193181d3dd/function-shield-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "1dbe2df908f29b6eee0a69cdead1b870", "sha256": "2d0fc98dabc75bc53c85da86fe1d66c1a9d09878daae3ab20be9c014c3702c12" }, "downloads": -1, "filename": "function_shield-1.0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "1dbe2df908f29b6eee0a69cdead1b870", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 67342, "upload_time": "2018-09-30T10:40:54", "url": "https://files.pythonhosted.org/packages/d6/3a/f7f742a729adcf0dced2fea9e316bf1f2aa4631cdfd6e463dd6e114b5a1e/function_shield-1.0.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b353f3ed0876b07beccfcbbe398dfa5", "sha256": "e4e0914873030918d9cff7b7b386e15a7be6e432eb45aa1f82b33f45533c309f" }, "downloads": -1, "filename": "function_shield-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "6b353f3ed0876b07beccfcbbe398dfa5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67313, "upload_time": "2018-09-30T10:40:56", "url": "https://files.pythonhosted.org/packages/7d/0e/0fa51e47600c6e4cdaa2d936701608524e18b85a113e5c769bbf3c966e23/function_shield-1.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bc7798b49ef3099857977f6e2bfb2ce", "sha256": "79d3bb44e5f7204c95743cdd28f921452b35e4b3bb37f1687f40f916efb35df6" }, "downloads": -1, "filename": "function-shield-1.0.7.tar.gz", "has_sig": false, "md5_digest": "5bc7798b49ef3099857977f6e2bfb2ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65992, "upload_time": "2018-09-30T10:40:58", "url": "https://files.pythonhosted.org/packages/61/e4/2ac2009672c342d5319fdbf82362b3aea8b0518e1262d8e22404e028e818/function-shield-1.0.7.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "4a704dba34fadcb0161bb71bd2f73c0c", "sha256": "9bf4abf7ed908938ed458ce9146849b3e5bfce6a674921a985ed439db88d4b4e" }, "downloads": -1, "filename": "function_shield-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4a704dba34fadcb0161bb71bd2f73c0c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 68277, "upload_time": "2018-10-18T15:55:45", "url": "https://files.pythonhosted.org/packages/36/ed/e5061db8a189bd1d4c215e076a9e27d2ecf3025a5a652f18ea3baafa5fa2/function_shield-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90a919ef9b16418ead5aaa28747bfd87", "sha256": "959d4c22838784bfe2e43807e32bd1a49fb92a46a7ada978d9e74c5978b2785c" }, "downloads": -1, "filename": "function_shield-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "90a919ef9b16418ead5aaa28747bfd87", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 68245, "upload_time": "2018-10-18T15:55:48", "url": "https://files.pythonhosted.org/packages/d4/bb/8469b4b237a5a0091f91111f6235a2d826044b96b73505d3eb90c2445400/function_shield-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5dd386db2f7f82d403257132e89aabd", "sha256": "170f83cb5c711dc3e69bed9e288d2678f7d865a2d0b27b34419a96223437c7b8" }, "downloads": -1, "filename": "function-shield-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b5dd386db2f7f82d403257132e89aabd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66862, "upload_time": "2018-10-18T15:55:50", "url": "https://files.pythonhosted.org/packages/d1/b2/d26650773e169884aed6b827dc6157abd69b01e6882640083a87575e9959/function-shield-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "3c0b90fbc10a7d8b50bb245fb5bbb651", "sha256": "02952850c54c044be819aa7cf1f90dec1839a6e911f50035ec083db69e477418" }, "downloads": -1, "filename": "function_shield-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "3c0b90fbc10a7d8b50bb245fb5bbb651", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 70338, "upload_time": "2018-10-22T10:59:15", "url": "https://files.pythonhosted.org/packages/d4/1c/5693fe831ff715a3b4552c8c0a587d8d91ca7606fc41c2f325d14a067740/function_shield-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7da93386148ac3bbad077c54cb6d3880", "sha256": "15013df6be130733843751719c1a31487224da38451756d1c5ded5a402c44f6c" }, "downloads": -1, "filename": "function_shield-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7da93386148ac3bbad077c54cb6d3880", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 70338, "upload_time": "2018-10-22T10:59:17", "url": "https://files.pythonhosted.org/packages/3c/7f/0f38219cc7f55b621fc69e3ce4abb23897d7e701c7db0d21a9b0daa1bc72/function_shield-1.1.1-py3-none-any.whl" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "8a877dc176d2a80e012a5125833bd007", "sha256": "c5b688a1a21c3261f1b570f50c92a1ae3e74e99647109ca271c0586617b45b40" }, "downloads": -1, "filename": "function_shield-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "8a877dc176d2a80e012a5125833bd007", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 70342, "upload_time": "2018-10-22T11:24:04", "url": "https://files.pythonhosted.org/packages/e6/5c/3f133fe14f94a0b5f40c48a085c28f9dc950d83ff4d000e17a2a832f9d8f/function_shield-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eaa8244c3087653b374bef00ff1ee345", "sha256": "d2df0af0fa3acf2246eab1c14d6f53621cdf5c1901190fbdc789860bfe5ee99e" }, "downloads": -1, "filename": "function_shield-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "eaa8244c3087653b374bef00ff1ee345", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 70342, "upload_time": "2018-10-22T11:24:06", "url": "https://files.pythonhosted.org/packages/e0/1c/b820a34fc7f8b60b65df58d6f9d1f5e3d5266a35957da15dc8cde7eb8cb3/function_shield-1.1.2-py3-none-any.whl" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "13e54a9a604d0b469c4d43365e7b16e0", "sha256": "3c5cbe5c78e2d23c6beb3a44618e19f095a21d2e99af79055966eb1182fedb38" }, "downloads": -1, "filename": "function_shield-1.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "13e54a9a604d0b469c4d43365e7b16e0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 70341, "upload_time": "2018-10-22T11:34:22", "url": "https://files.pythonhosted.org/packages/91/75/29a3e2f9e21600f9ed716c9d74fa5ddd41e2263f3f33e30afdde0067b74f/function_shield-1.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6c6517a563309b656fe273377252e29", "sha256": "9e687de55c85809f0137a5596e85b3c6c8061e498a5e258ea67808174dbc116f" }, "downloads": -1, "filename": "function_shield-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d6c6517a563309b656fe273377252e29", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 70348, "upload_time": "2018-10-22T11:49:14", "url": "https://files.pythonhosted.org/packages/84/c7/060dee289a73002d32d5bb792d7172f2ca37dbc8a30d692f285d6c496334/function_shield-1.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d629181f8f3ec597ae4e6272c2e464e", "sha256": "83bacd2d5c31daeb0165597f3f641b1aa2d2d902f70dffecc6826443ddc10016" }, "downloads": -1, "filename": "function_shield-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8d629181f8f3ec597ae4e6272c2e464e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 70342, "upload_time": "2018-10-22T11:34:24", "url": "https://files.pythonhosted.org/packages/05/fa/30b507b0ba8728492a045283361d1a1b2e55c30c500bc672d6afb12d7008/function_shield-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "316ca0f955a9e943a8ee0e0d2f4ace20", "sha256": "e1022cd7abd6b7f367f9f27c6ad656569585a8b128ab2f1f5e8891b224267cd8" }, "downloads": -1, "filename": "function-shield-1.1.3.tar.gz", "has_sig": false, "md5_digest": "316ca0f955a9e943a8ee0e0d2f4ace20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69193, "upload_time": "2018-10-22T11:49:16", "url": "https://files.pythonhosted.org/packages/b4/26/9ad68813804659b7a32027a5b6bd0dff56740b9c4d642c07a80537e0b5be/function-shield-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "c2a282ca61c24e80d0f9d74dc220be2e", "sha256": "f2e16966b5ca8dea2e51b64f888f7118dc056731ed6764d90d454a4a9ed50437" }, "downloads": -1, "filename": "function_shield-1.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c2a282ca61c24e80d0f9d74dc220be2e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 70407, "upload_time": "2018-10-22T12:00:26", "url": "https://files.pythonhosted.org/packages/c0/4c/e573d1aa7a7467b15f97d3adbe837314af8195bea83ee7df464f3cb9b0b5/function_shield-1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae18ead50f9718b8568d364c224f4608", "sha256": "f94d803fdf76eb2fc385f3bab7c398e27b16c23f9658211de965e374598cc464" }, "downloads": -1, "filename": "function-shield-1.1.4.tar.gz", "has_sig": false, "md5_digest": "ae18ead50f9718b8568d364c224f4608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69162, "upload_time": "2018-10-22T12:00:28", "url": "https://files.pythonhosted.org/packages/b0/8c/1d08cee2ceffcef2d8bba3088907ab471e215ce21c7630344e2dacb53c58/function-shield-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "2cb1feadf927c8b3200192faf488236d", "sha256": "76984425cf092ff6f62bcbdf833c82bd04b258e5cf0d40d20ac60edd055a718c" }, "downloads": -1, "filename": "function_shield-1.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2cb1feadf927c8b3200192faf488236d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 70406, "upload_time": "2018-10-22T12:04:08", "url": "https://files.pythonhosted.org/packages/49/d8/da4f506692b87b384e7f2d896dff4509fc2fb32dcbc34abec63390ce398a/function_shield-1.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d8a9b51df78165ca7ac7aabaf64f5ee", "sha256": "e53cf56b31c8ac64082d6ba029b522af13cee4d997b91c4a1a487a5e6100d3a7" }, "downloads": -1, "filename": "function-shield-1.1.5.tar.gz", "has_sig": false, "md5_digest": "7d8a9b51df78165ca7ac7aabaf64f5ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69156, "upload_time": "2018-10-22T12:04:10", "url": "https://files.pythonhosted.org/packages/02/a7/a9b13ebc465c4a3e6eccafb4c2e17080503ffd3bf00bc1b343e39ae34803/function-shield-1.1.5.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "1051c51130421f486381cecb8b9c0cbc", "sha256": "a9ccaaa1d8395e5a9fb3417131d766cd5c1ac1b4ef958b5ad6c9aa119c38f2ec" }, "downloads": -1, "filename": "function_shield-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1051c51130421f486381cecb8b9c0cbc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 73591, "upload_time": "2018-11-12T16:25:43", "url": "https://files.pythonhosted.org/packages/f1/67/3d02c26c255c95861618a2771ddfcad6c3f30c22509105939d8edac4529d/function_shield-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0b1f0b327ba03171adb104618bcb4ab", "sha256": "9ae94315fe168c142b1af9e34b9e460c8a2eb7c52eb9f3802659afe64af18172" }, "downloads": -1, "filename": "function-shield-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f0b1f0b327ba03171adb104618bcb4ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72473, "upload_time": "2018-11-12T16:25:45", "url": "https://files.pythonhosted.org/packages/15/5a/53e58e0a3a6a88309f3b309361e54693c7200c1c7a04d81ce58e117284eb/function-shield-1.2.0.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "9a6d85dc90ad73cca456e3b3fd118ebc", "sha256": "cbf6757e8e0bcf4bbdac7f92e3b98753a582ab2d4c18785ce057f7ad83a2e529" }, "downloads": -1, "filename": "function_shield-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a6d85dc90ad73cca456e3b3fd118ebc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 73694, "upload_time": "2019-02-06T13:00:39", "url": "https://files.pythonhosted.org/packages/0c/57/2a946c67a48936f22d41bcc5353327ee6c99f39da56bdc203efbd1e20891/function_shield-1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a27ddb49c9408a30f530596c41f6c9a", "sha256": "9cdcc864eb04a8ffa18a0b7eda8b8bfcb7360fc4e48ed014bb59c33cd856687c" }, "downloads": -1, "filename": "function-shield-1.2.4.tar.gz", "has_sig": false, "md5_digest": "0a27ddb49c9408a30f530596c41f6c9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72562, "upload_time": "2019-02-06T13:00:41", "url": "https://files.pythonhosted.org/packages/cf/f1/6bbc245923b21af7e66d4a2978d2bd8c72ccd1c1f873556e662373703265/function-shield-1.2.4.tar.gz" } ], "1.2.7": [ { "comment_text": "", "digests": { "md5": "ade8c23525d63d79953552a24ec0e5cf", "sha256": "aa641ba6eb535e19e0bb97f61e1543c5b8993f6a710e5faf2e80efc9e39b5f45" }, "downloads": -1, "filename": "function_shield-1.2.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ade8c23525d63d79953552a24ec0e5cf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 71934, "upload_time": "2019-04-10T13:21:37", "url": "https://files.pythonhosted.org/packages/f1/42/2f1556f168fa7ef9d2a4bbc9b9987c7dd6fd5ed5ab6fac24031c5d5049df/function_shield-1.2.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a7a77729b39d42b4d46a57572c20b1e", "sha256": "aedd121ccb9db4b42f7d282fb6278b1ee9c3d365d0ffff22feeab6b5d259dd5d" }, "downloads": -1, "filename": "function-shield-1.2.7.tar.gz", "has_sig": false, "md5_digest": "7a7a77729b39d42b4d46a57572c20b1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72577, "upload_time": "2019-04-10T13:21:39", "url": "https://files.pythonhosted.org/packages/d0/75/a8612891b496ac409472e29478e1c340ecef0b0571d13968a9922a308d16/function-shield-1.2.7.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "a0518a139a3ebbc054b5422238a6264d", "sha256": "154202b91c658ec8b7305900eabc4032f58f5a0bd2801405957e9c6c5bb631ca" }, "downloads": -1, "filename": "function_shield.tar.gz", "has_sig": false, "md5_digest": "a0518a139a3ebbc054b5422238a6264d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69903, "upload_time": "2019-06-19T13:33:54", "url": "https://files.pythonhosted.org/packages/b5/d0/af1dcadfeb08ca4f0269c637f50cf16491ca95fc270bc092e296bfc53704/function_shield.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "5d9c7df757fdb02415644fd82ce9d953", "sha256": "e6d757e7973883a23779226a51e1e547262222f9fcc2830b6505feacdc0e7a10" }, "downloads": -1, "filename": "function-shield-2.0.1.tar.gz", "has_sig": false, "md5_digest": "5d9c7df757fdb02415644fd82ce9d953", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69905, "upload_time": "2019-06-19T14:21:22", "url": "https://files.pythonhosted.org/packages/cc/ca/a7027f5a362bc7800640adc9c0e22dc7fc3d2855c0052ea07f638dedad27/function-shield-2.0.1.tar.gz" } ], "2.0.11": [ { "comment_text": "", "digests": { "md5": "42ea1421c5d96a5846f351b09c4b3b95", "sha256": "39a27411eed752bd187ff915978221007ce53bb38e070019f19cb220a681036d" }, "downloads": -1, "filename": "function-shield-2.0.11.tar.gz", "has_sig": false, "md5_digest": "42ea1421c5d96a5846f351b09c4b3b95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72018, "upload_time": "2019-08-13T12:12:37", "url": "https://files.pythonhosted.org/packages/17/13/bf5937af3b35fbbaa72417e72cfe1afe012386139bd0e560737428c2bfca/function-shield-2.0.11.tar.gz" } ], "2.0.12": [ { "comment_text": "", "digests": { "md5": "05611882c05235bff54481c5add73447", "sha256": "e7d3ff2402aefe6a008c9d267b8959b219effca5981e066997e82355574c0b01" }, "downloads": -1, "filename": "function-shield-2.0.12.tar.gz", "has_sig": false, "md5_digest": "05611882c05235bff54481c5add73447", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72017, "upload_time": "2019-08-13T13:01:01", "url": "https://files.pythonhosted.org/packages/1d/84/7a9635b7816a70fc9d3dc1630667e40d994445b92e609e0145b9c26224ba/function-shield-2.0.12.tar.gz" } ], "2.0.14": [ { "comment_text": "", "digests": { "md5": "22372e888dd4c954bc9c98f1471f5698", "sha256": "bced95e0a23a01012835c14aac14ecf4c5db31d21bdab0851fff3b1c1a8e61f4" }, "downloads": -1, "filename": "function-shield-2.0.14.tar.gz", "has_sig": false, "md5_digest": "22372e888dd4c954bc9c98f1471f5698", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72033, "upload_time": "2019-10-10T13:35:09", "url": "https://files.pythonhosted.org/packages/7a/99/f0c7b37610010cb8007773b66ddc5e939d1fd3b2e40e163138df5beab465/function-shield-2.0.14.tar.gz" } ], "2.0.15": [ { "comment_text": "", "digests": { "md5": "007df362bcc980ce35248269aeaa0ee9", "sha256": "e70c7173d7f3cfc5f4272c771545941682e43bb5c3175e7b181bca11d540c7d1" }, "downloads": -1, "filename": "function-shield-2.0.15.tar.gz", "has_sig": false, "md5_digest": "007df362bcc980ce35248269aeaa0ee9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72028, "upload_time": "2019-10-10T13:57:30", "url": "https://files.pythonhosted.org/packages/a7/bb/8512a9ee723b357f8d73ef012ce0c53709303e7be9632db0eeee03169920/function-shield-2.0.15.tar.gz" } ], "2.0.16": [ { "comment_text": "", "digests": { "md5": "d6e1f58b3e830b16490efb8054b0d425", "sha256": "ddf229c042ff787c4905884e37e39a9a9e50b3e36a3b39d7c5acc141964968fd" }, "downloads": -1, "filename": "function-shield-2.0.16.tar.gz", "has_sig": false, "md5_digest": "d6e1f58b3e830b16490efb8054b0d425", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72030, "upload_time": "2019-10-15T07:53:07", "url": "https://files.pythonhosted.org/packages/90/45/39478cabcfaeea7c4bd38df028d15cccdb09182f28e9b0e2a9a0d63b37e5/function-shield-2.0.16.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "0e4a66202aab3a10e215c906279dd0df", "sha256": "2ad31928342b8a0e19a78e33c5bf61e4d2a38d36bd0689bde3e5dc3a4be8ba8c" }, "downloads": -1, "filename": "function-shield-2.0.2.tar.gz", "has_sig": false, "md5_digest": "0e4a66202aab3a10e215c906279dd0df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70496, "upload_time": "2019-06-19T15:22:57", "url": "https://files.pythonhosted.org/packages/c2/50/85bae1e2c2552ba09c1375553e81dcbb0195a7b0c566269db94b05d60d60/function-shield-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "a6f8ebcd7179716083383fd02b64e0ca", "sha256": "5ce7772925316acddeb350c1886bfc9c857f14df44ccac3404f89d841a223ddd" }, "downloads": -1, "filename": "function-shield-2.0.3.tar.gz", "has_sig": false, "md5_digest": "a6f8ebcd7179716083383fd02b64e0ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70495, "upload_time": "2019-06-20T06:37:56", "url": "https://files.pythonhosted.org/packages/7c/6e/783e1028af98bd2baef941c5b89fe9dda2c14bd53ee06a2702ba8f76d1ae/function-shield-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "f0ccf60ef74144fcc9c2f88b8755dafd", "sha256": "d9d990f323df781a42fc0014b523f6b15d480d2517c9490777483f86d8d0a012" }, "downloads": -1, "filename": "function-shield-2.0.4.tar.gz", "has_sig": false, "md5_digest": "f0ccf60ef74144fcc9c2f88b8755dafd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70864, "upload_time": "2019-06-30T17:27:12", "url": "https://files.pythonhosted.org/packages/33/df/1a96b38fd8593021bb07ffd890f7a3327b2638be322cdd25d52b9a942f5d/function-shield-2.0.4.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "86e3ad0f25738a39dbdd0cc63cc32166", "sha256": "c8d2d06231d7bb82df6a3b5992aeb828f282836e9651ef7bcb78c0793e8224be" }, "downloads": -1, "filename": "function-shield-2.0.5.tar.gz", "has_sig": false, "md5_digest": "86e3ad0f25738a39dbdd0cc63cc32166", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71127, "upload_time": "2019-07-04T12:56:59", "url": "https://files.pythonhosted.org/packages/16/3c/dab55e19d47ee2a47f7c384e40677e326b3b3d432caa925b832d8d60654f/function-shield-2.0.5.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "95f7d573b97406531406241024750dba", "sha256": "4ef86db43e74a28e5ffd43245284eea818ba4c425a5d83976150b8da334c5666" }, "downloads": -1, "filename": "function-shield-2.0.6.tar.gz", "has_sig": false, "md5_digest": "95f7d573b97406531406241024750dba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71959, "upload_time": "2019-07-15T07:28:56", "url": "https://files.pythonhosted.org/packages/cb/8e/6893a035fc76cd52366c8fd70d4e0c13678c47ee2c4f2d607aefa1cf6ba8/function-shield-2.0.6.tar.gz" } ], "2.0.7": [ { "comment_text": "", "digests": { "md5": "a0fdfb045f524d2b53a188b62b9f876c", "sha256": "e9962115ba4dbb655aee90fe9d4008a6099f3cbc9f49fe08d2a8019813d2233c" }, "downloads": -1, "filename": "function-shield-2.0.7.tar.gz", "has_sig": false, "md5_digest": "a0fdfb045f524d2b53a188b62b9f876c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72019, "upload_time": "2019-08-01T12:50:00", "url": "https://files.pythonhosted.org/packages/af/20/ec3b7083eb3fa2983e424ba7636028abd27c366a2040ad4625f768f4109d/function-shield-2.0.7.tar.gz" } ], "2.0.8": [ { "comment_text": "", "digests": { "md5": "e64bcf39d6b31cd13c3ffd564a576bc4", "sha256": "ef0be0fe27c990aa20a2ec16b870afb523ac13dc1a7956d5522189b688e69d46" }, "downloads": -1, "filename": "function-shield-2.0.8.tar.gz", "has_sig": false, "md5_digest": "e64bcf39d6b31cd13c3ffd564a576bc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72020, "upload_time": "2019-08-12T14:09:16", "url": "https://files.pythonhosted.org/packages/7a/83/34de0b6898376080a40279b074ef702dab2b1d0aa04b629af0370309c45d/function-shield-2.0.8.tar.gz" } ], "2.0.9": [ { "comment_text": "", "digests": { "md5": "0ef7f84895d64fc503ccba6d00a6c29f", "sha256": "a78440a093f99c73bca0ea6d9dd510d650c3ecb431cb7e8bf44d4aa4b89104ae" }, "downloads": -1, "filename": "function-shield-2.0.9.tar.gz", "has_sig": false, "md5_digest": "0ef7f84895d64fc503ccba6d00a6c29f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72020, "upload_time": "2019-08-13T11:48:01", "url": "https://files.pythonhosted.org/packages/0c/eb/4c7e7a746192a3eb00bd217ab48e469a7a96e87ceea073f3676c48aac8c5/function-shield-2.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6e1f58b3e830b16490efb8054b0d425", "sha256": "ddf229c042ff787c4905884e37e39a9a9e50b3e36a3b39d7c5acc141964968fd" }, "downloads": -1, "filename": "function-shield-2.0.16.tar.gz", "has_sig": false, "md5_digest": "d6e1f58b3e830b16490efb8054b0d425", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72030, "upload_time": "2019-10-15T07:53:07", "url": "https://files.pythonhosted.org/packages/90/45/39478cabcfaeea7c4bd38df028d15cccdb09182f28e9b0e2a9a0d63b37e5/function-shield-2.0.16.tar.gz" } ] }