{ "info": { "author": "Magnus Runesson", "author_email": "Magnus.Runesson@svenskaspel.se", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Database", "Topic :: Security", "Topic :: Utilities" ], "description": "# Cobra-policytool\n\nCobra-policytool is a tool to ease management of\n[Apache Ranger](https://ranger.apache.org/) together with tags\nin [Apache Atlas](https://atlas.apache.org/). These tools\nmanage access policies in Hadoop environments. Cobra-policytool makes it easy\nto apply configuration files direct to Atlas and Ranger at scale.\n\nThe advantages are:\n * configurations can be version controlled\n * changes can be reviewed, audited and tracked\n * integrates with existing CI/CD\n\nCobra-policytool does also add functionality to Atlas and Ranger.\nCobra-policytool can manage have row level filtering policies for\n[Apache Hive](https://hive.apache.org/) based on tags. Ranger requires one\nrow level policy per table, but with cobra-policytool one can\nhave one rule per tag. This rule is then expanded by the cobra-policytool\nto one rule fore each table having the tag. \n\nMost often one want to have the same access rights hive tables and corresponding\nfiles and directories on hdfs. Cobra-policytool can automatically convert a policy\nfor a Hive table to policy for hdfs.\n\nThis eases the maintenance and reduce risks for errors.\n\n\nTo be able to use the tool you need to have the right permissions in the\nenvironment you are using. For Atlas you must be able to read and create\ntags and to be able to add and delete them from resources. For the Ranger\nrules you must be admin, unfortunately.\n\nCobra-policytool is idempotent, that means you can rerun it as much as\nyou want, the result will not change if on have not changed the input.\n\nThere is an introduction how to use cobra-policytool tool on \n[Medium](https://medium.com/@mrunesson/managing-data-access-policies-in-hive-bba60943b7b4)\n\nA presentation about how Cobra-policytool is used within Svenska Spel can\nbe found at\n[Slideshare](https://www.slideshare.net/MagnusRunesson/practical-experiences-using-atlas-and-ranger-to-implement-gdpr-dataworkssummit-2018).\nand [Youtube](https://www.youtube.com/watch?v=MlDQqj5aYOg)\n\n### Goals\n\n* Make it easy to manage access policies and metadata within\na Apache Hadoop environment that uses Apache Atlas and Apache Ranger.\n* Provide an easy way to apply policies from configuration files, that can\nbe version controlled.\n* Configuration files shall be easy to generate, for instance from a central\nmetadata management system.\n\n\n### Non-Goals\n\n* Handle the security within the Hadoop environment. We rely on\nApache Atlas, Atlas Ranger and other tools within the Hadoop ecosystem.\n\n\n## Contributing\n\nWe welcome contributions. In order for us to be able to accept them,\nplease review our contributor [guidelines](CONTRIBUTING.md).\n\n\n## License\n\nThis project is released as open source according to the terms laid\nout in the [LICENSE](LICENSE.txt).\n\n\n## Supported features\n\n### Tagging of resources\n* Sync of table and column tags from metadata files to Atlas.\n* Keep tags between hive corresponding directory on hdfs in sync (use option --hdfs)\n* Audit to show differences between metadata and Atlas.\n* New tag definitions are automatically added to Atlas on sync.\n* Verbose output to provide changes done.\n* Authentication using kerberos ticket.\n\n### Creating policies\n* Sync policies from metadata file to Ranger.\n* Expand tag based row filtering rules to Hive row based filtering.\n\n## Requirements\n* Atlas, Ranger, and Hive installed and working.\n* Kerberos turned on on the Hadoop cluster, including Atlas and Ranger. Your \nclient do also need to have a valid kerberos ticket.\n* Python 2.7.\n* We have successfully used it on MS Windows, MacOS and Linux.\n\n## Installation\n\n`pip install cobra-policytool`\n\n## Usage of CLI\n\nTo get up to date help how to use the tool:\n`cobra-policy --help`\n\nFor any use where policytool talks to the Atlas server a kerberos ticket must\nbe available.\n\nCreate a configfile matching your environment, see [docs/Configfile.md](docs/Configfile.md). \n\nRead about the indata files in [docs/indata.md](docs/indata.md).\n\n### Sync tag metadata information to Atlas\n\nPolicytool takes files in `--srcdir` directory created according\nto [indata specification](docs/indata.md) and sync them with the metadata\nstore in Hadoop called Atlas. To do this run:\n```\n$ cobra-policy tags_to_atlas --srcdir src/main/tags/ --environment utv\n```\nThere is an option `--verbose` to get more output from cobra-policytool describing what\ntables and columns was changed. Note! If you run same cobra-policytool command twice\nyou will not get any changes the second time since all changes happened the\nfirst round.\n\nSync Ranger policies works in a similar fashion, though it requires that\nproject-name is provided. Project-name is a name of the project\nyou are working in. It is used to find already existing policies in Ranger and\nto be able to separate the ranger rules into multiple projects.\n```\n$ cobra-policy rules_to_ranger --srcdir src/main/tags/ --environment dev --project-name dimension_out\n```\n\n## Usage of API\n\nThe package can also be used as a python library. Here is a short example to\nuse the Atlas Client class.\n```\nfrom requests_kerberos import HTTPKerberosAuth\nimport policytool.atlas\n\nc = policytool.atlas.Client(\n 'http://atlas.test.my.org:21000/api/atlas',\n auth=HTTPKerberosAuth())\nc.known_tags()\nc.get_tables(\"hadoop_out_utv\")\n```\n\nFor details read the Python doc for the code and look how the command line\nclient is implemented.\n\n## Other documentation\nBeside this document there are more in the [docs directory](docs/). You can\nalso find a [todo list](TODO.md) including future plans.\n\nWe recommend to read the [convention document](docs/Conventions.md) and\n[indata document](docs/indata.md) before you start.\n\n\n---\nCopyright 2018 AB SvenskaSpel\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\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/SvenskaSpel/cobra-policytool", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "cobra-policytool", "package_url": "https://pypi.org/project/cobra-policytool/", "platform": "", "project_url": "https://pypi.org/project/cobra-policytool/", "project_urls": { "Homepage": "https://github.com/SvenskaSpel/cobra-policytool" }, "release_url": "https://pypi.org/project/cobra-policytool/1.1.6/", "requires_dist": [ "requests (>=2.20)", "requests-kerberos", "click", "pyhive", "thrift", "thrift-sasl", "sasl" ], "requires_python": "", "summary": "Tool for manage Hadoop access using Apache Atlas and Ranger.", "version": "1.1.6" }, "last_serial": 5307974, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "2f4f5a8f1103dd6400308f3aec51655c", "sha256": "1c6628880151c54da79e67755fabdd382112da62d40c154892171c2cee59a345" }, "downloads": -1, "filename": "cobra_policytool-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "2f4f5a8f1103dd6400308f3aec51655c", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 37617, "upload_time": "2018-07-24T07:23:30", "url": "https://files.pythonhosted.org/packages/ff/5d/0f01fe5094d969651a009c46508d32bfb9d3307115a97550a9f72a6452bc/cobra_policytool-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "29dcd1896fb9cbbb4375d1ca6d423b5f", "sha256": "b1e925df535e1409697a9d34905d262480828af08887b252c11e3a0dd5fe5b09" }, "downloads": -1, "filename": "cobra_policytool-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "29dcd1896fb9cbbb4375d1ca6d423b5f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17251, "upload_time": "2018-07-23T11:19:06", "url": "https://files.pythonhosted.org/packages/b8/b0/f2773b971c0fed6bf07a8282d33bf191fbca7263c749f1f407d4d4af559c/cobra_policytool-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0789d6ff67200f367c43195c8cd0a651", "sha256": "dbd5c4d6dc1b6eaa17ba1df3429adb16664673561e378731c56240e0025c4082" }, "downloads": -1, "filename": "cobra-policytool-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0789d6ff67200f367c43195c8cd0a651", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17040, "upload_time": "2018-07-23T11:19:08", "url": "https://files.pythonhosted.org/packages/5a/d4/4b3f691525a4b5eff1e389d397f241c891a61eb35a1208b234124fcebf7b/cobra-policytool-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "3c5a857e5254c991a9645ba9aab0b45b", "sha256": "950cbc0f7d88e00a2ed262121f284a5f3e17948eac226dcaa2981dc53867ac4a" }, "downloads": -1, "filename": "cobra_policytool-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "3c5a857e5254c991a9645ba9aab0b45b", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 37616, "upload_time": "2018-07-24T07:23:32", "url": "https://files.pythonhosted.org/packages/76/27/f6f49d85382edfadbcbf7f68b015755878d09d2a2624d0482ec7ef4752f9/cobra_policytool-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "546151b905f0f1dc43c95221a4e110d1", "sha256": "bb42f43ec9fae789727de1e359653f0b425182fe7ddc56b7777a119d1b42e320" }, "downloads": -1, "filename": "cobra_policytool-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "546151b905f0f1dc43c95221a4e110d1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17220, "upload_time": "2018-07-24T07:23:26", "url": "https://files.pythonhosted.org/packages/05/63/cb708cbfafb26f2deb9170cdf915656f2e23c9c8b71a5e44379618a25d60/cobra_policytool-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3935299aa6a9e18fade48d839cea718c", "sha256": "dd41e0598083622ee5cc9540c09daa5a61ebc68b37646b7d03b984d9a8f85b43" }, "downloads": -1, "filename": "cobra-policytool-1.0.1.tar.gz", "has_sig": false, "md5_digest": "3935299aa6a9e18fade48d839cea718c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17088, "upload_time": "2018-07-24T07:23:29", "url": "https://files.pythonhosted.org/packages/8c/77/0a712996219b2243c1ec0b9d4d4363a8bfcd65f54b109a930aaf1b88b64c/cobra-policytool-1.0.1.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "6f7c400b28a261312b45765ef0281021", "sha256": "d8809eaaeee71010cbfb2ee2443ccb46b4baf5427e0e869e05edd1cf6aab78cf" }, "downloads": -1, "filename": "cobra_policytool-1.0.3-py2.7.egg", "has_sig": false, "md5_digest": "6f7c400b28a261312b45765ef0281021", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 37504, "upload_time": "2018-09-26T11:41:25", "url": "https://files.pythonhosted.org/packages/32/d3/fa935ff5b61cfe6a7b9ed21821496715521961bd88655a24b78e79289b7a/cobra_policytool-1.0.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "da2f180c8f5cd528edaf92dd02c565bc", "sha256": "b51020ea7cd9ecd248046b2d4fb23beebe47e9298a9518c77d65dc1fa0ac60eb" }, "downloads": -1, "filename": "cobra_policytool-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "da2f180c8f5cd528edaf92dd02c565bc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17347, "upload_time": "2018-09-26T11:36:28", "url": "https://files.pythonhosted.org/packages/b7/5f/946b504507954bd1b37b6a1523e2cc9ff4b37fcb2597f1f2afa848050347/cobra_policytool-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43e8db71248aaf1043db314b4c9accf9", "sha256": "61b33f6153e5099c249a560d6728a6499f07d9fd9c5ec1b3bbe7789dc8c5f098" }, "downloads": -1, "filename": "cobra-policytool-1.0.3.tar.gz", "has_sig": false, "md5_digest": "43e8db71248aaf1043db314b4c9accf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14794, "upload_time": "2018-09-26T11:41:26", "url": "https://files.pythonhosted.org/packages/9d/16/d2fe8ee1156bde872983ad0bda0a0d97b0e04b900cb63283940d0c12dd12/cobra-policytool-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "59f606731784a7554f1f72e4cf32be71", "sha256": "b8c4363f232e6a9df2f4039ad5a9e51b510279f1cabec75afebea1effe53bc93" }, "downloads": -1, "filename": "cobra_policytool-1.1.0-py2.7.egg", "has_sig": false, "md5_digest": "59f606731784a7554f1f72e4cf32be71", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 60166, "upload_time": "2018-09-26T12:37:45", "url": "https://files.pythonhosted.org/packages/44/6a/79f780ea54dc051c506b24c336e873f8f0893cc4efcb4b83d8ed60870844/cobra_policytool-1.1.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "ddece7ce6a312289dfd85d5fc82d1111", "sha256": "59c3b6dcb55fe3cc37f776291da5dcf84352560f943554976ce9c3a40c6b957b" }, "downloads": -1, "filename": "cobra_policytool-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ddece7ce6a312289dfd85d5fc82d1111", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 26176, "upload_time": "2018-09-26T12:37:42", "url": "https://files.pythonhosted.org/packages/95/71/76db84684046f61f69cdfac1b9e729d581d33bf324d0e7faf551c7b4410c/cobra_policytool-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb87adff9e183ae2023684726f6db6a6", "sha256": "ac23adf2aafbaf9f17ed825b9353c7d6093bba2d771a6bb5ba0e3f71fe6a47a6" }, "downloads": -1, "filename": "cobra_policytool-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cb87adff9e183ae2023684726f6db6a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26181, "upload_time": "2018-09-26T12:37:43", "url": "https://files.pythonhosted.org/packages/db/e1/96a6d257e469fb68223f60582e1336e75c788b32024aba59c1d30f07d08e/cobra_policytool-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af7add70a11744de99b61a40fc32b954", "sha256": "a54870e6c346bad9eba97cec9493b08f38ac98f7d5804879d16d4c0a5ab95a87" }, "downloads": -1, "filename": "cobra-policytool-1.1.0.tar.gz", "has_sig": false, "md5_digest": "af7add70a11744de99b61a40fc32b954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24392, "upload_time": "2018-09-26T12:37:46", "url": "https://files.pythonhosted.org/packages/03/42/5551fbbb3fd709db8100c7f4d77d680184c558e48bd2ac93e8c80e55d4f7/cobra-policytool-1.1.0.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "6b7609dd719ef7d0ec415f0fcb4411eb", "sha256": "6a3357bdbfa956ec58d1eabb80e21445392b115834bb8b53cc74a0ddb76daf18" }, "downloads": -1, "filename": "cobra_policytool-1.1.2-py2.7.egg", "has_sig": false, "md5_digest": "6b7609dd719ef7d0ec415f0fcb4411eb", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 60184, "upload_time": "2018-10-29T15:08:19", "url": "https://files.pythonhosted.org/packages/b2/b3/54dc0541e0a87bbd47c529df9698db0ca5868113f8894638ce8d48512f33/cobra_policytool-1.1.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d249d41ed3ccacdc59bbb3feb314cad8", "sha256": "077d15304c3b669acdd5e16ca2ba7532001e2af59afbaa4b9b77d00b076db27e" }, "downloads": -1, "filename": "cobra_policytool-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "d249d41ed3ccacdc59bbb3feb314cad8", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 26740, "upload_time": "2018-10-29T15:08:15", "url": "https://files.pythonhosted.org/packages/4b/96/f37aaad5cc764ff865bbd8d7b57c9823f7de95260f9ca5efaab0db2ff7f8/cobra_policytool-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f834a60f84ef3aec897c200cb8a8e15c", "sha256": "a72769861b2acf47fad0f39e4de6ac47ace22b0d1dfd6e683d2072fb2696402e" }, "downloads": -1, "filename": "cobra_policytool-1.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f834a60f84ef3aec897c200cb8a8e15c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26743, "upload_time": "2018-10-29T15:08:17", "url": "https://files.pythonhosted.org/packages/df/ab/a198244ce522c0b9a079ae0027fad80a94f10cccb954e92ba208ec43b712/cobra_policytool-1.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad5fa3b4798ba894aef7e5e9754b83ab", "sha256": "2dad642f54fb14dd64e7d33c4e89662f547850c73dec3b5b9202234af457f404" }, "downloads": -1, "filename": "cobra-policytool-1.1.2.tar.gz", "has_sig": false, "md5_digest": "ad5fa3b4798ba894aef7e5e9754b83ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24459, "upload_time": "2018-10-29T15:08:18", "url": "https://files.pythonhosted.org/packages/da/fc/78d5ee809b4bcabfe04105b30b012adc409508231505f191027860f99ff5/cobra-policytool-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "ca48dc103e116debe19ddf6373e12a00", "sha256": "20db17a7317dc4f1d45752692c3ee88ff559b2ac8217d54219638897474bfe06" }, "downloads": -1, "filename": "cobra_policytool-1.1.3-py2.7.egg", "has_sig": false, "md5_digest": "ca48dc103e116debe19ddf6373e12a00", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 60304, "upload_time": "2018-11-14T14:44:50", "url": "https://files.pythonhosted.org/packages/3e/d2/85317a46674f1e64dc4e0607baca616593e8168ffa15b2072d8b6be513d9/cobra_policytool-1.1.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8c7e9754b7040dbecf281616e9893455", "sha256": "38a62e21cd4f7cfce6fb84ece7977be2655405e0647c62b8c00f7115136c3ab1" }, "downloads": -1, "filename": "cobra_policytool-1.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "8c7e9754b7040dbecf281616e9893455", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 26799, "upload_time": "2018-11-14T14:44:47", "url": "https://files.pythonhosted.org/packages/b0/12/3fa69c70d8008414a1fde5f57439e6990a3282d2e2c7a6316764ead19bb3/cobra_policytool-1.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ec844ab749ab995f6046d445cfb34e4", "sha256": "564125d592a0f747168b591300ba1051f66468d985ae31dcc9e854ceda3ce45f" }, "downloads": -1, "filename": "cobra_policytool-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6ec844ab749ab995f6046d445cfb34e4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26802, "upload_time": "2018-11-14T14:44:45", "url": "https://files.pythonhosted.org/packages/8c/8f/80bf9407c390f879cb371d6d3bbb0f6598da653d65c1f2ae8a6d7558c39b/cobra_policytool-1.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75aafaf9dbe93b60f68d47f1fe22b1da", "sha256": "8d444af010174c31f2231382c2006d0cbd89b1613939b15554c3a19d26d193f9" }, "downloads": -1, "filename": "cobra-policytool-1.1.3.tar.gz", "has_sig": false, "md5_digest": "75aafaf9dbe93b60f68d47f1fe22b1da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24512, "upload_time": "2018-11-14T14:44:48", "url": "https://files.pythonhosted.org/packages/93/de/72b5d4ff1a03495e4e38ba6d15a61ee02eb68420b7adae7a8d7f3107851d/cobra-policytool-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "03453f176aed57c4e942fcb1de207d02", "sha256": "0db0abe62fbf60fc57d732a7f6ee9b7ad8833bfa39b36ee5bcd59278e3e775c2" }, "downloads": -1, "filename": "cobra_policytool-1.1.4-py2.7.egg", "has_sig": false, "md5_digest": "03453f176aed57c4e942fcb1de207d02", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 60399, "upload_time": "2018-11-15T13:58:19", "url": "https://files.pythonhosted.org/packages/2a/65/1569ae807a8e571349e919a046bccad6633842391e62f8f82b2a976cb509/cobra_policytool-1.1.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d16849fff7bd98e11e03d0582ab4207e", "sha256": "7b0487d835c8d5283960d994d262f314c695875a30b68273028184a2a680f650" }, "downloads": -1, "filename": "cobra_policytool-1.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "d16849fff7bd98e11e03d0582ab4207e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 26816, "upload_time": "2018-11-15T13:58:15", "url": "https://files.pythonhosted.org/packages/cf/e3/e5d0687cb540b5b388f0191eb76fc062056ef71c4d2dc2a7fddb827c06f2/cobra_policytool-1.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "207e6288f55e869926138abbbf0f0752", "sha256": "b37c26085bea1e171e8dcdf530a75cc00867c9d74f61c46b087d5ef9f29c55be" }, "downloads": -1, "filename": "cobra_policytool-1.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "207e6288f55e869926138abbbf0f0752", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26819, "upload_time": "2018-11-15T13:58:16", "url": "https://files.pythonhosted.org/packages/c8/22/f624af5d13878ffe162bb1de123a8f1803a513ccdbe5412afb4165cf2272/cobra_policytool-1.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abe113a996d14b32e74c0b1b6592d377", "sha256": "ddcdbbb5e71a4da70902e4b2276daa160cdadb9b4d8a5ed0a345a54e6b5ab108" }, "downloads": -1, "filename": "cobra-policytool-1.1.4.tar.gz", "has_sig": false, "md5_digest": "abe113a996d14b32e74c0b1b6592d377", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24532, "upload_time": "2018-11-15T13:58:17", "url": "https://files.pythonhosted.org/packages/c2/8f/acdca42f6c1b2f7f6ea163f0c7950b2fdb455df0e8b9832e4ea2e547d8a9/cobra-policytool-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "d9e8246955a63a4a35b3df782884bca4", "sha256": "504babddeb36b2857582e6104166143e11d8197a00e01c5b040bb766c52087ff" }, "downloads": -1, "filename": "cobra_policytool-1.1.5-py2.7.egg", "has_sig": false, "md5_digest": "d9e8246955a63a4a35b3df782884bca4", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 67882, "upload_time": "2019-05-23T10:31:15", "url": "https://files.pythonhosted.org/packages/73/17/aa520af2d3e95f3340a5d128eb13a1fea9696802987a7f319ce6df649ad6/cobra_policytool-1.1.5-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f6473b679d848f112b2e0fe7adc22911", "sha256": "eeeb16771bb2cf5072351ec65fb0814c9f16df1b8ae0e8d943d273960a88f36e" }, "downloads": -1, "filename": "cobra_policytool-1.1.5-py2-none-any.whl", "has_sig": false, "md5_digest": "f6473b679d848f112b2e0fe7adc22911", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 29854, "upload_time": "2019-05-23T10:31:11", "url": "https://files.pythonhosted.org/packages/0b/7e/481da77736b693d3c8009e09dc08d0af4ed5175af539eed827c25b431ffd/cobra_policytool-1.1.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "352c19bcdb63ec1cca566d4468b4ea68", "sha256": "70e67310328aaf89dad5cf554925768888cdffbaa5661fe9a1097ca70b0180d2" }, "downloads": -1, "filename": "cobra_policytool-1.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "352c19bcdb63ec1cca566d4468b4ea68", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29855, "upload_time": "2019-05-23T10:31:12", "url": "https://files.pythonhosted.org/packages/16/0b/01b2178391d1efa97adbdcc0341a72baab9e21681969fd784287a4b52004/cobra_policytool-1.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f066eaf8b896bcebdae03078b872aff1", "sha256": "6a8b38aa16882d67fa0b19a60642821e7db8ca00314e72b30bd4df6c1e279f17" }, "downloads": -1, "filename": "cobra-policytool-1.1.5.tar.gz", "has_sig": false, "md5_digest": "f066eaf8b896bcebdae03078b872aff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26646, "upload_time": "2019-05-23T10:31:14", "url": "https://files.pythonhosted.org/packages/b7/21/1e07da4bb6728d0818e889bb0293e07caf8bf5a28f2a76bd8c2f9c5be201/cobra-policytool-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "7bebd2442c63c4cdcf82769723d66bba", "sha256": "290bfdb40149fc6d285dc63ce3477f66862d35f8ec8e8e1e2ebaebf38ab53da6" }, "downloads": -1, "filename": "cobra_policytool-1.1.6-py2.7.egg", "has_sig": false, "md5_digest": "7bebd2442c63c4cdcf82769723d66bba", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 67896, "upload_time": "2019-05-23T15:09:29", "url": "https://files.pythonhosted.org/packages/9d/c8/4f62f5ae790cbc9f464037bb603bbdfd9f64ddb673e2d8b7af1c676b3786/cobra_policytool-1.1.6-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0369b82f06cd4c9f5ed08bfa7c9059f5", "sha256": "4ebb7209093fd4262fef6c6826a74cb24eabd27385fff7964911d21121c5bc78" }, "downloads": -1, "filename": "cobra_policytool-1.1.6-py2-none-any.whl", "has_sig": false, "md5_digest": "0369b82f06cd4c9f5ed08bfa7c9059f5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 29851, "upload_time": "2019-05-23T15:09:26", "url": "https://files.pythonhosted.org/packages/3c/84/051886339a2792e365305798c448a342ca4db571973416eb4dea96e62580/cobra_policytool-1.1.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c08cb645655bacc84db94c2acd9bb71f", "sha256": "9748c85fe2c64caf823879643e0b1cbacf75207fb09dcfd5effa0fdd57b7e759" }, "downloads": -1, "filename": "cobra_policytool-1.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c08cb645655bacc84db94c2acd9bb71f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29852, "upload_time": "2019-05-23T15:09:25", "url": "https://files.pythonhosted.org/packages/7b/3d/9015943a6e93e6b60ac9d0a72b676e34c74d5195a3adf330a7d86e1c97bb/cobra_policytool-1.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f4b17db5b479e3b82c5f2bd0bd39ef4", "sha256": "e3818935b15541b9a9066671a298eb7640a92a6663e802accc48a014cefb1d10" }, "downloads": -1, "filename": "cobra-policytool-1.1.6.tar.gz", "has_sig": false, "md5_digest": "8f4b17db5b479e3b82c5f2bd0bd39ef4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26639, "upload_time": "2019-05-23T15:09:28", "url": "https://files.pythonhosted.org/packages/1f/58/eb2ec756abd40a5fc4e846acbfefb65379a21e3f5bf5c237207fb7b375b2/cobra-policytool-1.1.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7bebd2442c63c4cdcf82769723d66bba", "sha256": "290bfdb40149fc6d285dc63ce3477f66862d35f8ec8e8e1e2ebaebf38ab53da6" }, "downloads": -1, "filename": "cobra_policytool-1.1.6-py2.7.egg", "has_sig": false, "md5_digest": "7bebd2442c63c4cdcf82769723d66bba", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 67896, "upload_time": "2019-05-23T15:09:29", "url": "https://files.pythonhosted.org/packages/9d/c8/4f62f5ae790cbc9f464037bb603bbdfd9f64ddb673e2d8b7af1c676b3786/cobra_policytool-1.1.6-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0369b82f06cd4c9f5ed08bfa7c9059f5", "sha256": "4ebb7209093fd4262fef6c6826a74cb24eabd27385fff7964911d21121c5bc78" }, "downloads": -1, "filename": "cobra_policytool-1.1.6-py2-none-any.whl", "has_sig": false, "md5_digest": "0369b82f06cd4c9f5ed08bfa7c9059f5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 29851, "upload_time": "2019-05-23T15:09:26", "url": "https://files.pythonhosted.org/packages/3c/84/051886339a2792e365305798c448a342ca4db571973416eb4dea96e62580/cobra_policytool-1.1.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c08cb645655bacc84db94c2acd9bb71f", "sha256": "9748c85fe2c64caf823879643e0b1cbacf75207fb09dcfd5effa0fdd57b7e759" }, "downloads": -1, "filename": "cobra_policytool-1.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c08cb645655bacc84db94c2acd9bb71f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29852, "upload_time": "2019-05-23T15:09:25", "url": "https://files.pythonhosted.org/packages/7b/3d/9015943a6e93e6b60ac9d0a72b676e34c74d5195a3adf330a7d86e1c97bb/cobra_policytool-1.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f4b17db5b479e3b82c5f2bd0bd39ef4", "sha256": "e3818935b15541b9a9066671a298eb7640a92a6663e802accc48a014cefb1d10" }, "downloads": -1, "filename": "cobra-policytool-1.1.6.tar.gz", "has_sig": false, "md5_digest": "8f4b17db5b479e3b82c5f2bd0bd39ef4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26639, "upload_time": "2019-05-23T15:09:28", "url": "https://files.pythonhosted.org/packages/1f/58/eb2ec756abd40a5fc4e846acbfefb65379a21e3f5bf5c237207fb7b375b2/cobra-policytool-1.1.6.tar.gz" } ] }