{ "info": { "author": "productml.com", "author_email": "info@productml.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "![Blurr](docs/images/logo.png)\n\n[![CircleCI](https://circleci.com/gh/productml/blurr/tree/master.svg?style=svg)](https://circleci.com/gh/productml/blurr/tree/master)\n[![Documentation Status](https://readthedocs.org/projects/productml-blurr/badge/?version=latest)](http://productml-blurr.readthedocs.io/en/latest/?badge=latest)\n[![Coverage Status](https://coveralls.io/repos/github/productml/blurr/badge.svg?branch=master)](https://coveralls.io/github/productml/blurr?branch=master)\n[![PyPI version](https://badge.fury.io/py/blurr.svg)](https://badge.fury.io/py/blurr)\n\n# Table of contents\n\n- [What is Blurr](#what-is-blurr)\n- [Is Blurr for you?](#is-blurr-for-you)\n- [Playground](#playground)\n- [Tutorial & Docs](#tutorial-and-docs)\n- [Contribute](#contribute-to-blurr)\n- [Data Science 'Joel Test'](#data-science-joel-test)\n- [Roadmap](#roadmap)\n\n# What is Blurr?\n\nBlurr transforms structured, streaming `raw data` into `features` for model training and prediction using a `high-level expressive YAML-based language` called the Blurr Transform Spec (BTS). The BTS merges the schema and computation model for data processing.\n\nThe BTS is a __data transform definition__ for structured data. The BTS encapsulates the *business logic* of data transforms and Blurr orchestrates the *execution* of data transforms. Blurr is runner-agnostic, so BTSs can be run by event processors such as Spark, Spark Streaming or Flink.\n\n# Is Blurr for you?\n\nYes, if: you are well on your way on the ML 'curve of enlightenment', and are thinking about how to do online scoring\n\n![Curve](docs/images/curve.png)\n\n# Playground\n\n[Launch playground](https://colab.research.google.com/drive/1XU8G7as4cuPYqcoV5rJAd8yMuXUPXU8Q)\n\n# Tutorial and Docs\n\n>Coming up with features is difficult, time-consuming, requires expert knowledge. 'Applied machine learning' is basically feature engineering --- Andrew Ng\n\n[Read the docs](http://productml-blurr.readthedocs.io/en/latest/)\n\n[Streaming BTS Tutorial](http://productml-blurr.readthedocs.io/en/latest/Streaming%20BTS%20Tutorial/) |\n[Window BTS Tutorial](http://productml-blurr.readthedocs.io/en/latest/Window%20BTS%20Tutorial/)\n\nPreparing data for specific use cases using Blurr:\n\n* [Dynamic in-game offers (Offer AI)](docs/examples/offer-ai/offer-ai-walkthrough.md)\n* [Frequently Bought Together](docs/examples/frequently-bought-together/fbt-walkthrough.md)\n\n# Contribute to Blurr\n\nWelcome to the Blurr community! We are so glad that you share our passion for building MLOps!\n\nPlease create a [new issue](https://github.com/productml/blurr/issues/new) to begin a discussion. Alternatively, feel free to pick up an existing issue!\n\nPlease sign the [Contributor License Agreement](https://docs.google.com/forms/d/e/1FAIpQLSeUP5RFuXH0Kbi4CnV6V3IZ-xyJmd3KQP_2Ij-pTvN-_h7wUg/viewform) before raising a pull request.\n\n# Data Science 'Joel Test'\n\nInspired by the (old school) [Joel Test](https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/) to rate software teams, here's our version for data science teams. What's your score?\n\n1. Data pipelines are versioned and reproducible\n2. Pipelines (re)build in one step\n3. Deploying to production needs minimal engineering help\n4. Successful ML is a long game. You play it like it is\n5. Kaizen. Experimentation and iterations are a way of life\n\n# Roadmap\n\nBlurr is currently in Developer Preview. __Stay in touch!__: Star this project or email hello@blurr.ai\n\n- ~~Local transformations only~~\n- ~~Support for custom functions and other python libraries in the BTS~~\n- ~~Spark runner~~\n- S3 support for data sink\n- DynamoDB as an Intermediate Store\n- Features server", "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/productml/blurr", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "blurr", "package_url": "https://pypi.org/project/blurr/", "platform": "", "project_url": "https://pypi.org/project/blurr/", "project_urls": { "Homepage": "https://github.com/productml/blurr" }, "release_url": "https://pypi.org/project/blurr/0.4.1/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Data aggregation pipeline for running real-time predictive models", "version": "0.4.1" }, "last_serial": 3979471, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "fddecf528e7e631e6fbebc23592bdf8f", "sha256": "611e394392398ad6d2cd52104fb1d72641a7513176910abe7cdc3630b098699f" }, "downloads": -1, "filename": "blurr-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fddecf528e7e631e6fbebc23592bdf8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 35712, "upload_time": "2018-04-03T20:53:29", "url": "https://files.pythonhosted.org/packages/1a/35/949de2e639301f784e5589009f4d03745ea556644c9d17c0706e215353ae/blurr-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7471fdb11c247e32bc7003989e93566b", "sha256": "1b46d5b21df7bb7bae50a1c028b402c953e90855057d6ed87753e9f900eaf47d" }, "downloads": -1, "filename": "blurr-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7471fdb11c247e32bc7003989e93566b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22573, "upload_time": "2018-04-03T20:53:30", "url": "https://files.pythonhosted.org/packages/45/c7/e48036780e17fa91d493a93f703205f6e8584dca1320471f8d0842861307/blurr-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "70ade3f1e6775ce0cc9188633dcb15a0", "sha256": "eecfd0253f6013d1f877e854eed775f755d210e5fe26f89f45d95d7c0bb8e2a2" }, "downloads": -1, "filename": "blurr-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "70ade3f1e6775ce0cc9188633dcb15a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 38661, "upload_time": "2018-04-06T19:52:19", "url": "https://files.pythonhosted.org/packages/18/6b/4ad19ed28bc0afd01ca7c0de2538afd0201caccf8be0ea3712f12cab1c96/blurr-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec419da14570f78bda5f31cece31fe4d", "sha256": "6222e872c410b961359989247167a1c5f59051eae9065b5f98892ff2be3728bb" }, "downloads": -1, "filename": "blurr-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ec419da14570f78bda5f31cece31fe4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26607, "upload_time": "2018-04-06T19:52:16", "url": "https://files.pythonhosted.org/packages/aa/8e/f70f682caa6ded0af97f96d6e21d636e021bde112a2584a3d9dfdc2e8784/blurr-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "902886b4e6b2c1b8b2b65326af5fe6fa", "sha256": "061602223642f399b3ae6ae82e37bf8931596e4e8ced388f2f4adb8e46da2ab6" }, "downloads": -1, "filename": "blurr-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "902886b4e6b2c1b8b2b65326af5fe6fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 38876, "upload_time": "2018-04-06T23:13:31", "url": "https://files.pythonhosted.org/packages/27/1b/6636da4fbe60cb57aeabf4b5d198f670a89e8e94e3943286eef19c816c6f/blurr-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c86425b0b9b7a2a02bab7dd0c1c435e", "sha256": "f60dc3338b65cd5675c192a2529b27c1c097eebc33d0adfc9b77f6ddff533ba8" }, "downloads": -1, "filename": "blurr-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4c86425b0b9b7a2a02bab7dd0c1c435e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27464, "upload_time": "2018-04-06T23:13:29", "url": "https://files.pythonhosted.org/packages/17/2f/b8f2b1d0cd8ac7f3ae943c792be338f1d74214659e2bd269eb381adce9dc/blurr-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "59585ed176664b86acecf83b587f2237", "sha256": "5af25fc9218418812e9b1397217cc4a4610ca2c0e9f9f540536c177d0671aea3" }, "downloads": -1, "filename": "blurr-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "59585ed176664b86acecf83b587f2237", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 44118, "upload_time": "2018-04-23T22:42:42", "url": "https://files.pythonhosted.org/packages/32/19/e1a0fc57307bac9f55fde16a661e782c382ccbf7625a971756fa6d92d7cb/blurr-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4bc2bc4efd7965b2a882d1ff316d84fb", "sha256": "7288977ff00ae71910ffa2e4a5c63aeec3edcfd312c021aa549790a8a257cbfe" }, "downloads": -1, "filename": "blurr-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4bc2bc4efd7965b2a882d1ff316d84fb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 28851, "upload_time": "2018-04-23T22:42:23", "url": "https://files.pythonhosted.org/packages/7f/17/a49a0746b2462790e899d9977af8a68c6eca6d251bf3af6085d1479a5323/blurr-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e5d168335e48f311aeeb2447ba7dcad1", "sha256": "b710a9d964f24e7258be66986f57090e90e9be3e56ec39ba597af00339ec0265" }, "downloads": -1, "filename": "blurr-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e5d168335e48f311aeeb2447ba7dcad1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46655, "upload_time": "2018-05-01T14:17:15", "url": "https://files.pythonhosted.org/packages/36/75/2f7623541f9f48ec35f91f6eef9b2046aec37ca121b99c41a6a5357561a4/blurr-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fa96dc24850c64b79a6412b9464bf62", "sha256": "13f2015ea3a70574ecb0853660877e97f43de09b6511f4df12c82b4822e3e6b2" }, "downloads": -1, "filename": "blurr-0.3.0.tar.gz", "has_sig": false, "md5_digest": "6fa96dc24850c64b79a6412b9464bf62", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 32868, "upload_time": "2018-05-01T14:17:12", "url": "https://files.pythonhosted.org/packages/8a/64/65865801136d9917424607621cbe21c5778adcffc96e79f38abdb8c10165/blurr-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "8253c0f914ee59dbcc00aa384802e6fb", "sha256": "492ec4108ca5dec33381f0a201a6f554ca0226a02ba705d668d47a1727a9e638" }, "downloads": -1, "filename": "blurr-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8253c0f914ee59dbcc00aa384802e6fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 52592, "upload_time": "2018-06-03T23:10:03", "url": "https://files.pythonhosted.org/packages/fb/d2/027849599a72b5918ecb5ae11da88fe1fbb994464259899a18cc9aa05c18/blurr-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a5ac3581dcab9cbda40b06885436281", "sha256": "88afc2b3842ff61aaf7395704e39430ac13cea916be58af09f73c55ac042305f" }, "downloads": -1, "filename": "blurr-0.4.0.tar.gz", "has_sig": false, "md5_digest": "2a5ac3581dcab9cbda40b06885436281", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 36454, "upload_time": "2018-06-03T23:10:00", "url": "https://files.pythonhosted.org/packages/d5/b3/3165879b4c3bb8c8b1022aa483528253c509395b40fa0033af88368f5f44/blurr-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "3e12007c8e8eb29f583840493b90d33f", "sha256": "865db7d29efcdd8b53358eb14861da1d75f19b18d51bf3356c0a76f2cab6c5ce" }, "downloads": -1, "filename": "blurr-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3e12007c8e8eb29f583840493b90d33f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 52899, "upload_time": "2018-06-20T00:07:33", "url": "https://files.pythonhosted.org/packages/9d/ec/ffa763925c3f80ca218d68579d378971677f1b02000746dea9ed7d800127/blurr-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc904eeadbb712c0830eed24c59c59a5", "sha256": "a685c257710bfa014942c83df9f939f93e138f6462a34fa8a0e3bfe115c653ae" }, "downloads": -1, "filename": "blurr-0.4.1.tar.gz", "has_sig": false, "md5_digest": "cc904eeadbb712c0830eed24c59c59a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 38271, "upload_time": "2018-06-20T00:07:31", "url": "https://files.pythonhosted.org/packages/87/01/ab3e479bb23b1dbfea441f0b425341a8dafcf6ed45f4f2f86eab666e21da/blurr-0.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e12007c8e8eb29f583840493b90d33f", "sha256": "865db7d29efcdd8b53358eb14861da1d75f19b18d51bf3356c0a76f2cab6c5ce" }, "downloads": -1, "filename": "blurr-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3e12007c8e8eb29f583840493b90d33f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 52899, "upload_time": "2018-06-20T00:07:33", "url": "https://files.pythonhosted.org/packages/9d/ec/ffa763925c3f80ca218d68579d378971677f1b02000746dea9ed7d800127/blurr-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc904eeadbb712c0830eed24c59c59a5", "sha256": "a685c257710bfa014942c83df9f939f93e138f6462a34fa8a0e3bfe115c653ae" }, "downloads": -1, "filename": "blurr-0.4.1.tar.gz", "has_sig": false, "md5_digest": "cc904eeadbb712c0830eed24c59c59a5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 38271, "upload_time": "2018-06-20T00:07:31", "url": "https://files.pythonhosted.org/packages/87/01/ab3e479bb23b1dbfea441f0b425341a8dafcf6ed45f4f2f86eab666e21da/blurr-0.4.1.tar.gz" } ] }