{ "info": { "author": "Will Rubel", "author_email": "willrubel@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "Cloudformation-Validator\n========================\n\nFeatures\n========\n\ncloudformation\\_validator provides type checking and other base\nfunctionality out of the box and is designed to be non-blocking and\neasily extensible, allowing for custom validation. It has no\ndependencies and is thoroughly tested under Python 2.7, Python 3.3,\nPython 3.4, Python 3.5, Python 3.6.\n\nFunding\n=======\n\ncloudformation\\_validator is a open source, collaboratively funded\nproject. If you run a business and are using cloudformation\\_validator\nin a revenue-generating product, it would make business sense to sponsor\nits development: it ensures the project that your product relies on\nstays healthy and actively maintained. Individual users are also welcome\nto make a recurring pledge or a one time donation if cfn-validator has\nhelped you in your work or personal projects.\n\nEvery single sign-up makes a significant impact towards making\ncloudformation\\_validator possible.\n\nWant Custom Rules and Support For Your Application\n==================================================\n\nSubmit an issue on my github page if you would like additional custom\nrules and I will try and get them added as soon as possible.\n\nI you would like other functionality, just submit an issue and I will\nsee what I can do to get it added.\n\nInstallation\n============\n\ncloudformation-validator is on PyPI so all you need is:\n\n``` {.sourceCode .console}\n$ pip install cfn-validator\n```\n\n\nDemonstration\n=============\n\n

\"Cloudformation

\n\n\nJust run:\n\n``` {.sourceCode .console\n$ pip install virtualenv\n$ which python\n$ virtualenv ~/virtualenvs/my_project -p /home/example_username/opt/python-3.6.2/bin/python3\n$ git clone https://github.com/rubelw/cloudformation-validator.git\n$ cd cloudformation-validator\n$ pip install -r requirements-dev.txt\n$ python setup.py install --force\n$ python setup.py test}\n```\n\nOr you can use tox to run the tests under all supported Python versions.\nMake sure the required python versions are installed and run:\n\n``` {.sourceCode .console\n$ pip install virtualenv\n$ which python\n$ virtualenv ~/virtualenvs/my_project -p /home/example_username/opt/python-3.6.2/bin/python3\n$ git clone https://github.com/rubelw/cloudformation-validator.git\n$ cd cloudformation-validator\n$ pip install -r requirements-dev.txt\n$ python setup.py install --force\n$ pip install tox # first time only\n$ tox}\n```\n\nListing Rules\n=============\n\n``` {.sourceCode .console}\n$ cfn-validator dump_rules\n##################################\n########## WARNINGS ##############\n##################################\n{'id': 'F4', 'type': 'VIOLATION::WARNING', 'message': 'IAM policy should not allow * action'}\n{'id': 'W1', 'type': 'VIOLATION::WARNING', 'message': 'Specifying credentials in the template itself is probably not the safest thing'}\n...\n```\n\nExample\n=======\n\nGetting help\n\n``` {.sourceCode .console}\n$ cfn-validator validate --help\nUsage: cfn-validator validate [OPTIONS]\n\n primary function for validating a template :param template_path: :param\n template_file: :param debug: :param rules_directory: :param profile_path:\n :param allow_suppression: :param print_suppression: :param\n parameter_values_path: :param isolate_custom_rule_exceptions: :param\n version: :return:\n\nOptions:\n -s, --suppress-errors Whether to suppress misc errors to get hash only\n -t, --template-path TEXT base directory to search for templates\n -f, --template-file TEXT single_template_file\n --debug Turn on debugging\n -r, --rules-directory TEXT Extra rule directory\n -o, --profile-path TEXT Path to a profile file\n --allow-suppression / --no-allow-suppression\n Allow using Metadata to suppress violations\n -p, --print-suppression Emit suppressions to stderr\n -m, --parameter-values-path TEXT\n Path to a JSON file to pull Parameter values\n from\n -i, --isolate-custom-rule-exceptions\n Isolate custom rule exceptions - just emit\n the exception without stack trace and keep\n chugging\n -v, --version Print version and exit\n --help Show this message and exit.\n```\n\nValidate a file\n\n``` {.sourceCode .console}\n$cfn-validator validate -f cloudfront_distribution_without_logging.json\n\nEvaluating: cloudfront_distribution_without_logging.json\n[\n {\n 'failure_count': '0',\n 'filename': 'cloudfront_distribution_without_logging.json',\n 'file_results': [\n {\n 'id': 'W10',\n 'type': 'VIOLATION::WARNING',\n 'message': 'CloudFront Distribution should enable access logging',\n 'logical_resource_ids': [\n 'rDistribution2'\n ]\n }\n ]\n }\n]\n```\n\nValidate all files in a path\n\n``` {.sourceCode .console}\n$cfn-validator validate -f /projects\n...\n```\n\nProgrammatically call cfn-validator to analyze a file\n\n``` {.sourceCode .console}\nfrom cloudformation_validator.ValidateUtility import ValidateUtility\n\nconfig_dict = {}\nconfig_dict['template_file'] = '/tmp/template.json'\nvalidator = ValidateUtility(config_dict)\nreal_result = validator.validate()\nprint(real_result)\n\n[\n {\n 'failure_count': '0',\n 'filename': '/tmp/template.json',\n 'file_results': [\n {\n 'id': 'W1',\n 'type': 'VIOLATION::WARNING',\n 'message': 'Specifying credentials in the template itself is probably not the safest thing',\n 'logical_resource_ids': [\n 'EC2I4LBA1'\n ]\n }\n ]\n }\n]\n```\n\nI you get some errors and warnings in your out put, you can pass-in the\nflag to suppress all errors\n\n``` {.sourceCode .console}\nfrom cloudformation_validator.ValidateUtility import ValidateUtility\n\nconfig_dict = {}\nconfig_dict['suppress_errors'] = True\nconfig_dict['template_file'] = '/tmp/template.json'\nvalidator = ValidateUtility(config_dict)\nreal_result = validator.validate()\nprint(real_result)\n\n[\n {\n 'failure_count': '0',\n 'filename': '/tmp/template.json',\n 'file_results': [\n {\n 'id': 'W1',\n 'type': 'VIOLATION::WARNING',\n 'message': 'Specifying credentials in the template itself is probably not the safest thing',\n 'logical_resource_ids': [\n 'EC2I4LBA1'\n ]\n }\n ]\n }\n]\n```\n\nWriting your own rules\n\n> - Utilize the format for existing rules in the\n> /cloudformation\\_validator/custom\\_rules directory\n> - Places the files in a new directory\n> - The \\_\\_init\\_\\_, rule\\_text, rule\\_type and rule\\_id methods\n> should be amount the same, just change of the rule, the text for a\n> failure, and the type to either \\'VIOLATION::FAILING\\_VIOLATION\\'\n> or VIOLATION::WARNNING\\'\n> - Set the id to \\'W\\' for warnings, and \\'F\\' for failure. Pick a\n> number not utilized elsewhere\\...\n> - NOTE: Currently working on functionality for controlling and\n> listing rules\n> - For the audit\\_impl function - portion with will test the resource\n> objects, you will need to review the object model for the resource\n> to see what objects are available, and then review the parser for\n> the resource. Also, look at other similar rules for the resource,\n> and model after them. The basic concept of the function is to\n> identify resources which apply, iterate over the selected\n> resources, and identify specific aspects to evaluate in the rule\n> - pass in the \\--rules-directory /directory in the command line, and\n> the extra rules directory will get added to the existing rules\n\n``` {.sourceCode .console}\ndef audit_impl(self):\n\n violating_rules = []\n\n # This defines which type of resource we are going to test\n resources = self.cfn_model.resources_by_type('AWS::SQS::QueuePolicy')\n\n if len(resources)>0:\n for resource in resources:\n if hasattr(resource, 'policy_document'):\n if resource.policy_document:\n if resource.policy_document.wildcard_allowed_actions():\n violating_rules.append(resource.logical_resource_id)\n\n return violating_rules\n```\n\nExample of writing a rule which requires custom tags for EC2 instances\n======================================================================\n\n- Create a directory to store your custom rule\n- Create the custom rule\n\n``` {.sourceCode .console}\nmkdir ~/custom_validator_rules\n```\n\n``` {.sourceCode .console}\nfrom __future__ import absolute_import, division, print_function\nimport inspect\nimport sys\nfrom builtins import (str)\nfrom cloudformation_validator.custom_rules.BaseRule import BaseRule\nfrom collections import Iterable\nfrom six import StringIO, string_types\nfrom builtins import (str)\n\nclass Ec2CustomTagsRule(BaseRule):\n\n def __init__(self, cfn_model=None, debug=None):\n '''\n Initialize Ec2HasTagsRule\n :param cfn_model:\n '''\n BaseRule.__init__(self, cfn_model, debug=debug)\n\n def rule_text(self):\n '''\n Returns rule text\n :return:\n '''\n if self.debug:\n print('rule_text')\n return 'EC2 instance does not have the required tags'\n\n def rule_type(self):\n '''\n Returns rule type\n :return:\n '''\n self.type= 'VIOLATION::FAILING_VIOLATION'\n return 'VIOLATION::FAILING_VIOLATION'\n\n def rule_id(self):\n '''\n Returns rule id\n :return:\n '''\n if self.debug:\n print('rule_id')\n self.id ='F86'\n return 'F86'\n\n def tags_to_dict(self, aws_tags):\n \"\"\" Convert a list of AWS tags into a python dict \"\"\"\n return {str(tag['Key']): str(tag['Value']) for tag in self.ensure_list(aws_tags)}\n\n def ensure_list(self, value):\n \"\"\"\n Coerces a variable into a list; strings will be converted to a singleton list,\n and `None` or an empty string will be converted to an empty list.\n Args:\n value: a list, or string to be converted into a list.\n\n Returns:\n :py:class:`list`\n \"\"\"\n ret_value = value\n if not value:\n ret_value = []\n elif not isinstance(value, Iterable) or isinstance(value, string_types):\n ret_value = [value]\n return ret_value\n\n\n def audit_impl(self):\n '''\n Audit\n :return: violations\n '''\n if self.debug:\n print('Ec2HasTagsRule - audit_impl')\n\n violating_volumes = []\n\n resources = self.cfn_model.resources_by_type('AWS::EC2::Instance')\n\n if len(resources) > 0:\n\n for resource in resources:\n if self.debug:\n print('resource: ' + str(resource))\n print('vars: '+str(vars(resource)))\n\n if hasattr(resource, 'tags'):\n tags_dict = self.tags_to_dict(resource.cfn_model['Properties']['Tags'])\n required_tags = ('Name', 'ResourceOwner','DeployedBy','Project')\n if not set(required_tags).issubset(tags_dict):\n violating_volumes.append(str(resource.logical_resource_id))\n else:\n if self.debug:\n print('does not tags property')\n violating_volumes.append(str(resource.logical_resource_id))\n\n else:\n if self.debug:\n print('no violating_volumes')\n\n return violating_volumes\n```\n\n- Test the rule by creating a cloudformation template without the\n necessary tags and testing\n\n``` {.sourceCode .console}\n{\n \"Parameters\": {\n \"subnetId\": {\n \"Type\": \"String\",\n \"Default\": \"subnet-4fd01116\"\n }\n },\n\n \"Resources\": {\n \"EC2I4LBA1\": {\n \"Type\": \"AWS::EC2::Instance\",\n \"Properties\": {\n \"ImageId\": \"ami-6df1e514\",\n \"InstanceType\": \"t2.micro\",\n \"SubnetId\": {\n \"Ref\": \"subnetId\"\n }\n },\n \"Metadata\": {\n \"AWS::CloudFormation::Authentication\": {\n \"testBasic\" : {\n \"type\" : \"basic\",\n \"username\" : \"biff\",\n \"password\" : \"badpassword\",\n \"uris\" : [ \"http://www.example.com/test\" ]\n }\n }\n }\n }\n }\n}\n```\n\n- Run the test\n\n``` {.sourceCode .console\ncfn-validator validate --template-file=/tmp/template.json --rules-directory=/home/user/custom_validator_rules}\n```\n\n- You should receive the following violations\n\n``` {.sourceCode .console}\n{\n 'failure_count': '1',\n 'filename': '/tmp/template.json',\n 'file_results': [\n {\n 'id': 'F86',\n 'type': 'VIOLATION::FAILING_VIOLATION',\n 'message': 'EC2 instance does not have the required tags',\n 'logical_resource_ids': [\n 'EC2I4LBA1'\n ]\n },\n {\n 'id': 'W1',\n 'type': 'VIOLATION::WARNING',\n 'message': 'Specifying credentials in the template itself is probably not the safest thing',\n 'logical_resource_ids': [\n 'EC2I4LBA1'\n ]\n }\n ]\n}\n```\n\n- No add tags property to the cloudformation template and run again\n\n``` {.sourceCode .console\n{\n\"Parameters\": {\n\"subnetId\": {\n\"Type\": \"String\",\n\"Default\": \"subnet-4fd01116\"\n}\n},}\n\"Resources\": {\n \"EC2I4LBA1\": {\n \"Type\": \"AWS::EC2::Instance\",\n \"Properties\": {\n \"ImageId\": \"ami-6df1e514\",\n \"InstanceType\": \"t2.micro\",\n \"SubnetId\": {\n \"Ref\": \"subnetId\"\n },\n \"Tags\" : [\n {\"Key\" : \"Name\", \"Value\":\"value\"},\n {\"Key\":\"ResourceOwner\",\"Value\":\"resourceowner\"},\n {\"Key\":\"DeployedBy\",\"Value\":\"deployedby\"},\n {\"Key\":\"Project\",\"Value\":\"project\"}\n ]\n },\n \"Metadata\": {\n \"AWS::CloudFormation::Authentication\": {\n \"testBasic\" : {\n \"type\" : \"basic\",\n \"username\" : \"biff\",\n \"password\" : \"badpassword\",\n \"uris\" : [ \"http://www.example.com/test\" ]\n }\n }\n }\n }\n}\n```\n\n> }\n\n- You should receive the following violations\n\n``` {.sourceCode .console\n{\n'failure_count': '0',\n'filename': '/tmp/template.json',\n'file_results': [\n{\n'id': 'W1',\n'type': 'VIOLATION::WARNING',\n'message': 'Specifying credentials in the template itself is probably not the safest thing',\n'logical_resource_ids': [\n'EC2I4LBA1'\n]\n}\n]\n}}\n```\n\nUnit Testing\n============\n\nRun unit tests\n\n``` {.sourceCode .console}\n(python3) => pytest\n================================================ test session starts =================================================\ncollected 22 items\n\ntest/test_cloudfront_distribution.py . [ 4%]\ntest/test_ec2_instance.py . [ 9%]\ntest/test_ec2_volume.py .. [ 18%]\ntest/test_elasticloadbalancing_loadbalancer.py . [ 22%]\ntest/test_iam_user.py . [ 27%]\ntest/test_lambda_permission.py . [ 31%]\ntest/test_rds_instance.py ... [ 45%]\ntest/test_s3_bucket.py . [ 50%]\ntest/test_s3_bucket_policy.py . [ 54%]\ntest/test_security_group.py ........ [ 90%]\ntest/test_sns_policy.py . [ 95%]\ntest/test_sqs_policy.py . [100%]\n```\n\nSource\n======\n\nI am just getting started on this, so any suggestions would be welcome.\n\\<\\>\n\nCopyright\n=========\n\ncloudformation\\_validator is an open source project by Will Rubel\n\\<\\>, that was ported\nfrom a ruby project by Stelligent. See the original LICENSE information\n\\<\\>.\n\n\n", "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/rubelw/cloudformation-validator", "keywords": "validation,schema,dictionaries,aws,cloudformation,python,rules,linter", "license": "", "maintainer": "", "maintainer_email": "", "name": "cloudformation-validator", "package_url": "https://pypi.org/project/cloudformation-validator/", "platform": "any", "project_url": "https://pypi.org/project/cloudformation-validator/", "project_urls": { "Homepage": "https://github.com/rubelw/cloudformation-validator" }, "release_url": "https://pypi.org/project/cloudformation-validator/0.6.36/", "requires_dist": [ "boto3 (>=1.4.3)", "requests (>=2.18)", "Click (>=6.7)", "PyYAML (>=3.12)", "pymongo (>=3.4.0)", "tabulate (>=0.8)", "configparser (>=3.5.0)", "jinja2 (>=2.10)", "dill (>=0.2.8)", "pykwalify (>=1.6.1)", "schema (>=0.6.8)", "future (>=0.16.0)", "six (>=1.11.0)", "pip" ], "requires_python": "", "summary": "Lightweight, extensible schema and data validation tool for Cloudformation Templates.", "version": "0.6.36" }, "last_serial": 4375704, "releases": { "0.2.26": [ { "comment_text": "", "digests": { "md5": "f8400129b2bfee4a2ff47e09a778e82a", "sha256": "aab8963ff0c2c3be718fcc0a648e3803d7ca66533f38df06e5f5d10dabf5c0b4" }, "downloads": -1, "filename": "cloudformation_validator-0.2.26-py2-none-any.whl", "has_sig": false, "md5_digest": "f8400129b2bfee4a2ff47e09a778e82a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 223190, "upload_time": "2018-08-21T23:56:12", "url": "https://files.pythonhosted.org/packages/e9/bb/d39c0c62e07c616fa5ea8a30d4ca12847e1086583f0fcae97a3d815262ad/cloudformation_validator-0.2.26-py2-none-any.whl" } ], "0.6.13": [ { "comment_text": "", "digests": { "md5": "1336c9918d40f6ccf8fa5f5876ea755e", "sha256": "e94bac464e59da4a6f1f2f4cb088fd7bec765393e706e69aeeb5ba4bef231f16" }, "downloads": -1, "filename": "cloudformation_validator-0.6.13-py2-none-any.whl", "has_sig": false, "md5_digest": "1336c9918d40f6ccf8fa5f5876ea755e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 223188, "upload_time": "2018-08-21T23:41:46", "url": "https://files.pythonhosted.org/packages/06/2d/cdfd43ad8a4e634c52a26626ead73d4a3f6915d8d2a1dec2c1bbb87401e3/cloudformation_validator-0.6.13-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47bf4a7d5d1f83758f150e5357adc6eb", "sha256": "14514154db34447d1c79a32ca2ec6b648f531f04dd476b3413f41eb6f2a2f390" }, "downloads": -1, "filename": "cloudformation_validator-0.6.13.tar.gz", "has_sig": false, "md5_digest": "47bf4a7d5d1f83758f150e5357adc6eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101757, "upload_time": "2018-08-21T23:41:48", "url": "https://files.pythonhosted.org/packages/72/b6/f2a444dfbf97ca1285cf8632de1499a52e2e0b33b8354932aadbc8dde7c6/cloudformation_validator-0.6.13.tar.gz" } ], "0.6.14": [ { "comment_text": "", "digests": { "md5": "4ddac5be2d78af6f75325d87dcecd2d4", "sha256": "4c47ad3dce31d591d5a9bebe4fa01662faa86c545a483c62ace69ab7bee67af3" }, "downloads": -1, "filename": "cloudformation_validator-0.6.14-py3-none-any.whl", "has_sig": false, "md5_digest": "4ddac5be2d78af6f75325d87dcecd2d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 223259, "upload_time": "2018-08-23T15:09:37", "url": "https://files.pythonhosted.org/packages/d8/b1/0df108a1b22572d6f1366f68933150fe2a1243e67e8fe6d57cb1986168a3/cloudformation_validator-0.6.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69e3292368c025f514a066f1fe2657ff", "sha256": "32b40303b48c81b69bd2c46dfb99490da6528ed14103b3847ab2201550f0ce2c" }, "downloads": -1, "filename": "cloudformation_validator-0.6.14.tar.gz", "has_sig": false, "md5_digest": "69e3292368c025f514a066f1fe2657ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98941, "upload_time": "2018-08-23T15:09:38", "url": "https://files.pythonhosted.org/packages/64/7d/f12dc527995974e347e23542e2db93f67452c2121e1d1518b7f69b130c22/cloudformation_validator-0.6.14.tar.gz" } ], "0.6.15": [ { "comment_text": "", "digests": { "md5": "37b3c2d7a2d732e36544398aec1f30bc", "sha256": "58a5a024b188f9b32c978dafcbb237ad71f994751b27bc6adf634f48ba42b79c" }, "downloads": -1, "filename": "cloudformation_validator-0.6.15-py3-none-any.whl", "has_sig": false, "md5_digest": "37b3c2d7a2d732e36544398aec1f30bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 223288, "upload_time": "2018-08-23T15:41:35", "url": "https://files.pythonhosted.org/packages/38/38/b7bd3c606730f66b57d852335495443487cede74a7713ba6a875eb6f30a5/cloudformation_validator-0.6.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5899997cd6b8bb7bbc21d27d1a4c7cf2", "sha256": "e3ebef496be4b92cbb35129dbfab11ca0559f6a049532db301ab9d57e269ee85" }, "downloads": -1, "filename": "cloudformation_validator-0.6.15.tar.gz", "has_sig": false, "md5_digest": "5899997cd6b8bb7bbc21d27d1a4c7cf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98950, "upload_time": "2018-08-23T15:41:37", "url": "https://files.pythonhosted.org/packages/8f/1a/f1058155662928d51bb62352db815513c8cc0644b18d87f0afb3645298a8/cloudformation_validator-0.6.15.tar.gz" } ], "0.6.16": [ { "comment_text": "", "digests": { "md5": "6690e2e8cf92087d7319d8883ac8fccf", "sha256": "ecebf36d0e9f85b527fd4fd255a6d5b30ce18198c12e32e7887183885bf1c190" }, "downloads": -1, "filename": "cloudformation_validator-0.6.16-py3-none-any.whl", "has_sig": false, "md5_digest": "6690e2e8cf92087d7319d8883ac8fccf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 224934, "upload_time": "2018-08-31T21:50:44", "url": "https://files.pythonhosted.org/packages/37/2a/17a3b5e6fad883c7a4e47d2610a69cffabb37b9fc58f7f900ac2dc76a05e/cloudformation_validator-0.6.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae27b120853f4f3a272eed942cd9920d", "sha256": "e9c23f9152bb83ccff3c984faa88476d0a22d8d5f3e2b5c9d5fc49391352fcbb" }, "downloads": -1, "filename": "cloudformation_validator-0.6.16.tar.gz", "has_sig": false, "md5_digest": "ae27b120853f4f3a272eed942cd9920d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99259, "upload_time": "2018-08-31T21:50:46", "url": "https://files.pythonhosted.org/packages/a7/19/f597ff85e532cd5b19ddad4e3750e5430b198642c64a048695343512e465/cloudformation_validator-0.6.16.tar.gz" } ], "0.6.17": [ { "comment_text": "", "digests": { "md5": "11211811fc35c3a7b82ccf377d513b09", "sha256": "942d549893c75f1b3ad595f59b0c8241a91b0dd584508cb1f7709b11e6d7b6ea" }, "downloads": -1, "filename": "cloudformation_validator-0.6.17-py2-none-any.whl", "has_sig": false, "md5_digest": "11211811fc35c3a7b82ccf377d513b09", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 224951, "upload_time": "2018-09-02T15:47:50", "url": "https://files.pythonhosted.org/packages/f6/3f/2cd363bddde6a06af8cb19053b69c405c63ec0480b8c44e0662854c74bd0/cloudformation_validator-0.6.17-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac3e625fa12713ca61446b6db44e15da", "sha256": "6a31d011da56519727a8230d73b76cfa116142b62da7cde47f38701b1e642626" }, "downloads": -1, "filename": "cloudformation_validator-0.6.17.tar.gz", "has_sig": false, "md5_digest": "ac3e625fa12713ca61446b6db44e15da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102382, "upload_time": "2018-09-02T15:47:52", "url": "https://files.pythonhosted.org/packages/f5/fd/bac08c9a1feb2e83b5ce36d6d7edcba3c0bf9810977cdd601a5bcf30ac8e/cloudformation_validator-0.6.17.tar.gz" } ], "0.6.18": [ { "comment_text": "", "digests": { "md5": "c75df056ceff40f3de3b458d105d51b7", "sha256": "14a012f1883210e9d64aa0dbad0e4e2437ef1b08ff8abb8b0f2fd3cd1f8c579f" }, "downloads": -1, "filename": "cloudformation_validator-0.6.18-py2-none-any.whl", "has_sig": false, "md5_digest": "c75df056ceff40f3de3b458d105d51b7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 225005, "upload_time": "2018-09-02T15:59:38", "url": "https://files.pythonhosted.org/packages/2e/d2/ebf3babaf631c108609c2b6bfc607cf2805a27f6151b8323619205250b76/cloudformation_validator-0.6.18-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d63fadbc83ee756716b113d3da30db3e", "sha256": "1d30b792d6fa810dc5f10522f80f266b17532af0fbc4ae66a14fcf177e5da534" }, "downloads": -1, "filename": "cloudformation_validator-0.6.18.tar.gz", "has_sig": false, "md5_digest": "d63fadbc83ee756716b113d3da30db3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102517, "upload_time": "2018-09-02T15:59:42", "url": "https://files.pythonhosted.org/packages/ef/0c/22bffcbdef0d90af59c7e4395fa3d39d10f5bd13ca16c916b4899dd84644/cloudformation_validator-0.6.18.tar.gz" } ], "0.6.19": [ { "comment_text": "", "digests": { "md5": "36e7006692a752c6161e378f2c7743b2", "sha256": "7803c6231d9858c9b6c25863c9cd24a88b7ec5351a599e90b9de3c0520eb3354" }, "downloads": -1, "filename": "cloudformation_validator-0.6.19-py2-none-any.whl", "has_sig": false, "md5_digest": "36e7006692a752c6161e378f2c7743b2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 225009, "upload_time": "2018-09-02T16:06:48", "url": "https://files.pythonhosted.org/packages/bb/89/195039fca2ac5229aeca3ce6f8821fd988b2ceba586a166b3fdc6ffa6433/cloudformation_validator-0.6.19-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02cd5ca25d503d52a1a4289acf43bc02", "sha256": "ba57aeb5744ce11789f5774b219841c15037e312a7c7cd05e8ef4c3d704bb2b7" }, "downloads": -1, "filename": "cloudformation_validator-0.6.19.tar.gz", "has_sig": false, "md5_digest": "02cd5ca25d503d52a1a4289acf43bc02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102557, "upload_time": "2018-09-02T16:06:52", "url": "https://files.pythonhosted.org/packages/a5/d8/d964d136015cbd7457d719234cc0406d943d71af66d1f7a2de99773db73c/cloudformation_validator-0.6.19.tar.gz" } ], "0.6.20": [ { "comment_text": "", "digests": { "md5": "2e63415e5ce624c4d37d2a278f0039bb", "sha256": "c52173bb105a94df80f8fa1f2e342b85def43ef2f53e121ffb159df6e1d2b4f5" }, "downloads": -1, "filename": "cloudformation_validator-0.6.20-py2-none-any.whl", "has_sig": false, "md5_digest": "2e63415e5ce624c4d37d2a278f0039bb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 225007, "upload_time": "2018-09-02T16:11:15", "url": "https://files.pythonhosted.org/packages/66/31/bd5d71aacf6bc19c1141f016bbf7d579ecf162ebb430c774328251bd8683/cloudformation_validator-0.6.20-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5a488e4dd0f5e3fb739d260062d573d", "sha256": "281e0c4f88b5bf8a752ab52c4c845be22f73c55bf89a6ebb8554f2e313532442" }, "downloads": -1, "filename": "cloudformation_validator-0.6.20.tar.gz", "has_sig": false, "md5_digest": "d5a488e4dd0f5e3fb739d260062d573d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102563, "upload_time": "2018-09-02T16:11:18", "url": "https://files.pythonhosted.org/packages/e0/26/13b4e85e40989c6cfb4a397f8f9dc5487618cbb284c7b3b9213f698afc06/cloudformation_validator-0.6.20.tar.gz" } ], "0.6.21": [ { "comment_text": "", "digests": { "md5": "55cc96073e36c58f7eb0f12d645287fe", "sha256": "7e0fca513e84c87ec8fe56759b5d9de36d109265fc4b1e87faf87eeca83a29ab" }, "downloads": -1, "filename": "cloudformation_validator-0.6.21-py2-none-any.whl", "has_sig": false, "md5_digest": "55cc96073e36c58f7eb0f12d645287fe", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 224971, "upload_time": "2018-09-02T16:18:59", "url": "https://files.pythonhosted.org/packages/3d/7d/67e1c4f34ee660fae0b98437f4e78a6eb301a380db997ffb49b01d82df0c/cloudformation_validator-0.6.21-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23d515e934be0f8f6f7e507d138ed7b3", "sha256": "d7732115615c136923ce3cdff8ccd614b808a0702f5d0f2129c7648c6c77c2dc" }, "downloads": -1, "filename": "cloudformation_validator-0.6.21.tar.gz", "has_sig": false, "md5_digest": "23d515e934be0f8f6f7e507d138ed7b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102478, "upload_time": "2018-09-02T16:19:01", "url": "https://files.pythonhosted.org/packages/0e/3a/98147073da87b65dfc75a5752438afe27a73e890da187b6cfbaf59865a41/cloudformation_validator-0.6.21.tar.gz" } ], "0.6.22": [ { "comment_text": "", "digests": { "md5": "495a4477b0525fd3f2019d9315291099", "sha256": "e748d941b55d1d1bb3dd006e01d302c745d93cce72bc4acd782f21d9f0432f7a" }, "downloads": -1, "filename": "cloudformation_validator-0.6.22-py2-none-any.whl", "has_sig": false, "md5_digest": "495a4477b0525fd3f2019d9315291099", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 224982, "upload_time": "2018-09-02T16:21:04", "url": "https://files.pythonhosted.org/packages/5f/77/1fec2d3cc9b0ca658b3c26e8845072eaff26378974fd7abc71c37c2c5684/cloudformation_validator-0.6.22-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f16a77472587e6ba78b72adb4f60cf4", "sha256": "9fcb5f1b39e26f21949090700f9c36dacf3814c9a592bef273ad0088ec80e16d" }, "downloads": -1, "filename": "cloudformation_validator-0.6.22.tar.gz", "has_sig": false, "md5_digest": "9f16a77472587e6ba78b72adb4f60cf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102485, "upload_time": "2018-09-02T16:21:05", "url": "https://files.pythonhosted.org/packages/7c/c4/d272846cd874b17a27e7ce6558888c413dbd44c4592d2f41fac43e9c1cd2/cloudformation_validator-0.6.22.tar.gz" } ], "0.6.23": [ { "comment_text": "", "digests": { "md5": "22f725dd22a1b8a69b6c7227ce2e6d68", "sha256": "1983c3a0f6519cf219e945521fb85fb236a07d4e31c5f896acf3f321f2def448" }, "downloads": -1, "filename": "cloudformation_validator-0.6.23-py2-none-any.whl", "has_sig": false, "md5_digest": "22f725dd22a1b8a69b6c7227ce2e6d68", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 224980, "upload_time": "2018-09-02T16:23:22", "url": "https://files.pythonhosted.org/packages/23/56/990ca41b1d31f7fe8339b862e7225de9d7bfcb244cb1ffd55af2694d3819/cloudformation_validator-0.6.23-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "646d62d300cd94b2ba1d978240c441f4", "sha256": "3ee207274c8322fcb8df7a9009caa23b7b66b9c7f9948b4cd60ee710847375d2" }, "downloads": -1, "filename": "cloudformation_validator-0.6.23.tar.gz", "has_sig": false, "md5_digest": "646d62d300cd94b2ba1d978240c441f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102474, "upload_time": "2018-09-02T16:23:24", "url": "https://files.pythonhosted.org/packages/09/e3/5dcb082b2afa3423af796dface1181f6718386f0279c78405031dba8c5b6/cloudformation_validator-0.6.23.tar.gz" } ], "0.6.24": [ { "comment_text": "", "digests": { "md5": "9e201bff6c081666f33a6a250ca8ceec", "sha256": "61ba8fe2c40cd3aacc9b909b036bd45c37483cb40aa4dd891a9a3fa78c207135" }, "downloads": -1, "filename": "cloudformation_validator-0.6.24-py2-none-any.whl", "has_sig": false, "md5_digest": "9e201bff6c081666f33a6a250ca8ceec", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222688, "upload_time": "2018-09-02T16:31:03", "url": "https://files.pythonhosted.org/packages/28/41/f54361b40654dfa75c7aa67a6481fb9e7e678f6a24c13381380be7f44974/cloudformation_validator-0.6.24-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40256944586e15fa57aad7c09470f16c", "sha256": "16966e3a86b6904528ac08e55c9861984d27ebe4326c23ef1046d38577f2791c" }, "downloads": -1, "filename": "cloudformation_validator-0.6.24.tar.gz", "has_sig": false, "md5_digest": "40256944586e15fa57aad7c09470f16c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95735, "upload_time": "2018-09-02T16:31:05", "url": "https://files.pythonhosted.org/packages/13/cb/5666fea75ade5b96d1c98f9cdb69d6f425165fe37609f9490875398290cb/cloudformation_validator-0.6.24.tar.gz" } ], "0.6.25": [ { "comment_text": "", "digests": { "md5": "82724d4dc13683f0dca45b1c340e372c", "sha256": "eccc067d9d5c70618c2a67e67ebd9ef81e13683df5f4f7c6f94fa8ea21df39fc" }, "downloads": -1, "filename": "cloudformation_validator-0.6.25-py2-none-any.whl", "has_sig": false, "md5_digest": "82724d4dc13683f0dca45b1c340e372c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222711, "upload_time": "2018-09-02T16:37:24", "url": "https://files.pythonhosted.org/packages/67/a3/5455899914b7262c76f7d1f0f89e151c0cd78dae3c1fc668912e0c5e17b8/cloudformation_validator-0.6.25-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac6d7216cb90f0b04863433df3998be2", "sha256": "3260d1dde3fbe5d4b779e8bada94d2a6300fa11602e4897c1935c37d336de74b" }, "downloads": -1, "filename": "cloudformation_validator-0.6.25.tar.gz", "has_sig": false, "md5_digest": "ac6d7216cb90f0b04863433df3998be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95881, "upload_time": "2018-09-02T16:37:26", "url": "https://files.pythonhosted.org/packages/b5/64/0c0a91ad325d270f9a0bbfe835141c816ca51d6589778470f603e960eb32/cloudformation_validator-0.6.25.tar.gz" } ], "0.6.26": [ { "comment_text": "", "digests": { "md5": "9a2bdd46dfb0c9e67e1d59c3bbaefd56", "sha256": "d8621eaf0a5366e3836b2e7a489ac25159c25ef07a70b53dbd20ef745ff7733e" }, "downloads": -1, "filename": "cloudformation_validator-0.6.26-py2-none-any.whl", "has_sig": false, "md5_digest": "9a2bdd46dfb0c9e67e1d59c3bbaefd56", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222723, "upload_time": "2018-09-02T16:40:42", "url": "https://files.pythonhosted.org/packages/8d/23/20e60ec4a3f2fa7b002ec64117380a0b90d01ee62aa6115b56bff5739f92/cloudformation_validator-0.6.26-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c6c29901cdaee923e8e41dca59e137f", "sha256": "301429ea6ae1ea7154b59668f8f073ba0d8abacf9dd47d864eb889d9bd7ac1a0" }, "downloads": -1, "filename": "cloudformation_validator-0.6.26.tar.gz", "has_sig": false, "md5_digest": "0c6c29901cdaee923e8e41dca59e137f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95889, "upload_time": "2018-09-02T16:40:44", "url": "https://files.pythonhosted.org/packages/2d/d9/32d48052de24f2dd4670661aafaca0e308e0856ad67b0bc5429d6f62007b/cloudformation_validator-0.6.26.tar.gz" } ], "0.6.27": [ { "comment_text": "", "digests": { "md5": "bb801b5e7282e06731210f6211b8be0a", "sha256": "2e8de1a36b493d77e2eda921d8a9e932796875e70fcb2fb0d17a859b08686add" }, "downloads": -1, "filename": "cloudformation_validator-0.6.27-py2-none-any.whl", "has_sig": false, "md5_digest": "bb801b5e7282e06731210f6211b8be0a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222730, "upload_time": "2018-09-02T16:44:21", "url": "https://files.pythonhosted.org/packages/ec/41/063f8eddaca0f56c70e5282dd17f4becbaea5e147b37ef94eb8ee7fce00d/cloudformation_validator-0.6.27-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d41078d4efa54bedadea8d117568754", "sha256": "f91cf42c43677c0b4308956c35d20b7acbebc83d1bd70bf0212c30efb8f84f05" }, "downloads": -1, "filename": "cloudformation_validator-0.6.27.tar.gz", "has_sig": false, "md5_digest": "1d41078d4efa54bedadea8d117568754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95917, "upload_time": "2018-09-02T16:44:24", "url": "https://files.pythonhosted.org/packages/87/48/1717c3d7ecbaabbeab570cacd54ec79f7a344c26f2984ce2fa49f42884cd/cloudformation_validator-0.6.27.tar.gz" } ], "0.6.28": [ { "comment_text": "", "digests": { "md5": "9d34aeaf1c4b508ae705b996948071a2", "sha256": "4298835e2a1a92a50dfa297d9a277391edc9441acf9e1c5dfa7f1b2bc9dd6cae" }, "downloads": -1, "filename": "cloudformation_validator-0.6.28-py2-none-any.whl", "has_sig": false, "md5_digest": "9d34aeaf1c4b508ae705b996948071a2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222725, "upload_time": "2018-09-02T16:49:59", "url": "https://files.pythonhosted.org/packages/bd/23/5c6f7b8c8acb58c24771f6453137b3d9c0eb5892596e3fc1416628fc0751/cloudformation_validator-0.6.28-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa5211255b77c28da2063b472e80447c", "sha256": "c4a15d2113ad5a718449ba8542ad3fd0bc1642e6f38ddafe001ede93b2fc8d88" }, "downloads": -1, "filename": "cloudformation_validator-0.6.28.tar.gz", "has_sig": false, "md5_digest": "aa5211255b77c28da2063b472e80447c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95905, "upload_time": "2018-09-02T16:50:00", "url": "https://files.pythonhosted.org/packages/c5/fb/6496450662f267f177c77e7ec5949124be42cfafe377805c936895188d52/cloudformation_validator-0.6.28.tar.gz" } ], "0.6.29": [ { "comment_text": "", "digests": { "md5": "3fb42bf5e54d968df73ce97ee165d464", "sha256": "5142e66b83bf0006958a431ca63b5453a290d56f2cba23afd369c0e2e19a35ed" }, "downloads": -1, "filename": "cloudformation_validator-0.6.29-py2-none-any.whl", "has_sig": false, "md5_digest": "3fb42bf5e54d968df73ce97ee165d464", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222730, "upload_time": "2018-09-02T16:52:09", "url": "https://files.pythonhosted.org/packages/5b/0a/9dbfb16e54163e1f5d72117c1645d2774d519aae441a649f4d01099df5ea/cloudformation_validator-0.6.29-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fd6b9a5d6c7ec4764948a5e993cf37e", "sha256": "28b588f422e0805922efe23d0d0e62f408834d60b1f660decdcff8f130624919" }, "downloads": -1, "filename": "cloudformation_validator-0.6.29.tar.gz", "has_sig": false, "md5_digest": "0fd6b9a5d6c7ec4764948a5e993cf37e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95908, "upload_time": "2018-09-02T16:52:11", "url": "https://files.pythonhosted.org/packages/9d/7f/a30cb77bc4fca4e39ebeca4ac7e51f1a50e60b444e1ec437e1564a340850/cloudformation_validator-0.6.29.tar.gz" } ], "0.6.30": [ { "comment_text": "", "digests": { "md5": "f39ff9f994545b5ab038cced5b7216de", "sha256": "f16f9577dc5ced7624e08977a307d8b18a3d11c1252a35460242c8c617ffc124" }, "downloads": -1, "filename": "cloudformation_validator-0.6.30-py2-none-any.whl", "has_sig": false, "md5_digest": "f39ff9f994545b5ab038cced5b7216de", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222715, "upload_time": "2018-09-02T16:53:51", "url": "https://files.pythonhosted.org/packages/6c/79/c812243a94aba86776f65a9f7dcd5406f6ada5115b0bd294e63f506d4ffb/cloudformation_validator-0.6.30-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09526046a5c9782d4241852e159c440f", "sha256": "8155d7ad2a008d1d9366d347b999572234c6d24aa0085adc715da37dfbd585d1" }, "downloads": -1, "filename": "cloudformation_validator-0.6.30.tar.gz", "has_sig": false, "md5_digest": "09526046a5c9782d4241852e159c440f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95880, "upload_time": "2018-09-02T16:53:52", "url": "https://files.pythonhosted.org/packages/38/ff/05ec3869b2c2a46a8f3bf24f10a87885b6c7851352a603201aca5b753b49/cloudformation_validator-0.6.30.tar.gz" } ], "0.6.31": [ { "comment_text": "", "digests": { "md5": "dcef80fbda90a4f71c1991feb00c65e7", "sha256": "93d8229521aabf8232166749e4d89093ba4df95ae8c1b66f93960c30683cb567" }, "downloads": -1, "filename": "cloudformation_validator-0.6.31-py2-none-any.whl", "has_sig": false, "md5_digest": "dcef80fbda90a4f71c1991feb00c65e7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222729, "upload_time": "2018-09-02T16:58:16", "url": "https://files.pythonhosted.org/packages/0a/ff/fb2e9cfb3177e7a16e26416bbbf6161a45374709d5b71a02fea5726a47d2/cloudformation_validator-0.6.31-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bad20dbdce50dd837eac83ef92fc9257", "sha256": "7c5f162b8d178f54307cbca56d040a7e5c0058e73d4a1890d956a92969a14594" }, "downloads": -1, "filename": "cloudformation_validator-0.6.31.tar.gz", "has_sig": false, "md5_digest": "bad20dbdce50dd837eac83ef92fc9257", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95913, "upload_time": "2018-09-02T16:58:18", "url": "https://files.pythonhosted.org/packages/6f/2d/c9fe2884d56084cca838c681ec4c4226960bc2b0ab02c2d4e639d48945c1/cloudformation_validator-0.6.31.tar.gz" } ], "0.6.32": [ { "comment_text": "", "digests": { "md5": "abaeb06477c35ad567f7bb70dbd16924", "sha256": "ffa27aaea1a0bd48f5123068c19f8ce8c66e613656689641ebfbc044597d3152" }, "downloads": -1, "filename": "cloudformation_validator-0.6.32-py2-none-any.whl", "has_sig": false, "md5_digest": "abaeb06477c35ad567f7bb70dbd16924", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222718, "upload_time": "2018-09-02T17:14:02", "url": "https://files.pythonhosted.org/packages/47/2a/b96264a695f7140448634bce72e1c040a15870616e6013346be760d947e8/cloudformation_validator-0.6.32-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04ed3e0c4bd69163c56479194eee7f50", "sha256": "35e33bb9181ba8f56ef0e58c8a6e54e24de318fd68d3d5f7ab654d5127bd9d18" }, "downloads": -1, "filename": "cloudformation_validator-0.6.32.tar.gz", "has_sig": false, "md5_digest": "04ed3e0c4bd69163c56479194eee7f50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95894, "upload_time": "2018-09-02T17:14:03", "url": "https://files.pythonhosted.org/packages/e9/26/05ced231360a29f1e42f8ff46e315e22377598ce5a2df67670d864a9081b/cloudformation_validator-0.6.32.tar.gz" } ], "0.6.33": [ { "comment_text": "", "digests": { "md5": "4baf11144945db809703182203ed52e2", "sha256": "52bd5fae02e00f406251557aa1b997c3378ff7641ba899bda3ab9db61ee13911" }, "downloads": -1, "filename": "cloudformation_validator-0.6.33-py2-none-any.whl", "has_sig": false, "md5_digest": "4baf11144945db809703182203ed52e2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222715, "upload_time": "2018-09-02T17:18:07", "url": "https://files.pythonhosted.org/packages/52/40/de6894fa9e6506a7a4862eebcd0f2c21d2934e6bcb1c41513058402c6b5e/cloudformation_validator-0.6.33-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa369cbc88d6d7439500ac5897e8c855", "sha256": "7fccdc3541a67c202a3c85e54ace5a247f55ea3e5ca65ed83d3830d619dda1dd" }, "downloads": -1, "filename": "cloudformation_validator-0.6.33.tar.gz", "has_sig": false, "md5_digest": "aa369cbc88d6d7439500ac5897e8c855", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95871, "upload_time": "2018-09-02T17:18:09", "url": "https://files.pythonhosted.org/packages/51/fd/17fc24f742d94a60eb3faf95eebafb574e83538dc210538a3bb70168f2d4/cloudformation_validator-0.6.33.tar.gz" } ], "0.6.34": [ { "comment_text": "", "digests": { "md5": "171533ea0bc754d1ec71cdb41b580693", "sha256": "28d6317ae050c0dcd00437435192e2c543c3f509f7832e3b5b4f454853410898" }, "downloads": -1, "filename": "cloudformation_validator-0.6.34-py2-none-any.whl", "has_sig": false, "md5_digest": "171533ea0bc754d1ec71cdb41b580693", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222722, "upload_time": "2018-09-02T17:27:13", "url": "https://files.pythonhosted.org/packages/86/e2/bce9acdb252e7cb71412b10718e8bd0571ba67161587bb2a0b46c0c3d376/cloudformation_validator-0.6.34-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ce69013262edba27d78e49cce825e7f", "sha256": "1bc42ead697e84882cc727ac89cb804589839a100f6a6e1543d95f6af61c672d" }, "downloads": -1, "filename": "cloudformation_validator-0.6.34.tar.gz", "has_sig": false, "md5_digest": "2ce69013262edba27d78e49cce825e7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95887, "upload_time": "2018-09-02T17:27:15", "url": "https://files.pythonhosted.org/packages/82/bf/3227387157ea9670fafd566695a260d5c658c8d2e9f17164298015a8e343/cloudformation_validator-0.6.34.tar.gz" } ], "0.6.35": [ { "comment_text": "", "digests": { "md5": "c86222c8f96bf8097af527d596412bc6", "sha256": "3a9fe671d02b22c1f768afbd15fc5715b624b2319443868f7ef2e48d34101a99" }, "downloads": -1, "filename": "cloudformation_validator-0.6.35-py2-none-any.whl", "has_sig": false, "md5_digest": "c86222c8f96bf8097af527d596412bc6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 222805, "upload_time": "2018-09-02T17:31:58", "url": "https://files.pythonhosted.org/packages/76/5b/3cd6b823f6f816ecf5ff5a067ec18c76d5be4907e05f1c921a974f184baf/cloudformation_validator-0.6.35-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0494b003886eba61f153d11f0dd21727", "sha256": "8637d4c48831621dc117d646733e984f759feb7870c7eff4e6c9533967bb62f2" }, "downloads": -1, "filename": "cloudformation_validator-0.6.35.tar.gz", "has_sig": false, "md5_digest": "0494b003886eba61f153d11f0dd21727", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96143, "upload_time": "2018-09-02T17:31:59", "url": "https://files.pythonhosted.org/packages/9b/48/caf86962df051e0fa3007ee87b7997945251afddaf3667b86ea4e8f1b2fd/cloudformation_validator-0.6.35.tar.gz" } ], "0.6.36": [ { "comment_text": "", "digests": { "md5": "98e1a0559c2163372ba1bc6c73d86921", "sha256": "5bcb04f063571a7487bc2464ca3305adf3374108011b200fa3c83b3a4475f881" }, "downloads": -1, "filename": "cloudformation_validator-0.6.36-py3-none-any.whl", "has_sig": false, "md5_digest": "98e1a0559c2163372ba1bc6c73d86921", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 222807, "upload_time": "2018-10-14T23:50:06", "url": "https://files.pythonhosted.org/packages/b8/7b/9fd3cf8fe6a55437072995f160de717b92c1949292e67b17cfce63f1c92c/cloudformation_validator-0.6.36-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "daeeecce33c7aa978d10c0adcc65f6d8", "sha256": "dfb1b9f1101ddaad50f4c8a41d2140659e428ff515e819c3ee4687f9e85b0c8d" }, "downloads": -1, "filename": "cloudformation_validator-0.6.36.tar.gz", "has_sig": false, "md5_digest": "daeeecce33c7aa978d10c0adcc65f6d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89638, "upload_time": "2018-10-14T23:50:07", "url": "https://files.pythonhosted.org/packages/0f/77/9d54325fdeace2b4b8958e77f745bb73b963a7bc4aa5dfdb9b1639ad43f9/cloudformation_validator-0.6.36.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "98e1a0559c2163372ba1bc6c73d86921", "sha256": "5bcb04f063571a7487bc2464ca3305adf3374108011b200fa3c83b3a4475f881" }, "downloads": -1, "filename": "cloudformation_validator-0.6.36-py3-none-any.whl", "has_sig": false, "md5_digest": "98e1a0559c2163372ba1bc6c73d86921", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 222807, "upload_time": "2018-10-14T23:50:06", "url": "https://files.pythonhosted.org/packages/b8/7b/9fd3cf8fe6a55437072995f160de717b92c1949292e67b17cfce63f1c92c/cloudformation_validator-0.6.36-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "daeeecce33c7aa978d10c0adcc65f6d8", "sha256": "dfb1b9f1101ddaad50f4c8a41d2140659e428ff515e819c3ee4687f9e85b0c8d" }, "downloads": -1, "filename": "cloudformation_validator-0.6.36.tar.gz", "has_sig": false, "md5_digest": "daeeecce33c7aa978d10c0adcc65f6d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89638, "upload_time": "2018-10-14T23:50:07", "url": "https://files.pythonhosted.org/packages/0f/77/9d54325fdeace2b4b8958e77f745bb73b963a7bc4aa5dfdb9b1639ad43f9/cloudformation_validator-0.6.36.tar.gz" } ] }