{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Libraries" ], "description": "
\n\n \n\n\n[![version](https://img.shields.io/pypi/v/codewatch.svg)](https://pypi.org/project/codewatch/)\n[![codecov](https://codecov.io/gh/tophat/codewatch/branch/master/graph/badge.svg)](https://codecov.io/gh/tophat/codewatch)\n[![Builds](https://img.shields.io/circleci/project/github/tophat/codewatch/master.svg)](https://circleci.com/gh/tophat/codewatch)\n[![Greenkeeper badge](https://badges.greenkeeper.io/tophat/codewatch.svg)](https://greenkeeper.io/)\n
\n\n[![Slack workspace](https://slackinvite.dev.tophat.com/badge.svg)](https://opensource.tophat.com/slack)\n\n \"All\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Maturity badge - level 1](https://img.shields.io/badge/Maturity-Level%201%20--%20New%20Project-yellow.svg)](https://github.com/tophat/getting-started/blob/master/scorecard.md)\n\n
\n\n# Overview\n\n_Monitor and manage deeply customizable metrics about your python code using ASTs._\n\nCodewatch lets you write simple python code to track statistics about the state of your codebase and write lint-like assertions on those statistics. Use this to incrementally improve and evolve the quality of your code base, increase the visibility of problematic code, to encourage use of new patterns while discouraging old ones, to enforce coding style guides, or to prevent certain kinds of regression errors.\n\nWhat codewatch does:\n1. Traverses your project directory\n2. Parses your code into AST nodes and calls your visitor functions\n3. Your visitor functions run and populate a stats dictionary\n4. After all visitor functions are called, your assertion functions are called\n5. Your assertion functions can assert on data in the stats dictionary, save metrics to a dashboard, or anything you can think of\n\n# Installation\nPython: 2.7, 3.6, 3.7\n\nExecute the following in your terminal:\n\n```bash\npip install codewatch\n```\n\n# Usage\n\n`codewatch codewatch_config_module`\n\n`codewatch_config_module` is a module that should contain your visitors, assertions and filters (if required)\n\n### Visitors\nYou should use the `@visit` decorator.\nThe passed in node is an [astroid](https://astroid.readthedocs.io/en/latest/) node which follows a similar API to `ast.Node`\n\n```python\nfrom codewatch import visit\n\n\ndef _count_import(stats):\n stats.increment('total_imports_num')\n\n@visit('import')\ndef count_import(node, stats, _rel_file_path):\n _count_import(stats)\n\n@visit('importFrom')\ndef count_import_from(node, stats, _rel_file_path):\n _count_import(stats)\n```\n\nThis will build a stats dictionary that contains something like the following:\n\n```json\n{\n \"total_imports_num\": 763\n}\n```\n\n### Assertions\nOnce again in the `codewatch_config_module` you can add assertions against this stat dictionary using the `@assertion` decorator\n\n```python\nfrom codewatch import assertion\n\n\n@assertion()\ndef number_of_imports_not_too_high(stats):\n threshold = 700\n actual = stats.get('total_imports_num')\n err = 'There were {} total imports detected which exceeds threshold of {}'.format(actual, threshold)\n assert actual <= threshold, err\n```\n\nIn this case, the assertion would fail since 763 is the `newStat` and the message:\n\n```\nThere were 763 total imports detected which exceeds threshold of 700\n```\n\nwould be printed\n\n### Filters\nYou can add the following *optional* filters:\n\n1. directory_filter (defaults to skip test and migration directories)\n\n```python\n# visit all directories\ndef directory_filter(_dir_name):\n return True\n```\n\n2. file_filter (defaults to only include python files, and skips test files)\n```python\n# visit all files\ndef file_filter(_file_name):\n return True\n```\n\nTune these filters to suit your needs.\n\n\n# Contributing\nSee [the Contributing docs](CONTRIBUTING.md)\n\n# Contributors\nThanks goes to these wonderful people [emoji key](https://github.com/kentcdodds/all-contributors#emoji-key):\n\n\n\n| [
Josh Doncaster Marsiglio](https://github.com/lime-green)
[\ud83d\udcbb](https://github.com/tophat/codewatch/commits?author=lime-green \"Code\") | [
Rohit Jain](https://github.com/rohit-jain27)
[\ud83d\udcbb](https://github.com/tophat/codewatch/commits?author=rohit-jain27 \"Code\") | [
Chris Abiad](https://github.com/cabiad)
[\ud83d\udcbb](https://github.com/tophat/codewatch/commits?author=cabiad \"Code\") | [
Francois Campbell](https://github.com/francoiscampbell)
[\ud83d\udcbb](https://github.com/tophat/codewatch/commits?author=francoiscampbell \"Code\") | [
Monica Moore](https://monicamoore.ca)
[\ud83c\udfa8](#design-monicamm95 \"Design\") | [
Jay Crumb](https://github.com/jcrumb)
[\ud83d\udcd6](https://github.com/tophat/codewatch/commits?author=jcrumb \"Documentation\") | [
Jake Bolam](https://github.com/jakebolam)
[\ud83d\ude87](#infra-jakebolam \"Infrastructure (Hosting, Build-Tools, etc)\") |\n| :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| [
Shouvik D'Costa](https://github.com/sdcosta)
[\ud83d\udcd6](https://github.com/tophat/codewatch/commits?author=sdcosta \"Documentation\") | [
Siavash Bidgoly](https://github.com/syavash)
[\ud83d\ude87](#infra-syavash \"Infrastructure (Hosting, Build-Tools, etc)\") | [
Noah Negin-Ulster](https://github.com/noahnu)
[\ud83d\udcbb](https://github.com/tophat/codewatch/commits?author=noahnu \"Code\") | [
Vardan Nadkarni](https://github.com/vardan10)
[\ud83d\udcbb](https://github.com/tophat/codewatch/commits?author=vardan10 \"Code\") | [
greenkeeper[bot]](https://github.com/apps/greenkeeper)
[\ud83d\ude87](#infra-greenkeeper[bot] \"Infrastructure (Hosting, Build-Tools, etc)\") |\n\n\nWe welcome contributions from the community, Top Hatters and non-Top Hatters alike. Check out our [contributing guidelines](CONTRIBUTING.md) for more details.\n\n# Credits\n\nSpecial thanks to [Carol Skelly](https://github.com/iatek) for donating the 'tophat' GitHub organization.\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/tophat/codewatch", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "codewatch", "package_url": "https://pypi.org/project/codewatch/", "platform": "", "project_url": "https://pypi.org/project/codewatch/", "project_urls": { "Homepage": "https://github.com/tophat/codewatch" }, "release_url": "https://pypi.org/project/codewatch/0.1.0/", "requires_dist": [ "astroid (==1.6.4); python_version < \"3\"", "astroid (==2.0.4); python_version >= \"3\"" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "summary": "Monitor and manage deeply customizable metrics about your python code using ASTs", "version": "0.1.0" }, "last_serial": 4818921, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "88e0109f16e8d0e29b5272a616320169", "sha256": "6e4cab63cb590814729b5f0922d92dcbb6a2a90ad35aa0525958a422cbb9a484" }, "downloads": -1, "filename": "codewatch-0.0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "88e0109f16e8d0e29b5272a616320169", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22405, "upload_time": "2018-11-23T02:20:39", "url": "https://files.pythonhosted.org/packages/6b/ea/5094c0b54415b4df4bb0f1c798674a0b519863ea0aa223db31e09b6e44c8/codewatch-0.0.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "701b5b304018c3eadb17626588be2292", "sha256": "f8a9e7b644e36084a28e08311446d91c8c5dc5a0be9502bf6cf88548c39f6a0d" }, "downloads": -1, "filename": "codewatch-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "701b5b304018c3eadb17626588be2292", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22402, "upload_time": "2018-11-23T02:20:06", "url": "https://files.pythonhosted.org/packages/82/79/7af369ae007ba5da4e43ab36b80fe4e0c4da3bfb157d269fd3853253b3a5/codewatch-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b47740d79ca9ca9c4d25c506e18a8be0", "sha256": "7162e46769f247250dda29e2e2eea0f39bb8f5a1b51e3307b9e9e811248e4862" }, "downloads": -1, "filename": "codewatch-0.0.10.tar.gz", "has_sig": false, "md5_digest": "b47740d79ca9ca9c4d25c506e18a8be0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 13291, "upload_time": "2018-11-23T02:20:08", "url": "https://files.pythonhosted.org/packages/f4/25/ec2ddc2cc4ed6094377af9e81360ef59e3793f5d368edd587819f4b16bac/codewatch-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "f94fc4d294a3567733fedc2c7fbe0c83", "sha256": "e5f72e7d8ce5d99394ddcb02b7e89db393b610ef97fd40d46506302ecc2e297a" }, "downloads": -1, "filename": "codewatch-0.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f94fc4d294a3567733fedc2c7fbe0c83", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22405, "upload_time": "2018-11-23T02:21:54", "url": "https://files.pythonhosted.org/packages/36/42/f2833bcdae1caea27c237b05d73eea70e124ec7ea1ebb2ea722baf534710/codewatch-0.0.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7601f4151b344494c587c924377a09a2", "sha256": "a537adc016f0d84a8b60ec57d69ada21ce780257794e5cfebaed51cd4cdd4517" }, "downloads": -1, "filename": "codewatch-0.0.11.tar.gz", "has_sig": false, "md5_digest": "7601f4151b344494c587c924377a09a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 13035, "upload_time": "2018-11-23T02:21:55", "url": "https://files.pythonhosted.org/packages/58/1f/4207151d6438302ecd5e1999eb2cac5baffd4779b3fd7849d46492575d11/codewatch-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "0f362424e5993a39efd1bd88f64b34ec", "sha256": "024f45a765a9267c299550213327833e6c510ef9cbbd4646e2921e8e6f9bf679" }, "downloads": -1, "filename": "codewatch-0.0.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f362424e5993a39efd1bd88f64b34ec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22373, "upload_time": "2018-11-23T03:35:01", "url": "https://files.pythonhosted.org/packages/0c/5f/f5ff597802f6ebebbf2b4a8c9cf508f1cbc9bd8431275b5ff9784ade5649/codewatch-0.0.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d43914f82f8df7d2d21aaa93529a4751", "sha256": "88478cf5ef998b64040ce06b2f85115029f890096bcc744db50feb8b09caff79" }, "downloads": -1, "filename": "codewatch-0.0.12.tar.gz", "has_sig": false, "md5_digest": "d43914f82f8df7d2d21aaa93529a4751", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 13255, "upload_time": "2018-11-23T03:35:02", "url": "https://files.pythonhosted.org/packages/84/e5/32c0b8b6d3b6e98a664886ec9c50358c4b6360a0aab5183cb0010076064e/codewatch-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "07476b077f0218897569c8b9ec322130", "sha256": "72b0b59475a39e61b50f9602f680e762490a7b372ecaa912053e0b21f8468af5" }, "downloads": -1, "filename": "codewatch-0.0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "07476b077f0218897569c8b9ec322130", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 22373, "upload_time": "2018-11-23T19:11:27", "url": "https://files.pythonhosted.org/packages/8d/e3/fe4a699fdb8ce178351752b70128a563ca2a8689d7aa2e17ce1ca03dc32a/codewatch-0.0.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a08370a1311d296ecc6f985b31b93fe", "sha256": "88b7746441cfcdb5f53f43ecf0a4b14981094ea34e7e9cd5ba0182a022b12a5b" }, "downloads": -1, "filename": "codewatch-0.0.13.tar.gz", "has_sig": false, "md5_digest": "5a08370a1311d296ecc6f985b31b93fe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 13283, "upload_time": "2018-11-23T19:11:28", "url": "https://files.pythonhosted.org/packages/fc/dc/a81449b4e49fdd5244603f6b78e88d971df6c93bfe358b728e91a12d1633/codewatch-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "103cf8c3a56805123fc152a902913540", "sha256": "3d9641f5390d477fb49f6c23e27547d9a1d054284bc521a3e8ccabc62f446683" }, "downloads": -1, "filename": "codewatch-0.0.14-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "103cf8c3a56805123fc152a902913540", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 22385, "upload_time": "2018-11-23T20:27:02", "url": "https://files.pythonhosted.org/packages/fb/d3/7b4a56aba49d01dd369ea247c488342c758e6bf40ad3f38cdbf643f0429d/codewatch-0.0.14-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7838ded845fa8814d4ec785b2af8f54c", "sha256": "460f6554bee4a304277cb865ede4de211acb5266b6a72a59deed461abbe0b610" }, "downloads": -1, "filename": "codewatch-0.0.14.tar.gz", "has_sig": false, "md5_digest": "7838ded845fa8814d4ec785b2af8f54c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 13493, "upload_time": "2018-11-23T20:27:04", "url": "https://files.pythonhosted.org/packages/91/d7/e4d4fcb3b2e1c2f80416b6e1d74f5dc5069a7ec8c1433d97b280ad919f79/codewatch-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "2d449b68781308bf48fd0fb00c801b20", "sha256": "4a51e378d600b2f3eeaf21ba9d13b4b724697b15de41b80bb1d74af8483942fd" }, "downloads": -1, "filename": "codewatch-0.0.15-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2d449b68781308bf48fd0fb00c801b20", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 24249, "upload_time": "2018-11-23T22:12:28", "url": "https://files.pythonhosted.org/packages/aa/2b/ecc8413da370ccbe9bf03ef89bb7773cde2620761f6ba815c772d0358c63/codewatch-0.0.15-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a12b9cddb25e399d406699af052adb5c", "sha256": "7adc6b0f9df34b7dadbf5f75b43de14109c985268ad6f671167b5530651c60c9" }, "downloads": -1, "filename": "codewatch-0.0.15.tar.gz", "has_sig": false, "md5_digest": "a12b9cddb25e399d406699af052adb5c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 17517, "upload_time": "2018-11-23T22:12:29", "url": "https://files.pythonhosted.org/packages/f8/ae/6b60a02cba2cb2aa6fc77b6f536b7a002ae6bdc315c3a5bba322a2f21389/codewatch-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "56df2a313911a6d86e6b3a0acbc4be14", "sha256": "85a0934dc30e50a1f2308a87ca5ea6fa0eb5af7845aaec10944a585cea1a5c6f" }, "downloads": -1, "filename": "codewatch-0.0.16-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "56df2a313911a6d86e6b3a0acbc4be14", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 24870, "upload_time": "2018-11-28T03:56:19", "url": "https://files.pythonhosted.org/packages/19/bf/589e2942a60a5bb18a29e7a942ff655b4f1665e06dff551b43aa19d9b506/codewatch-0.0.16-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b797c876575b2b1ca183f261d5ee278", "sha256": "9a5c9e86ece9330c727ee58dee0ec637256887ee6f51bf0816cf85685b2bde4b" }, "downloads": -1, "filename": "codewatch-0.0.16.tar.gz", "has_sig": false, "md5_digest": "9b797c876575b2b1ca183f261d5ee278", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 14179, "upload_time": "2018-11-28T03:56:20", "url": "https://files.pythonhosted.org/packages/cf/e4/d2efee763ce0cfee6ee7cd26ac4a7af04a7131d166d075ee2066cb31c523/codewatch-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "d21c9d1d1f5fa241a5143f009c7f285f", "sha256": "b37959b274cd79185d63332d16c88eb0e83c34f1b2018a33e42629b38efe36ac" }, "downloads": -1, "filename": "codewatch-0.0.17-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d21c9d1d1f5fa241a5143f009c7f285f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 26760, "upload_time": "2018-12-17T21:49:40", "url": "https://files.pythonhosted.org/packages/25/28/411fb9e6e51100523f0ad527460877acb3c6236cd6b62a4bcf2d85c669fe/codewatch-0.0.17-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7dfa0550a016246051224a04bef55d1", "sha256": "c3bd1229e8a0ee2e8aff957d674714c9fec28a7ce7f901f44cf0292073685bb4" }, "downloads": -1, "filename": "codewatch-0.0.17.tar.gz", "has_sig": false, "md5_digest": "a7dfa0550a016246051224a04bef55d1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 15331, "upload_time": "2018-12-17T21:49:41", "url": "https://files.pythonhosted.org/packages/c0/2b/71162c4be24563a12de5e44d0283d64e7a514b715707cc702b0def74b867/codewatch-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "9a95187b2a8806bcb152f442a8a8e737", "sha256": "36d699dfe0a9bbb453b152d2b7717ed2ff8e44d48e9b12500427c5667a3e7126" }, "downloads": -1, "filename": "codewatch-0.0.18-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a95187b2a8806bcb152f442a8a8e737", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 30527, "upload_time": "2019-01-25T18:12:14", "url": "https://files.pythonhosted.org/packages/ab/ba/d60344578039358130b1bb017a8346503419db5ced034ffff4353b15887e/codewatch-0.0.18-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84c7cabfc4b08a9eb21f7afcac2d345f", "sha256": "5750e7f683515d8019fea7ef99be63ff5ee0e1fbd93b979363c241494d55ffed" }, "downloads": -1, "filename": "codewatch-0.0.18.tar.gz", "has_sig": false, "md5_digest": "84c7cabfc4b08a9eb21f7afcac2d345f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 20678, "upload_time": "2019-01-25T18:12:16", "url": "https://files.pythonhosted.org/packages/b7/60/138acc13b3ce4a3f65aab52db03176085a6b0b75ac5f163010c1779609ef/codewatch-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "ec17ebb1572da879cd78caa9d64fcf23", "sha256": "4d78aa966368b71f4a9260fd47319f45392c0fad6ba0d91d6b8a7f258c926c42" }, "downloads": -1, "filename": "codewatch-0.0.19-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ec17ebb1572da879cd78caa9d64fcf23", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 30551, "upload_time": "2019-01-26T17:31:29", "url": "https://files.pythonhosted.org/packages/5a/21/15ce40efc3efd3ada5cb27d0290117187dbbb17227752417ff75532dc86d/codewatch-0.0.19-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd64a260001add7b603241624d253d73", "sha256": "fad5074056b540bad5993bb50ae210d70b74abfe85d0cdb079fea1e15274ae87" }, "downloads": -1, "filename": "codewatch-0.0.19.tar.gz", "has_sig": false, "md5_digest": "cd64a260001add7b603241624d253d73", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 20800, "upload_time": "2019-01-26T17:31:31", "url": "https://files.pythonhosted.org/packages/e1/63/12bb9e234965fa686a47c2d36c831aacfd4926976942223d1884efb107fc/codewatch-0.0.19.tar.gz" } ], "0.0.1a0": [ { "comment_text": "", "digests": { "md5": "a1b259f7ec6d6cf71c3dade70df59060", "sha256": "015dcb4a4615f83e69e9e180a7854aba28a06991d2bad086c4e4e4b9203ea2e9" }, "downloads": -1, "filename": "codewatch-0.0.1a0-py3-none-any.whl", "has_sig": false, "md5_digest": "a1b259f7ec6d6cf71c3dade70df59060", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15674, "upload_time": "2018-11-16T00:12:08", "url": "https://files.pythonhosted.org/packages/b5/cf/63ea164de2ef736316a36b76560d242313155709b28f76f3a7f9a60ffc05/codewatch-0.0.1a0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67e4652f8085b55cb55aa71e86b89140", "sha256": "8fe098021b30c847861285dc87d660be1648dbc0108d5aa9596552657b68d162" }, "downloads": -1, "filename": "codewatch-0.0.1a0.tar.gz", "has_sig": false, "md5_digest": "67e4652f8085b55cb55aa71e86b89140", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7575, "upload_time": "2018-11-16T00:12:10", "url": "https://files.pythonhosted.org/packages/61/ef/a8d5f80aa3abfdd2f3ff60f43e4e1a0fb304a5df27291ec4fdca66e49854/codewatch-0.0.1a0.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fa9c0731022d490f9300b559d1697601", "sha256": "cb91fa422d9290914cf6763d05d5b933be31095daa6efc3f57219f64ba4fca50" }, "downloads": -1, "filename": "codewatch-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fa9c0731022d490f9300b559d1697601", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15683, "upload_time": "2018-11-19T19:28:13", "url": "https://files.pythonhosted.org/packages/ae/f0/4b769817bf640f299428a08dabb6b28a700e12f2cecd639a59a51bb7e79c/codewatch-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "087c0a289b493d7e6b50afc38d662735", "sha256": "4cd863d0628b262bd370ca97a818f941259f7a32ab7a79953e34b1bc53589c51" }, "downloads": -1, "filename": "codewatch-0.0.2.tar.gz", "has_sig": false, "md5_digest": "087c0a289b493d7e6b50afc38d662735", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7642, "upload_time": "2018-11-19T19:28:14", "url": "https://files.pythonhosted.org/packages/0b/74/8c5f5eeebea16b6b2460333063ab3c47a0bd630fd403244a0c650d344691/codewatch-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "f24446dcffd12186c43cbc523e37c4a0", "sha256": "9256a1fa549272e5379865a3f5d975f6802cbc2d11454df455bbcc7876251c14" }, "downloads": -1, "filename": "codewatch-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f24446dcffd12186c43cbc523e37c4a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18847, "upload_time": "2018-11-21T15:30:39", "url": "https://files.pythonhosted.org/packages/b2/6b/b386b79a619cdc40b09738c6d741df97490f12880e8a315c011f10ca5207/codewatch-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27a8258840045b745e3654660bf333b6", "sha256": "de7a8d49d7113415abc458581bb31a257e3fbbe40cccc4ff90549f8439939db7" }, "downloads": -1, "filename": "codewatch-0.0.3.tar.gz", "has_sig": false, "md5_digest": "27a8258840045b745e3654660bf333b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9264, "upload_time": "2018-11-21T15:30:49", "url": "https://files.pythonhosted.org/packages/d8/91/9f07a99710c9e854a1a32ec4f5388665305b21f8745c7a5953d09aa3b9e4/codewatch-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "46124b3f0f76b4db8aab51bc7bb78908", "sha256": "a93f12f7653cfa723b79500ca1c5c67853e0b8dd3f4bda182eee8587ee3f4728" }, "downloads": -1, "filename": "codewatch-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "46124b3f0f76b4db8aab51bc7bb78908", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20179, "upload_time": "2018-11-22T16:51:51", "url": "https://files.pythonhosted.org/packages/aa/ae/1ff7fe0ff80b549173e21f2e3a322b55a00fbe9938ae686a84ad398b1c06/codewatch-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "325a408ab0f875c2833f426bca15eac6", "sha256": "956c85e6d1037d6fab743844cd47d59a521e9f68687f42249d8472ebfec1e80c" }, "downloads": -1, "filename": "codewatch-0.0.4.tar.gz", "has_sig": false, "md5_digest": "325a408ab0f875c2833f426bca15eac6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10620, "upload_time": "2018-11-22T16:51:53", "url": "https://files.pythonhosted.org/packages/e3/ec/057717738799d627e9320a062cfe4e5ed369697bbbd14192b15010a23939/codewatch-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "7d7c57086bf2fb9e810f2386b7217373", "sha256": "908680f789ee0088047337af51609b4ebd0da576fa9c8e4f166c5795587445ed" }, "downloads": -1, "filename": "codewatch-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "7d7c57086bf2fb9e810f2386b7217373", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 21189, "upload_time": "2018-11-22T20:44:02", "url": "https://files.pythonhosted.org/packages/e7/28/32a9583d576b52370db7765da7606c212cad9eaad01197f2c11c20f95e48/codewatch-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6d60c5d8bdbeab2998be2147f9746c6", "sha256": "0647779e01af87433c46dea81842bf8808b97e0cee89c62241700bf6bca09cc1" }, "downloads": -1, "filename": "codewatch-0.0.5.tar.gz", "has_sig": false, "md5_digest": "b6d60c5d8bdbeab2998be2147f9746c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 11922, "upload_time": "2018-11-22T20:44:03", "url": "https://files.pythonhosted.org/packages/7a/86/b4a1404df364178b47ac0d7e6a4cbfab372b9830d3da271edf9f73b686bf/codewatch-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "bf8e676fb9492e776085e233ffc2a5e8", "sha256": "c84ece7cdcefaba66de22b0e719e9232508b0151a082ecd8efb6ac288757607c" }, "downloads": -1, "filename": "codewatch-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "bf8e676fb9492e776085e233ffc2a5e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 21800, "upload_time": "2018-11-22T22:47:29", "url": "https://files.pythonhosted.org/packages/fe/e3/d8036ee055591743061cb8f70ba6af48d90bd6ea2fa76cab995455078b57/codewatch-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d0805d8a5a200d909f101a5414164d7", "sha256": "6829e57fa3c5b29b6752abb833a6a092fca4273fd12c25bb41a4dad3a434cb29" }, "downloads": -1, "filename": "codewatch-0.0.6.tar.gz", "has_sig": false, "md5_digest": "7d0805d8a5a200d909f101a5414164d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 12383, "upload_time": "2018-11-22T22:47:30", "url": "https://files.pythonhosted.org/packages/5c/90/7642f20bc8fde5aa1116358ed391a20615ab678e9014aff19c8170e4f763/codewatch-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "f6390ea6ecc1a1f415b61211a08cbdf6", "sha256": "9c3c34994f7405e4b5a78c5674ef4b64bef17e6515f8fe5b427c452ad3e934c4" }, "downloads": -1, "filename": "codewatch-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "f6390ea6ecc1a1f415b61211a08cbdf6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22034, "upload_time": "2018-11-22T23:29:41", "url": "https://files.pythonhosted.org/packages/d7/2e/85c62d7ac057b62c7ec341ba739dbb197dd17cb3ce89aa7d0b6640f13045/codewatch-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b0189fd5bf9fee4ed9ffc35af15be05", "sha256": "f2dee1d8c502c39dcd72d3c34e02510bb92f051a52fa400e4b3d6c7cba0aa0f8" }, "downloads": -1, "filename": "codewatch-0.0.7.tar.gz", "has_sig": false, "md5_digest": "4b0189fd5bf9fee4ed9ffc35af15be05", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 12603, "upload_time": "2018-11-22T23:29:43", "url": "https://files.pythonhosted.org/packages/8a/a4/cf4f1c2b00cb2eba485da81dfd1d2c0350fe0e8758703509353d52028328/codewatch-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "59bb9a1414309ff53b3627c3988a0c0b", "sha256": "b5dd03526d0e0f867e8d322efcdb9cb73b63eceeaab25f6b2965a4b3167ca212" }, "downloads": -1, "filename": "codewatch-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "59bb9a1414309ff53b3627c3988a0c0b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22030, "upload_time": "2018-11-23T00:45:50", "url": "https://files.pythonhosted.org/packages/0f/ed/84d0ae33419a2cb180bf94c54e2bc3c5f60d00fbf4563aafec348ed14ed8/codewatch-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ac7132cdf469665957bff500983346c", "sha256": "87b3da061f8bd4974c15045c51970d5ec5015e31cc1009331d7c56951852580b" }, "downloads": -1, "filename": "codewatch-0.0.8.tar.gz", "has_sig": false, "md5_digest": "6ac7132cdf469665957bff500983346c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 13043, "upload_time": "2018-11-23T00:45:52", "url": "https://files.pythonhosted.org/packages/89/ee/0ba1c5318f7d6835a32816c4dded7f265eaca0ab9796825a3b27276faab7/codewatch-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "fbb2a887598ee12a209bc6f31e4de80d", "sha256": "64966d1fc2ca83e84ced6a32439b4a2a942df80cee4b03e957a140baf1f1f931" }, "downloads": -1, "filename": "codewatch-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fbb2a887598ee12a209bc6f31e4de80d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 22035, "upload_time": "2018-11-23T02:10:51", "url": "https://files.pythonhosted.org/packages/a0/ea/a8db06e63178d1123b85562680bbed07ba34faaf0c307f7b57c05be4119e/codewatch-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2436fb99c49ab722aa369a798e2366f9", "sha256": "ca5070ee66e53a01371761c581d16d6fc38525f842d328b1cbb332dbd8caa75e" }, "downloads": -1, "filename": "codewatch-0.0.9.tar.gz", "has_sig": false, "md5_digest": "2436fb99c49ab722aa369a798e2366f9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.7", "size": 12946, "upload_time": "2018-11-23T02:10:52", "url": "https://files.pythonhosted.org/packages/ad/6b/df3b46503575fda719917e461fd71e64bf9a233b6b4c98cd305bd5434493/codewatch-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "8299ac43ee815556e5ea77c2770bfc4e", "sha256": "623489ae18a33d53b5f43995daa056f423fbaa12364751374c362881c8f815a2" }, "downloads": -1, "filename": "codewatch-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8299ac43ee815556e5ea77c2770bfc4e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 31322, "upload_time": "2019-02-14T05:43:56", "url": "https://files.pythonhosted.org/packages/30/22/001be01109df54844542d32d11fcdb2e1311c67523ac101b45139974e2b5/codewatch-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "611e536fbec3da095eefee7506ee50d9", "sha256": "60141cf698a91e283955d3722221a59c82cbc3382487cc811e2e7172578d8f7c" }, "downloads": -1, "filename": "codewatch-0.1.0.tar.gz", "has_sig": false, "md5_digest": "611e536fbec3da095eefee7506ee50d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 21603, "upload_time": "2019-02-14T05:43:57", "url": "https://files.pythonhosted.org/packages/01/51/41777eb870b6edca0690970fe9ff4ce11b83721da420e7283c225181b919/codewatch-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8299ac43ee815556e5ea77c2770bfc4e", "sha256": "623489ae18a33d53b5f43995daa056f423fbaa12364751374c362881c8f815a2" }, "downloads": -1, "filename": "codewatch-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8299ac43ee815556e5ea77c2770bfc4e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 31322, "upload_time": "2019-02-14T05:43:56", "url": "https://files.pythonhosted.org/packages/30/22/001be01109df54844542d32d11fcdb2e1311c67523ac101b45139974e2b5/codewatch-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "611e536fbec3da095eefee7506ee50d9", "sha256": "60141cf698a91e283955d3722221a59c82cbc3382487cc811e2e7172578d8f7c" }, "downloads": -1, "filename": "codewatch-0.1.0.tar.gz", "has_sig": false, "md5_digest": "611e536fbec3da095eefee7506ee50d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <3.8", "size": 21603, "upload_time": "2019-02-14T05:43:57", "url": "https://files.pythonhosted.org/packages/01/51/41777eb870b6edca0690970fe9ff4ce11b83721da420e7283c225181b919/codewatch-0.1.0.tar.gz" } ] }