{ "info": { "author": "Quentin CAUDRON", "author_email": "quentincaudron@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "[![Build Status](https://travis-ci.org/QCaudron/pawprint.svg?branch=master)](https://travis-ci.org/QCaudron/pawprint) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/QCaudron/pawprint/master/LICENSE)\n\n\n\n\n# pawprint\n\n**pawprint** allows you to quickly track events occurring in your application,\nand analyse them using pandas.\nFor the full API, see the [documentation](http://pawprint.readthedocs.io). *These are a work\nin progress*.\n\n\n## Write data flexibly\n\n```python\ntracker.write(event=\"server_booted\")\ntracker.write(event=\"logged_in\", user_id=\"alice\")\ntracker.write(event=\"navigation\", user_id=\"bob\", metadata={\"to\": \"dashboard\"})\ntracker.write(event=\"invoice\", metadata={\"details\": {\"amount\": 1214, \"from\": \"Ardbeg\"}})\ntracker.write(event=\"invoice\", metadata={\"details\": {\"amount\": 123, \"from\": \"Lagavulin\"}})\n```\n\n## Query data intuitively\n\n### Read the full dataset.\n\n```python\ntracker.read()\n```\n```\n id timestamp user_id event metadata \n0 1 2017-03-31 15:51:50.590018 None server_booted None\n1 2 2017-03-31 15:51:50.599256 alice logged_in None\n2 3 2017-03-31 15:51:50.610069 bob navigation {'to': 'dashboard'}\n3 4 2017-03-31 15:51:50.620759 None invoice {'details': {'from': 'Ardbeg', 'amount': 1214}}\n4 5 2017-03-31 15:51:50.629837 None invoice {'details': {'from': 'Lagavulin', 'amount': 123}}\n```\n\n### List only events where the user was Alice.\n\n```python\ntracker.read(\"event\", user_id=\"alice\")\n```\n```\n event\n0 logged_in\n```\n\n### Query unstructured data to find out who invoiced you and when.\n\n```python\ntracker.read(\"timestamp\", \"metadata__details__from\", event=\"invoice\")\n```\n```\n timestamp json_field\n0 2017-03-31 15:51:50.620759 Ardbeg\n1 2017-03-31 15:51:50.629837 Lagavulin\n```\n\n### Perform aggregates over time.\n\n```python\ntracker.count(\"logged_in\", resolution=\"week\")\n```\n```\n datetime count\n0 2017-03-27 1\n```\n\n### Aggregate JSON subfields.\n\n```python\ntracker.sum(event=\"invoice\", field=\"metadata__details__amount\", resolution=\"year\")\n```\n```\n datetime sum\n0 2017-01-01 1337.0\n```\n\n## Documentation\n\nFor installation, dependencies, API details, and a quickstart, please [RTFM](http://pawprint.readthedocs.io) !\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": "http://github.com/qcaudron/pawprint", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pawprint", "package_url": "https://pypi.org/project/pawprint/", "platform": "", "project_url": "https://pypi.org/project/pawprint/", "project_urls": { "Homepage": "http://github.com/qcaudron/pawprint" }, "release_url": "https://pypi.org/project/pawprint/2.1.1/", "requires_dist": [ "pandas (>=0.19)", "sqlalchemy (>=1.0)", "psycopg2 (>=2.4)" ], "requires_python": ">=3.5", "summary": "A flexible event tracker for rapid analysis.", "version": "2.1.1", "yanked": false, "yanked_reason": null }, "last_serial": 6497627, "releases": { "1.1.2": [ { "comment_text": "", "digests": { "md5": "ea4b3e9681efce9926c386236e05bdfd", "sha256": "cfe80b8c27e8b97ac6930d30e08c96d8489b1cc7dff4e2f7e308073d421e7d72" }, "downloads": -1, "filename": "pawprint-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ea4b3e9681efce9926c386236e05bdfd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8390, "upload_time": "2019-10-30T20:48:10", "upload_time_iso_8601": "2019-10-30T20:48:10.360865Z", "url": "https://files.pythonhosted.org/packages/52/b4/7c7fda15050488e253733b7a29791131a6c370343219e26d4c7425ca466c/pawprint-1.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "145871c6b6048d334312be2068730820", "sha256": "2b02ed849db4d58c37c7dbc2beefeb2cab88f9a4943df4a1ecc629fad3f85b79" }, "downloads": -1, "filename": "pawprint-1.1.2.tar.gz", "has_sig": false, "md5_digest": "145871c6b6048d334312be2068730820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7565, "upload_time": "2019-10-30T20:48:12", "upload_time_iso_8601": "2019-10-30T20:48:12.618692Z", "url": "https://files.pythonhosted.org/packages/4b/42/62a0567c421b87dcd31c71f3391d01e68499c770a974e04ce0ef35fdf7e5/pawprint-1.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "456485d6b0fb2741869d3bf5f0e7ea2e", "sha256": "739c9a372246b9105ac2444c774723a298dcddf98ecc693a3347c39f27f0cd53" }, "downloads": -1, "filename": "pawprint-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "456485d6b0fb2741869d3bf5f0e7ea2e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9778, "upload_time": "2019-12-17T23:16:05", "upload_time_iso_8601": "2019-12-17T23:16:05.647794Z", "url": "https://files.pythonhosted.org/packages/6f/bd/1bd0635b54a10c806d01fdf4a7c4a76280ddf7311c4c31d3a59388114213/pawprint-1.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "99d2c1c5ad8368eddf992c9a29d1b5b3", "sha256": "f7d77bf71f1fbd712ece26ece2e24e3a8d021af5cc6da3f399b05f8ebaac29ba" }, "downloads": -1, "filename": "pawprint-1.2.0.tar.gz", "has_sig": false, "md5_digest": "99d2c1c5ad8368eddf992c9a29d1b5b3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8661, "upload_time": "2019-12-17T23:16:07", "upload_time_iso_8601": "2019-12-17T23:16:07.498646Z", "url": "https://files.pythonhosted.org/packages/8b/a4/5e4cb7f324593778cc061a46764e029ec6b9d85fc521b0966087dc18e633/pawprint-1.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "83cebcf6eb21f7dc67d7e63cfcbfe334", "sha256": "9fe7b8ab436fd4815c534f7d730c2689d8d89b8bd9fb7c5c0d69041085ace5cc" }, "downloads": -1, "filename": "pawprint-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "83cebcf6eb21f7dc67d7e63cfcbfe334", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10871, "upload_time": "2020-01-16T22:12:15", "upload_time_iso_8601": "2020-01-16T22:12:15.188518Z", "url": "https://files.pythonhosted.org/packages/b8/36/51f97ab7baa64f8e51630948b05ea643738ad8a27820f4764af84b994b89/pawprint-2.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "aab9cb7239ccbfeee149fab2bf97fb18", "sha256": "580505db617e76f36756b791ea716888279faee9931862d37832ff431b22be20" }, "downloads": -1, "filename": "pawprint-2.0.0.tar.gz", "has_sig": false, "md5_digest": "aab9cb7239ccbfeee149fab2bf97fb18", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10122, "upload_time": "2020-01-16T22:12:17", "upload_time_iso_8601": "2020-01-16T22:12:17.019555Z", "url": "https://files.pythonhosted.org/packages/08/e5/788bc5fb0554394b0dedf1943b5c5ce332d31144471aece2cc1d9449f355/pawprint-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "9f9ed7bf8f9d652a3cd77acbc26b4e18", "sha256": "8b6cb189fd0f267b14d17530ae4821f4b0c711d7cd0528b46e1ccb96d83033ac" }, "downloads": -1, "filename": "pawprint-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9f9ed7bf8f9d652a3cd77acbc26b4e18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12108, "upload_time": "2020-01-17T21:34:12", "upload_time_iso_8601": "2020-01-17T21:34:12.958434Z", "url": "https://files.pythonhosted.org/packages/30/a4/6aa38c9e16de03199cc97f1dbaa3e4012ab2d70017d68b80403170010fdd/pawprint-2.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ac03e209196fe8eefa384fd2151d3fba", "sha256": "116383d3141e2fb24794f75507bce3585916d5dd1f3a45f7854de09a711e32ff" }, "downloads": -1, "filename": "pawprint-2.1.0.tar.gz", "has_sig": false, "md5_digest": "ac03e209196fe8eefa384fd2151d3fba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11241, "upload_time": "2020-01-17T21:34:14", "upload_time_iso_8601": "2020-01-17T21:34:14.415642Z", "url": "https://files.pythonhosted.org/packages/16/12/9b92d9ac2a09d46c719874b582b9061466fd62bd07f48209ea969a31311f/pawprint-2.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "74a2635b72a7d5aaa66dce90ed5426e1", "sha256": "3dacd3ed69bc49d9427ea53bf948dfd99212216e1ef982473686952b4ff9cde3" }, "downloads": -1, "filename": "pawprint-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "74a2635b72a7d5aaa66dce90ed5426e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12348, "upload_time": "2020-01-22T00:36:43", "upload_time_iso_8601": "2020-01-22T00:36:43.803626Z", "url": "https://files.pythonhosted.org/packages/65/ee/467789a965b18235510f7e3a5f2e0f0a7d9e3873449b3e2122dedb4a5888/pawprint-2.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a1d3a5d6ff35b6fb4fcca49e28c9c31", "sha256": "a1b78333f7c3929382ee878e5ad3946aa9628c6bc9a17f55be07ce64e4f6c89c" }, "downloads": -1, "filename": "pawprint-2.1.1.tar.gz", "has_sig": false, "md5_digest": "2a1d3a5d6ff35b6fb4fcca49e28c9c31", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11492, "upload_time": "2020-01-22T00:36:45", "upload_time_iso_8601": "2020-01-22T00:36:45.991189Z", "url": "https://files.pythonhosted.org/packages/e2/71/d85dd14f161592b6e41b5f35581828852fdbd4f79a18f752e9999d228b58/pawprint-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "74a2635b72a7d5aaa66dce90ed5426e1", "sha256": "3dacd3ed69bc49d9427ea53bf948dfd99212216e1ef982473686952b4ff9cde3" }, "downloads": -1, "filename": "pawprint-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "74a2635b72a7d5aaa66dce90ed5426e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12348, "upload_time": "2020-01-22T00:36:43", "upload_time_iso_8601": "2020-01-22T00:36:43.803626Z", "url": "https://files.pythonhosted.org/packages/65/ee/467789a965b18235510f7e3a5f2e0f0a7d9e3873449b3e2122dedb4a5888/pawprint-2.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a1d3a5d6ff35b6fb4fcca49e28c9c31", "sha256": "a1b78333f7c3929382ee878e5ad3946aa9628c6bc9a17f55be07ce64e4f6c89c" }, "downloads": -1, "filename": "pawprint-2.1.1.tar.gz", "has_sig": false, "md5_digest": "2a1d3a5d6ff35b6fb4fcca49e28c9c31", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11492, "upload_time": "2020-01-22T00:36:45", "upload_time_iso_8601": "2020-01-22T00:36:45.991189Z", "url": "https://files.pythonhosted.org/packages/e2/71/d85dd14f161592b6e41b5f35581828852fdbd4f79a18f752e9999d228b58/pawprint-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }