{ "info": { "author": "BusinessOptics", "author_email": "alex.mojaki@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5" ], "description": "BusinessOptics Client\n=====================\n\nEasy access to the BusinessOptics API, based on the python requests library.\n\nFor example:\n\n```python\nfrom businessoptics import Client\n\nprint Client(auth=('user@example.com', 'apikey')).workspace(123).query('ideaname').tuples()\n```\n\nInstallation\n------------\n```bash\npip install businessoptics\n```\n\nAuthentication\n--------------\n\nConstruct a new Client. \n\nAuthentication details can either be passed in directly:\n```python\nclient = Client(auth=('user@example.com', 'apikey'))\n```\n\nor be extracted from environment variables:\n\n* BUSINESSOPTICS_EMAIL\n* BUSINESSOPTICS_APIKEY\n\nso you can go \n\n```python\nclient = Client()\n```\n\nor from a `~/.businessoptics_client.config` JSON file of the form\n\n```json\n{ \n \"user@example.com\": \"\",\n \"other@example.com\": \"\" \n}\n```\n\nso you can easily switch between multiple users and create a client as below\n\n```python\nclient = Client(auth=\"user@example.com\")\n```\n\nUsage\n-----\n\nThe client uses logging to show what it's doing, so make sure you have logging configured. A quick way to do this is as follows:\n\n```python\nfrom businessoptics import setup_quick_console_logging\n\nsetup_quick_console_logging()\n```\n\n### Run a query and download tuples\n\n```python\nclient = Client()\nworkspace = client.workspace(123)\n\n# For a single idea:\ntuples = workspace.query('idea_name1').tuples()\n# tuples is now a list of dictionaries\n\n# For multiple ideas:\nquery = workspace.query(['idea_name1', 'idea_name2'])\ntuples1 = query.tuples('idea_name1')\ntuples2 = query.tuples('idea_name2')\n\n# For large numbers of tuples:\nfor tup in query.tuple_generator('idea_name1'):\n process(tup)\n \n# Get a (possibly cached) pandas dataframe of tuples:\ndf = query.to_df('idea_name1')\n\n# Quick queries have a similar API, e.g.\ntuples = workspace.quick('idea_name1').tuples()\n```\n\n### Upload tuples to a dataset\n\n```python\ndataset = client.dataset(456)\ndataset.upload_tuples(\n [{'id': 1, 'name': 'alice'}],\n [{'id': 2, 'name': 'bob'}],\n)\n\n# Or use a generator for large amounts of tuples, e.g.\ndef tuples():\n for i, tup in enumerate(large_database_query()):\n tup['id'] = i\n yield tup\n\ndataset.upload_tuples(tuples())\n\n# Or upload a pandas DataFrame\ndf = pd.read_csv(...)\ndataset.upload_df(df) # Uploads all the columns, but not the indexes\ndataset.upload_df(df.reset_index()) # Uploads all the indexes as well\n\n```\n\n### Download a file from Google Drive\n\n```python\nfrom businessoptics import gdrive_file\n\n# Get URL by clicking on a file and then 'Get shareable link' in Google Drive\ngfile = gdrive_file('https://drive.google.com/open?id=ABCDEF123')\n\ngfile.path() # The path to the downloaded file\ngfile.open() # Open the file\ngfile.unzip() # Unzip the file, returning a similar object. The zip must only contain one file\ngfile.untar() # Untar the file. Similar to the above, but use for '.tar.gz'.\ngfile.unzip('the_only_file_you_need.csv') # extract a specific file when there are many\n\n# Read a zipped CSV into Pandas\ndf = pd.read_csv(gfile.unzip().path())\n```\n\n### Upload a file to Google Drive\n\n```python\nfrom businessoptics import upload_to_google_drive\n\n# File will be called 'a_local_file.csv' on Google Drive\nupload_to_google_drive('path/to/a_local_file.csv')\n\n# File will be called 'name_on_drive.csv' on Google Drive\nupload_to_google_drive('path/to/a_local_file.csv', 'name_on_drive.csv')\n\n# File will be zipped before upload and will be called 'a_local_file.csv.zip' on Google Drive \nupload_to_google_drive('path/to/a_local_file.csv', zipit=True)\n```\n\n### Controlling the download cache\n\nIf the `/global_cache` folder is present (e.g. it is on jupyter.businessoptics.net) then by default cached files (from `gdrive_file()` or `.to_df()`) are stored there and shared by everyone. This may lead to strange behaviour if multiple people are downloading the same behaviour. You can avoid this and only use the cache in your home folder as follows:\n\n```python\nfrom businessoptics import isolate_cache\n\nisolate_cache()\n```\n\n### Generic API usage\n\nEvery Client instance has a base URL. All requests made from it start from that base, and you can optionally add more to the URL for the request. For example:\n\n```python\nclient = Client() # client.base_url is ''\nworkspace = client.workspace(123) # workspace.base_url is '/api/v2/workspace/123'\n\n# sends a GET request to /api/v2/workspace/123, returning metadata about the workspace\nworkspace.get()\n\n# sends a GET request to /api/v2/workspace/123/query, returning the query history\n# of the workspace\nworkspace.get('query')\n```\n\nThe API responds with JSON which is automatically parsed into Python data structures, with a dictionary at the top.\n\nIf you want to send a POST, PUT, or DELETE request, use the `post/put/delete` method. You will probably need to specify the `json` keyword argument with some dictionary for the body of the request.\n\nIf there was an error, an `APIError` exception will be raised.\n\n### Resource classes\n\n`Client` has several subclasses, each representing different resources in the app and having different methods. Here is how you would create instances of these classes and a brief overview of what you can do with them. For more details see the source code and docstrings.\n\nAll of these classes have base URLs which accept a plain `get()` to get metadata about the resource.\n\n```python\nfrom businessoptics import Client, Workspace, DataCollection, Dataset, Query, IdeaResult, Dashboard\n\nclient = Client()\n\n# Workspace\n\nworkspace = client.workspace(123)\nworkspace = client.workspace('workspace name')\nworkspace = Workspace.at(client, '/api/v2/workspace/123/')\n\n## Initialise a training run\ntraining_run = workspace.train(['idea1', 'idea2'])\n## Wait for it to complete\ntraining_run.await()\n\n# Query\n\n## Get an existing, previously initiated query:\nquery = client.query(456)\nquery = Query.at(client, '/api/v2/query/456')\n\n## Run a new query:\nquery = workspace.query(['idea_name1', 'idea_name2'])\n### Pass knowledge parameters:\nquery = workspace.query('idea_name', parameters={'param1': 1, 'param2': 2})\n### Run using hadoop:\nquery = workspace.query('idea_name', execution_mode='hadoop')\n\n## To get tuples, use the tuples(), tuple_generator(), or to_df() methods that\n## exist in IdeaResult. You don't have to separately get the result, just pass\n## the idea name as the first argument, e.g. you can do:\ntuples = query.tuples('idea_name')\n## which is equivalent to:\ntuples = query.result('idea_name').tuples()\n\n## You can also run quick queries by replacing workspace.query with workspace.quick\n\n# IdeaResult\n\nresult = query.result('idea_name1')\nresult = IdeaResult.at(client, '/api/v2/query/456/result/idea_name1')\ntuples = result.tuples()\n\n## For large numbers of tuples:\nfor tup in result.tuple_generator():\n process(tup)\n \n## Get a dataframe:\ndf = result.to_df() \n\n## Reingest into a dataset\ndata_update = result.reingest_into_existing_dataset(456)\n## Wait for the reingestion to finish\ndata_update.await()\n\n# DataCollection\n\ncollection = client.datacollection(123)\ncollection = client.datacollection('collection name')\ncollection = DataCollection.at(client, '/api/v2/datacollection/123')\ncollection = client.dataset(456).collection # NOT the datacollection method\n\n# Dataset\ndataset = client.dataset(456)\ndataset = collection.dataset('dataset name')\ndataset = Dataset.at(client, '/api/v2/dataset/456')\n\n## For uploading tuples, see section above\n\n## Downloading tuples is similar to IdeaResult: \n## use the methods tuples(), tuple_generator(), and to_df()\n## You can also specify filters for the first two methds - see the docstring for tuple_generator\n\n## Create a new dataset:\ndataset = collection.create_tablestore_dataset(\n name='test',\n dimensions=[\n dict(name='col1', type='integer', default='-1', key=False),\n dict(name='col2', type='integer', default='-1', key=False),\n ]\n )\n## or from a dataframe (see docstring):\ndataset = collection.create_tablestore_dataset_from_df('df test', df)\n \n## Duplicate a dataset\ndataset_name = dataset.get()['name']\nnew_dataset_name = 'new.' + dataset_name\nnew_dataset = dataset.duplicate(new_dataset_name) # see docstring for more parameters\n\n## Rename a dataset:\nnew_dataset.rename(dataset_name)\n\n## Delete a dataset:\ndataset.delete()\n\n## Delete tuples:\ndataset.delete_tuples() # see docstring for how to specify filter\n\n# Dashboard\ndashboard = client.dashboard(456)\ndashboard = workspace.dashboard('dashboard name')\ndashboard = Dashboard.at('/api/v2/dashboard/456')\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/BusinessOptics/businessoptics_client", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "businessoptics", "package_url": "https://pypi.org/project/businessoptics/", "platform": "", "project_url": "https://pypi.org/project/businessoptics/", "project_urls": { "Homepage": "https://github.com/BusinessOptics/businessoptics_client" }, "release_url": "https://pypi.org/project/businessoptics/0.7.1/", "requires_dist": null, "requires_python": "", "summary": "Client for the BusinessOptics API", "version": "0.7.1" }, "last_serial": 5399698, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "05c46dfd358eb0b7ea985bc9c05eab11", "sha256": "1cf25628f4724196a8141c768a6b547d8cfcd0465c8b0aa0620c178707b12aec" }, "downloads": -1, "filename": "businessoptics-0.1.tar.gz", "has_sig": false, "md5_digest": "05c46dfd358eb0b7ea985bc9c05eab11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4158, "upload_time": "2016-10-25T10:00:32", "url": "https://files.pythonhosted.org/packages/23/26/b569e13a5194ba5df7574790cb6d3e7629c98fcaf6272795b7b0e2db047f/businessoptics-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "cd6a80b8a32dc24b549282cc0e541a39", "sha256": "f38cbe677371dc895e4f17d130728013e365252f1d3fe29e3a2c59cea8f9002a" }, "downloads": -1, "filename": "businessoptics-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cd6a80b8a32dc24b549282cc0e541a39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4553, "upload_time": "2016-10-25T10:17:16", "url": "https://files.pythonhosted.org/packages/79/06/2965c7e3652503b8a3f9ba23d6459d79981581316cfb242d00626fe0879e/businessoptics-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "40b86fc6c209f4f0b9ed40144728a9f6", "sha256": "acf6a31c2ba882305f01d44f839c819a5d265195a6958b31567b7928343af60c" }, "downloads": -1, "filename": "businessoptics-0.1.10.tar.gz", "has_sig": false, "md5_digest": "40b86fc6c209f4f0b9ed40144728a9f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6637, "upload_time": "2017-03-23T11:50:36", "url": "https://files.pythonhosted.org/packages/56/9a/cf7e9f3b89739e8311d2115ec44c1c47b4c143a56d70186b1374541653d3/businessoptics-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "6ca99408f81879c8d3f6b2f0836db08a", "sha256": "02034a5e3f4c77e297c9fcd07bac70f855f4478386cd4995f4216393af94e69b" }, "downloads": -1, "filename": "businessoptics-0.1.11.tar.gz", "has_sig": false, "md5_digest": "6ca99408f81879c8d3f6b2f0836db08a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6842, "upload_time": "2017-04-25T11:50:19", "url": "https://files.pythonhosted.org/packages/a5/da/98911a4e8a37256fb66b6f1aba7571cb0351012b0f28efa4e5d786007a28/businessoptics-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "f26e9fefe16a29bacc595f3638c90254", "sha256": "d376b028bd8be485fe90bbf1cb1de23ecff781eb0b4b0d6566eb827f5304a9ab" }, "downloads": -1, "filename": "businessoptics-0.1.12.tar.gz", "has_sig": false, "md5_digest": "f26e9fefe16a29bacc595f3638c90254", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7173, "upload_time": "2017-07-04T17:36:47", "url": "https://files.pythonhosted.org/packages/c9/71/a09a08f6b992daa4f3c6faf2aa9b17b585c889edcf6e031b8ef5cfa9f3e0/businessoptics-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "20800c0ed6a42e051acd68bc36c251a2", "sha256": "adef77ef527ca0736adddb6391e16fcf34aa69dfed8cb8dcb09723929f015dd7" }, "downloads": -1, "filename": "businessoptics-0.1.13.tar.gz", "has_sig": false, "md5_digest": "20800c0ed6a42e051acd68bc36c251a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7205, "upload_time": "2017-07-17T16:50:30", "url": "https://files.pythonhosted.org/packages/56/c7/e3d95160123bbb295638a6abaf5c9591129c74af5724346ad741724e3025/businessoptics-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "e722ffbbdf2b4e34047a349977d1177a", "sha256": "a5dc79d0f6a4ca2b90986e4ab042534d2a0d2d5b096f8405dfb6f5527a7bcadd" }, "downloads": -1, "filename": "businessoptics-0.1.14.tar.gz", "has_sig": false, "md5_digest": "e722ffbbdf2b4e34047a349977d1177a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8303, "upload_time": "2017-08-07T16:06:00", "url": "https://files.pythonhosted.org/packages/14/16/651bd77cc236a3205217e933d87454017a13730b26b0760eab08d331e408/businessoptics-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "7b743a10c85874cb405d4a0b5e336176", "sha256": "71a16ba4df8c8ba16e03df86c8177c69bc16fa3fcaddc128c693c0f74e2db4dd" }, "downloads": -1, "filename": "businessoptics-0.1.15.tar.gz", "has_sig": false, "md5_digest": "7b743a10c85874cb405d4a0b5e336176", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8464, "upload_time": "2017-08-22T10:14:13", "url": "https://files.pythonhosted.org/packages/39/a2/948ef9927bccdd18f0c51d266b0191be2831eb2b732a1092ae0bcf5ec594/businessoptics-0.1.15.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "3a129f7f9d0740c792553fdcf594151c", "sha256": "d00a8b76b75adfc0bea19d63cf9354dca535d89bf8a98e20b07963f2ac51cb1d" }, "downloads": -1, "filename": "businessoptics-0.1.16.tar.gz", "has_sig": false, "md5_digest": "3a129f7f9d0740c792553fdcf594151c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9033, "upload_time": "2017-09-15T13:38:13", "url": "https://files.pythonhosted.org/packages/ed/f6/e46a6273b5bbc507e15a67395ad1ce23b5034e7f0b757fee9ef8cc889409/businessoptics-0.1.16.tar.gz" } ], "0.1.17": [ { "comment_text": "", "digests": { "md5": "57003e492431748bbd82612c79e5ebf4", "sha256": "5e72e0fd47045d47f4573a3250b8d5e8932332331abe8352501c5e13d453cefc" }, "downloads": -1, "filename": "businessoptics-0.1.17.tar.gz", "has_sig": false, "md5_digest": "57003e492431748bbd82612c79e5ebf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9048, "upload_time": "2017-09-15T15:34:21", "url": "https://files.pythonhosted.org/packages/60/8e/dd2023ea0a239bf79dc682f8938ddd27717d5711bfdcdc1416c99df96287/businessoptics-0.1.17.tar.gz" } ], "0.1.18": [ { "comment_text": "", "digests": { "md5": "3cf7a4e1738ab0174edf0ad528647450", "sha256": "d4e84dee5f614b8ec7540606f288e5fb64b6216bbe5f13bc783ef37abdaeaa4b" }, "downloads": -1, "filename": "businessoptics-0.1.18.tar.gz", "has_sig": false, "md5_digest": "3cf7a4e1738ab0174edf0ad528647450", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9356, "upload_time": "2017-10-25T15:03:50", "url": "https://files.pythonhosted.org/packages/57/98/708afa12cdb137117d32de2b105a79f0dd2042d98d7db967eafc44162151/businessoptics-0.1.18.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "41705a474be71bd0fe4ccb8d586c3d5a", "sha256": "d86b5176c986418c0fc66e3d737486e43bb3ebb0629d36a5dbe443e01a01ad48" }, "downloads": -1, "filename": "businessoptics-0.1.2.tar.gz", "has_sig": false, "md5_digest": "41705a474be71bd0fe4ccb8d586c3d5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4635, "upload_time": "2016-10-25T14:42:24", "url": "https://files.pythonhosted.org/packages/39/60/86cab6d6c244bbf44c50dadce577805cde736c0789982a3f8e620cf803e5/businessoptics-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "0d9ef54ea4cebb36aae2980841e7b3db", "sha256": "940bf249f9a9c3cd02822a96973b35f83a636970870da618231fe4ce6dd4819b" }, "downloads": -1, "filename": "businessoptics-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0d9ef54ea4cebb36aae2980841e7b3db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5134, "upload_time": "2016-10-31T15:04:47", "url": "https://files.pythonhosted.org/packages/8c/51/613d316bfb150b423ce5819cadf3bbc20b6f73b3991d2912dd69766071f7/businessoptics-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "016036b5f76e04761b794232c18d5e49", "sha256": "acb5ff5a9bf90fbb84f0d44dedfa59361ec588a6e1494684caa2d15d6ff79c61" }, "downloads": -1, "filename": "businessoptics-0.1.4.tar.gz", "has_sig": false, "md5_digest": "016036b5f76e04761b794232c18d5e49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5160, "upload_time": "2016-11-03T13:26:25", "url": "https://files.pythonhosted.org/packages/be/53/4687d79a8247d62dd5bd145115b5cad50d56d56f72e1491c69901885209d/businessoptics-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "dc7a2025a3e30f0b30532fc262735682", "sha256": "5c592348ac649cd1fcbf0b147bd0e96faf92d197a1540cbf533305173e9f96c4" }, "downloads": -1, "filename": "businessoptics-0.1.5.tar.gz", "has_sig": false, "md5_digest": "dc7a2025a3e30f0b30532fc262735682", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6097, "upload_time": "2016-11-23T17:14:23", "url": "https://files.pythonhosted.org/packages/48/7f/e4f0b2ff93b1acd3ea6eb7b13d5f3ff28ed2ed78e2219eb693ba7568baae/businessoptics-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "5f13c9d22d90515ffce138b03fbab7b6", "sha256": "be5c2b233c59d1b657735c58165847f68b43169797c395974d4bec50571278fd" }, "downloads": -1, "filename": "businessoptics-0.1.6.tar.gz", "has_sig": false, "md5_digest": "5f13c9d22d90515ffce138b03fbab7b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6359, "upload_time": "2016-11-25T13:52:19", "url": "https://files.pythonhosted.org/packages/d5/4d/a3941e749b8d3264ad83fc8a9aea0013e0575d1c68def018917419e79ecb/businessoptics-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "080f14dfe2fdbef960f564d9b60ff8d5", "sha256": "ae078b01207014e73a63f2ab359109c3a36beffe9d6ca1a102daa4df93379c9a" }, "downloads": -1, "filename": "businessoptics-0.1.7.tar.gz", "has_sig": false, "md5_digest": "080f14dfe2fdbef960f564d9b60ff8d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6388, "upload_time": "2016-11-28T11:30:55", "url": "https://files.pythonhosted.org/packages/b7/a7/53e5a09b2acbb66d83031612500f2b02605dc541d10f4c2bd191d5dc6293/businessoptics-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "e1454cf6b55630eeb8ab3a4c97197212", "sha256": "522b56d2be2469b417b8b1648f01c29ad202fa757759f019e281bd5aafda8fe3" }, "downloads": -1, "filename": "businessoptics-0.1.8.tar.gz", "has_sig": false, "md5_digest": "e1454cf6b55630eeb8ab3a4c97197212", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6567, "upload_time": "2016-11-30T13:46:02", "url": "https://files.pythonhosted.org/packages/2f/50/bc931d1b05555fb108648f010eb32206958747d127f63c2476956ec800c0/businessoptics-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "3d4866aececeff3b9b8259f0604421d0", "sha256": "1325f8902a7ed98cdf2ef4f89b65d51182540e7b8e4774289a62c05fe45e02b5" }, "downloads": -1, "filename": "businessoptics-0.1.9.tar.gz", "has_sig": false, "md5_digest": "3d4866aececeff3b9b8259f0604421d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6608, "upload_time": "2016-12-02T15:23:41", "url": "https://files.pythonhosted.org/packages/8f/f8/9a55d5d031fd4b62c42119a280030a2c44608e8250d3c31ffafd2e2b4151/businessoptics-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2f72aacfb6d266645300865f38917944", "sha256": "24b7efd3cf470ddd63c8ca9a6cf22195baf1fd1c3a97d1a7aa97aaa52cf8e7d7" }, "downloads": -1, "filename": "businessoptics-0.2.0.tar.gz", "has_sig": false, "md5_digest": "2f72aacfb6d266645300865f38917944", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9375, "upload_time": "2017-11-29T09:08:43", "url": "https://files.pythonhosted.org/packages/0b/56/abe9568e5f7ce06ec80a976a860a536e592a61a1d4ccd727c00b9fadde30/businessoptics-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b13e0e062d07e6a3aec5ddd89be79a3a", "sha256": "365b5460de97b1cfb346ef4a21fb0724b2cb96d8f8ded82de0d382cb6eeff9c8" }, "downloads": -1, "filename": "businessoptics-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b13e0e062d07e6a3aec5ddd89be79a3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9389, "upload_time": "2017-11-30T11:05:40", "url": "https://files.pythonhosted.org/packages/a2/39/495b54f6d6868b04171b2970ad08621876194c0758ace8271e79637ae67c/businessoptics-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "bcdb1bdd344e60d98ea422884747b65a", "sha256": "138b2268e35ac1c61d2d325a98985688ee20f10c8fc5b9efb7c0602a7918ee08" }, "downloads": -1, "filename": "businessoptics-0.2.2.tar.gz", "has_sig": false, "md5_digest": "bcdb1bdd344e60d98ea422884747b65a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9569, "upload_time": "2017-11-30T14:54:44", "url": "https://files.pythonhosted.org/packages/39/40/b5d294453b6995f8b2f5c8f10dc6a81261b1b159c2efc24d1e0a7704c298/businessoptics-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "2b3e9f81ccdb9f56ec771dc879b88257", "sha256": "802c31d5362d7491f53ad5b525663f5eeb3777cb281b83ab621bea3c81c54252" }, "downloads": -1, "filename": "businessoptics-0.2.3.tar.gz", "has_sig": false, "md5_digest": "2b3e9f81ccdb9f56ec771dc879b88257", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9575, "upload_time": "2017-12-08T07:46:02", "url": "https://files.pythonhosted.org/packages/c8/36/368cc531412199a98a1ddb2333dfcb5a20f170bc361f87cded0a781224eb/businessoptics-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d9a2330b6207d57accfcbe55965cbf54", "sha256": "c76821f1e9daf7da19c3b73892be021782aeebbce760985aff5b1526918cd268" }, "downloads": -1, "filename": "businessoptics-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d9a2330b6207d57accfcbe55965cbf54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9698, "upload_time": "2018-01-10T14:50:25", "url": "https://files.pythonhosted.org/packages/38/a1/0223622d7e2caa49a2f02971bd7016cd4d4f034c1f6e16b7c9143374bcb8/businessoptics-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "95aeca2759a3388387709d8f294faf07", "sha256": "8b401d4edb61a08c09746abde7af1a5dbd5a3c18539675d1a41e9b999670e655" }, "downloads": -1, "filename": "businessoptics-0.2.5.tar.gz", "has_sig": false, "md5_digest": "95aeca2759a3388387709d8f294faf07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9774, "upload_time": "2018-01-19T10:40:24", "url": "https://files.pythonhosted.org/packages/27/c0/c8344408463e267486dd47794fa7ae5af3b89be7ff2c34b9bbe6a9699302/businessoptics-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "4c227c039b6b547245bdde5715c3bbd8", "sha256": "e99f24a013616568eeef533de3c379a5c9df39949b549a3c947cc98a2e132c2f" }, "downloads": -1, "filename": "businessoptics-0.2.6.tar.gz", "has_sig": false, "md5_digest": "4c227c039b6b547245bdde5715c3bbd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10853, "upload_time": "2018-01-29T09:37:11", "url": "https://files.pythonhosted.org/packages/14/73/a4122e5db1df9a38042c39f1641de2c7aa192974b02e6428fbb57065fffa/businessoptics-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "64101d70e191a5e0b63366de1c2f222d", "sha256": "32e7efb136731fe565ee93d15db08f7b4b183121911e98ad66d3dc9f0d17964a" }, "downloads": -1, "filename": "businessoptics-0.2.7.tar.gz", "has_sig": false, "md5_digest": "64101d70e191a5e0b63366de1c2f222d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15466, "upload_time": "2018-01-30T16:23:34", "url": "https://files.pythonhosted.org/packages/16/2b/1477a5690c907673db0c6f32259333d92141dc2979cd8f54b8daae46568c/businessoptics-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "2dead2f580e92f19ea44552d5f21ea35", "sha256": "a7cc69650f19113b8b439682902b6a4b2bdb2633f2486828a67e185d0e9e2147" }, "downloads": -1, "filename": "businessoptics-0.2.8.tar.gz", "has_sig": false, "md5_digest": "2dead2f580e92f19ea44552d5f21ea35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15641, "upload_time": "2018-02-02T13:01:17", "url": "https://files.pythonhosted.org/packages/b5/64/9ca6101036b1fc8aa68e7656f2ff3b4e7abaaa3d378d352fcac46ab432f7/businessoptics-0.2.8.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2e1bf77b22507be3f59ce8c7a7c4582b", "sha256": "afeba9424e63aa060fd23bafad2af72a61247638779cf6f20f885f6657140e48" }, "downloads": -1, "filename": "businessoptics-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2e1bf77b22507be3f59ce8c7a7c4582b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17261, "upload_time": "2018-02-05T15:52:35", "url": "https://files.pythonhosted.org/packages/ae/de/ddc1144efffe5a9af027bdb78652bdb02e44aa3170a358cc97ae32a1ac7a/businessoptics-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "76c08b1c2268c40f6e8b7d97b93c9d49", "sha256": "1f0b59955fb64a44ec1d8cad271092d2eead68ebc7bfa66cc797818891852efa" }, "downloads": -1, "filename": "businessoptics-0.3.1.tar.gz", "has_sig": false, "md5_digest": "76c08b1c2268c40f6e8b7d97b93c9d49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17655, "upload_time": "2018-02-06T12:42:42", "url": "https://files.pythonhosted.org/packages/28/b7/f4966232534fe3df259f4027fb4013cb227088146beaa0a444345a360966/businessoptics-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ec35da9a7b2ba32a9d6b770dafe5543f", "sha256": "3ca9deb2d171eacd731855aefd39c11277313f94d163ebb04f2a2ac6b711f729" }, "downloads": -1, "filename": "businessoptics-0.4.0.tar.gz", "has_sig": false, "md5_digest": "ec35da9a7b2ba32a9d6b770dafe5543f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18603, "upload_time": "2018-02-08T11:49:47", "url": "https://files.pythonhosted.org/packages/d8/b2/817315ab3c40b4dffc20a4783fbb08ae8c4c00ef054b7a804af844274d46/businessoptics-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "4879a734de735bf6a14b92f4f088071d", "sha256": "ff99a2574314de6a224a73e8d4789b25a976218e782a7ed57cb040984bfd58de" }, "downloads": -1, "filename": "businessoptics-0.5.0.tar.gz", "has_sig": false, "md5_digest": "4879a734de735bf6a14b92f4f088071d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20001, "upload_time": "2018-02-13T10:13:07", "url": "https://files.pythonhosted.org/packages/22/9b/d684e7d963944b30604e0334cc770a94441919bf0afe4e5f6bdd53d83085/businessoptics-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "298ffc458668e6b02a782ffee47dd497", "sha256": "1296a62b21060c33658c44c5ad752695de0cf67a189bacd4c3489fee453eff44" }, "downloads": -1, "filename": "businessoptics-0.5.1.tar.gz", "has_sig": false, "md5_digest": "298ffc458668e6b02a782ffee47dd497", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20391, "upload_time": "2018-02-15T13:30:47", "url": "https://files.pythonhosted.org/packages/51/83/122d0648a16062369b475e05d5b29499ae270346eab35df6eb2e5d2a591c/businessoptics-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "1487f1f730fd3056dd3e5196c6b0d612", "sha256": "1ec8504d463661bc16b77a83a57f03c5f7fe120b5e5b650fe75bf41f1df5fb7f" }, "downloads": -1, "filename": "businessoptics-0.6.0.tar.gz", "has_sig": false, "md5_digest": "1487f1f730fd3056dd3e5196c6b0d612", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21013, "upload_time": "2018-03-27T10:48:18", "url": "https://files.pythonhosted.org/packages/d7/ea/49b14c536c01232b0efd006e7eb73bf59e092e5da49b80d1abb488edeef4/businessoptics-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "1cdcb40358a18427367344c3c94b9d1e", "sha256": "80b2b74594004e104a694d6fefb0826fdf05b897dadd49d82bb853b264673741" }, "downloads": -1, "filename": "businessoptics-0.6.1.tar.gz", "has_sig": false, "md5_digest": "1cdcb40358a18427367344c3c94b9d1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21013, "upload_time": "2018-04-20T10:06:15", "url": "https://files.pythonhosted.org/packages/e5/7e/a169221c0d7be041f05f3223f6871f8d55a51fb4b709ec168e9c939031c0/businessoptics-0.6.1.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "6334d5f5b9795acb5388693870d0e7d6", "sha256": "2723fef263f816205e7a1bb7d80eb6005da009eaa7e8eb3d2bf3feb11defa9f7" }, "downloads": -1, "filename": "businessoptics-0.7.0.tar.gz", "has_sig": false, "md5_digest": "6334d5f5b9795acb5388693870d0e7d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21172, "upload_time": "2018-05-21T13:59:16", "url": "https://files.pythonhosted.org/packages/cb/a6/906466f836c7762893fcfe35d6a6820c85cb393d2fe0bc7bddc9f982f4d8/businessoptics-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "3df686f7064f5506df8095f4567b3512", "sha256": "0f1e01a4f90c48d27e7e04c29b8566eea4e1b85e3a9bda6b735895d91bfdce5f" }, "downloads": -1, "filename": "businessoptics-0.7.1.tar.gz", "has_sig": false, "md5_digest": "3df686f7064f5506df8095f4567b3512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23676, "upload_time": "2019-06-14T09:08:28", "url": "https://files.pythonhosted.org/packages/86/cf/c659eeb5f05a366f7d80dd1417196adbffd0dedd49e1667774a816223c4d/businessoptics-0.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3df686f7064f5506df8095f4567b3512", "sha256": "0f1e01a4f90c48d27e7e04c29b8566eea4e1b85e3a9bda6b735895d91bfdce5f" }, "downloads": -1, "filename": "businessoptics-0.7.1.tar.gz", "has_sig": false, "md5_digest": "3df686f7064f5506df8095f4567b3512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23676, "upload_time": "2019-06-14T09:08:28", "url": "https://files.pythonhosted.org/packages/86/cf/c659eeb5f05a366f7d80dd1417196adbffd0dedd49e1667774a816223c4d/businessoptics-0.7.1.tar.gz" } ] }