{ "info": { "author": "Remi Rampin", "author_email": "remirampin@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Topic :: Internet", "Topic :: Internet :: Log Analysis", "Topic :: Software Development", "Topic :: System :: Logging", "Topic :: Utilities" ], "description": "Usage statistics collector\n==========================\n\n.. image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg\n :target: https://saythanks.io/to/remram44\n\nThis package is meant to easily get usage statistics from the users of your\nprogram.\n\nStatistics will be collected but won't be uploaded until the user opts in. A\nmessage will be printed on stderr asking the user to explicitly opt in or opt\nout.\n\nUsage\n-----\n\nYou can easily collect information from your program by adding usagestats to\nyour project's requirements and using the library. Here is an example::\n\n import usagestats\n import sys\n\n\n optin_prompt = usagestats.Prompt(enable='cool_program --enable-stats',\n disable='cool_program --disable-stats')\n\n # Location where to store stats\n # Also allocates a unique ID for the user\n # The version is important, since the information you log (or the format)\n # might change in later versions of your program\n stats = usagestats.Stats('~/.myprog/usage_stats',\n optin_prompt,\n 'https://usagestats.example.org/',\n unique_user_id=True,\n version='0.1')\n\n\n def main():\n if len(sys.argv) < 2:\n pass\n elif sys.argv.get(1) == '--enable-stats':\n stats.enable_reporting()\n sys.exit(0)\n elif sys.argv.get(1) == '--disable-stats':\n stats.disable_reporting()\n sys.exit(0)\n\n if sys.version_info < (3,):\n # Stores some info, will be reported when submit() is called\n stats.note({'mode': 'compatibility'})\n\n # Report things\n stats.submit(\n # Dictionary containing the info\n {'what': 'Ran the program'},\n # Flags making usagestats insert more details\n usagestats.OPERATING_SYSTEM, # Operating system/distribution\n usagestats.PYTHON_VERSION, # Python version info\n usagestats.SESSION_TIME, # Time since Stats object was created\n )\n\n\n if __name__ == '__main__':\n main()\n\n`submit()` will, by default, store the info in the specified directory. Nothing\nwill be reported until the user opts in; a message will simply be printed to\nstderr::\n\n Uploading usage statistics is currently DISABLED\n Please help us by providing anonymous usage statistics; you can enable this\n by running:\n cool_program --enable-stats\n If you do not want to see this message again, you can run:\n cool_program --disable-stats\n Nothing will be uploaded before you opt in.\n\nServer\n------\n\nTo collect the reports, any server will do; the reports are uploaded via POST\nas a LF-separated list of ``key:value`` pairs. A simple script for mod_wsgi is\nincluded; it writes each report to a separate file. Writing your own\nimplementation in your language of choice (PHP, Java) with your own backend\nshould be fairly straightforward.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/remram44/usagestats", "keywords": "server,log,logging,usage,stats,statistics,collection,report", "license": "Apache License 2.0", "maintainer": "Remi Rampin", "maintainer_email": "remirampin@gmail.com", "name": "usagestats", "package_url": "https://pypi.org/project/usagestats/", "platform": "", "project_url": "https://pypi.org/project/usagestats/", "project_urls": { "Homepage": "https://github.com/remram44/usagestats" }, "release_url": "https://pypi.org/project/usagestats/0.8/", "requires_dist": null, "requires_python": "", "summary": "Anonymous usage statistics collector", "version": "0.8" }, "last_serial": 5978672, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "01c797ad52350db85ebd855ad5d1a7fe", "sha256": "c21a5baf91d9ce88e8c47242d836f341cac8175d7f98ccf3f7154df2f261032c" }, "downloads": -1, "filename": "usagestats-0.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "01c797ad52350db85ebd855ad5d1a7fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6739, "upload_time": "2014-10-28T19:39:59", "url": "https://files.pythonhosted.org/packages/9b/c8/dad6a96e4003fbadebb2e0c9f854e10e88300e91164cbcb2c78ac2887296/usagestats-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee48aa6735ffee95cf5c03344fdee5c3", "sha256": "021f42aa327575ff699a0d2aa31c5bfcdc1cd05610ee71beb7988fbb5ff95127" }, "downloads": -1, "filename": "usagestats-0.1.tar.gz", "has_sig": true, "md5_digest": "ee48aa6735ffee95cf5c03344fdee5c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8441, "upload_time": "2014-10-28T19:39:50", "url": "https://files.pythonhosted.org/packages/4b/44/744597916835bb1f228b89f9f213a2edc4aeb62fa1fc3eff7f994c38b74c/usagestats-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "957691ab340ef0de901dca2354c76df2", "sha256": "9bff4a789a68146c42af8dfaf5d3353b41826f4d57048c804223c1d0f12e791d" }, "downloads": -1, "filename": "usagestats-0.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "957691ab340ef0de901dca2354c76df2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6860, "upload_time": "2014-10-29T01:47:35", "url": "https://files.pythonhosted.org/packages/d2/c4/b98c28e37e2d0bb7299d2fe096fa6d6da58e1c4b8acd3de1c2a203cd4c32/usagestats-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77b8844fd4310b1742e70d7d7486c5d0", "sha256": "b0d179e54d984424e5ea4ef020b49575514aa1677ab42bcd0fb199e84b07d9d7" }, "downloads": -1, "filename": "usagestats-0.2.tar.gz", "has_sig": true, "md5_digest": "77b8844fd4310b1742e70d7d7486c5d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8418, "upload_time": "2014-10-29T01:47:26", "url": "https://files.pythonhosted.org/packages/bb/d8/71757eb1d9ce8876dfd7a2e8d0b20dd4c0f947bcd8336f325388d0b5951d/usagestats-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "5f50a54b4f4e4ce0ae8266090a4af20e", "sha256": "76cd932b0072be8ef354d372fa0d228c552fddcfb9992953b97e85af422aaa8b" }, "downloads": -1, "filename": "usagestats-0.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5f50a54b4f4e4ce0ae8266090a4af20e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7298, "upload_time": "2014-12-19T00:41:46", "url": "https://files.pythonhosted.org/packages/99/cd/6279bbe860ce0d23769103c30d6fcefcaed6cdc5d900b6a4753e808d6b32/usagestats-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4c49554262c29e076e997d57302051e", "sha256": "36c5a05ab819719e5f13615698425c648a20369bf92ef31bd1c98cd45dd9216e" }, "downloads": -1, "filename": "usagestats-0.3.tar.gz", "has_sig": true, "md5_digest": "d4c49554262c29e076e997d57302051e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8879, "upload_time": "2014-12-19T00:41:56", "url": "https://files.pythonhosted.org/packages/20/6c/76db6682bf985f2841c08ff67d110e6694b62a2c8bb7c9de0b3a7ec81767/usagestats-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "50827a1acea716a0175ddf3b691b26f8", "sha256": "7ca30634ea925516e2d847f43dfa1fef8b66aa806b203642f2a02926c431bdbe" }, "downloads": -1, "filename": "usagestats-0.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "50827a1acea716a0175ddf3b691b26f8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7315, "upload_time": "2015-07-07T20:58:32", "url": "https://files.pythonhosted.org/packages/16/e6/5d3fd88c585aeb8beabad3bb5f0018382ad8acd49b6cc8b07d0936ec5f09/usagestats-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7927a6ffc5f0c2dc66ddb7b19d706067", "sha256": "0c3420a327838d8650c3456b3bfcbe7d58b8de74bb413f76802cd63bb9e295b4" }, "downloads": -1, "filename": "usagestats-0.4.tar.gz", "has_sig": true, "md5_digest": "7927a6ffc5f0c2dc66ddb7b19d706067", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9334, "upload_time": "2015-07-07T20:58:07", "url": "https://files.pythonhosted.org/packages/83/f0/3e571b03ee6f48d891090063158d593e3efc6ae6073ff4f4ce8dab74e304/usagestats-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "8aca4a69292f942c8608d471734b3f94", "sha256": "26e276157f02317636e88524ad16971678a28f3ee02ae1f54197aef181fdc6fa" }, "downloads": -1, "filename": "usagestats-0.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "8aca4a69292f942c8608d471734b3f94", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8547, "upload_time": "2016-03-05T00:04:34", "url": "https://files.pythonhosted.org/packages/36/41/897cdb415735b9f2194c7d1ac70e32ff5043179ee9ee039d69d1c81eebd5/usagestats-0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5719ff11918df4f00baf0fc63f601e3c", "sha256": "383b5db49381e7ae937a18bbb6c4975c23d2190bf55222cab4b94370c45ab775" }, "downloads": -1, "filename": "usagestats-0.5.tar.gz", "has_sig": true, "md5_digest": "5719ff11918df4f00baf0fc63f601e3c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13699, "upload_time": "2016-03-05T00:04:19", "url": "https://files.pythonhosted.org/packages/5f/88/958b2db4e45e2b3e719b8b1676aaf018aac33dbc37e28a90310ad7c976f8/usagestats-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "9269704eb48d2648334a4f9a6ad1825c", "sha256": "40cf5b6d46c4f8171080f8269ef8e2fb7955e638a4c3fc5b12ad290989abef2d" }, "downloads": -1, "filename": "usagestats-0.6-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9269704eb48d2648334a4f9a6ad1825c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8568, "upload_time": "2017-04-16T01:32:16", "url": "https://files.pythonhosted.org/packages/e1/d1/3365b48b74bf173ef08d7b83958fc2a3b9b603a76b0c9e97ba54be5029b9/usagestats-0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a90dc4c0d3dd916d740154a00ccec3ca", "sha256": "96b9c40e4065281f2c5b18da1975263acf86cc7de37d4dfb275a6ce929ddd408" }, "downloads": -1, "filename": "usagestats-0.6.tar.gz", "has_sig": true, "md5_digest": "a90dc4c0d3dd916d740154a00ccec3ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14235, "upload_time": "2017-04-16T01:32:00", "url": "https://files.pythonhosted.org/packages/80/35/fc8345e991f9d45c51a17542c490e414bd2e0cbe34efbae22bb07103a3e2/usagestats-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "a0077268e87b03367821ee9223ad1e31", "sha256": "e375768b4b18687f06f9b6dc2b357b12cd8adf241cfc053772ed3a671dcc603d" }, "downloads": -1, "filename": "usagestats-0.7-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "a0077268e87b03367821ee9223ad1e31", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8614, "upload_time": "2017-05-31T14:47:06", "url": "https://files.pythonhosted.org/packages/82/85/1093d0e40ae247808079f13fd5d3df2316706f7d35245d8d8978bf35f28b/usagestats-0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e30edc03a08ccea16f4824d9d7dd9eef", "sha256": "39cf0736dfec40c85416270fc43382bdef7af18da85e1e243075f145fe2b8aef" }, "downloads": -1, "filename": "usagestats-0.7.tar.gz", "has_sig": true, "md5_digest": "e30edc03a08ccea16f4824d9d7dd9eef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13784, "upload_time": "2017-05-31T14:47:25", "url": "https://files.pythonhosted.org/packages/cd/a4/fc67c6152c07d68510f8eaa6d5ed2c37b4f8e1c73c28bf8cb8e999b75979/usagestats-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "45664e3dcaae4a11fbd85c2c0b9f435f", "sha256": "69fe69a8dc8318cb1d016fa100752b1edbb63b03762877462e6506a077f7ce4c" }, "downloads": -1, "filename": "usagestats-0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45664e3dcaae4a11fbd85c2c0b9f435f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8794, "upload_time": "2019-10-15T18:09:58", "url": "https://files.pythonhosted.org/packages/25/51/f1a1e1dbfa0f556186ec6507cad03ef6c42831de8ef13cf6fd9f57aaa621/usagestats-0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9e88b325ade9521c14a32b0869efa1d", "sha256": "20da296e38d5bdae46f119ea7e5703757ac97b9ebf2e6ad5b7a3676146af26f8" }, "downloads": -1, "filename": "usagestats-0.8.tar.gz", "has_sig": false, "md5_digest": "c9e88b325ade9521c14a32b0869efa1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14805, "upload_time": "2019-10-15T18:09:36", "url": "https://files.pythonhosted.org/packages/b0/ea/fb448923d908bf8a632d56103f213fb06a32a2ae6cf4b3ecbb2a606d3cde/usagestats-0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "45664e3dcaae4a11fbd85c2c0b9f435f", "sha256": "69fe69a8dc8318cb1d016fa100752b1edbb63b03762877462e6506a077f7ce4c" }, "downloads": -1, "filename": "usagestats-0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45664e3dcaae4a11fbd85c2c0b9f435f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8794, "upload_time": "2019-10-15T18:09:58", "url": "https://files.pythonhosted.org/packages/25/51/f1a1e1dbfa0f556186ec6507cad03ef6c42831de8ef13cf6fd9f57aaa621/usagestats-0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9e88b325ade9521c14a32b0869efa1d", "sha256": "20da296e38d5bdae46f119ea7e5703757ac97b9ebf2e6ad5b7a3676146af26f8" }, "downloads": -1, "filename": "usagestats-0.8.tar.gz", "has_sig": false, "md5_digest": "c9e88b325ade9521c14a32b0869efa1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14805, "upload_time": "2019-10-15T18:09:36", "url": "https://files.pythonhosted.org/packages/b0/ea/fb448923d908bf8a632d56103f213fb06a32a2ae6cf4b3ecbb2a606d3cde/usagestats-0.8.tar.gz" } ] }