{ "info": { "author": "John Clary", "author_email": "john.clary@austintexas.gov", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: Public Domain", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3" ], "description": "# Knackpy \n\nA Python client for interacting with [Knack](http://knack.com) applications.\n\n## Installation\n\n```\npip install knackpy\n```\n\nKnackpy requires [Arrow](http://arrow.readthedocs.io/en/latest/) and [Requests](http://docs.python-requests.org/en/master/). ```pip``` will install both dependencies automatically.\n\n## Features\n- Supports Python 2 and 3\n- Object and view-based requests\n- Filters\n- Parsing of fieldnames and field labels\n- Create and update records\n- CSV output\n\n## Quick Start\n\nGet data from a Knack view.\n\n```python\n>>> from knackpy import Knack\n\n>>> kn = Knack(\n scene='scene_34',\n view='view_10',\n app_id='abc123'\n )\n\n>>> kn.data_raw\n[{'field_1': 30424, 'field_1_raw': 30424, 'field_2': '11/18/2016'},...]\n```\n\nProvide a list of the view's reference objects to return humanized field names.\n\n```python\n>>> kn = Knack(\n scene='scene_34',\n view='view_10',\n ref_obj=['object_1', 'object_2'],\n app_id='myappid',\n api_key='topsecretapikey'\n )\n\n>>> kn.data\n[{'store_id': 30424, 'inspection_date': 1479448800000, 'id': '58598262bcb3437b51194040'},...]\n```\n\nOr retrieve data directly from an object.\n\n```python\n>>> kn = Knack(\n obj='object_1'\n app_id='abc123',\n api_key='topsecretapikey'\n )\n\n>>> kn.data\n[{'store_id': 30424, 'inspection_date': 1479448800000, 'id': '58598262bcb3437b51194040'},...]\n```\n\nYou can also pass a [filter](https://www.knack.com/developer-documentation/#filters) to your object-based requests. \n\n```python\n\n>>> filters = {\n 'match': 'and',\n 'rules': [\n {\n 'field':'field_10',\n 'operator':'is',\n 'value':'No'\n },\n {\n 'field':'field_11',\n 'operator':'is',\n 'value':'Yes'\n }\n ]\n }\n\n>>> kn = Knack(\n obj='object_1'\n app_id='abc123',\n api_key='topsecretapikey',\n filters=filters\n )\n```\n\nField metadata is available when working with objects or when reference objects have been specified.\n\n```python\n>>> kn.fields\n{'field_1': {' ': 'store_id', 'key': 'field_1,required': False, 'type': 'auto_increment'},...}\n\n>>> kn.fieldnames\n['store_id', 'inspection_date', 'store_status',...]\n\n>>> kn.field_map\n{'store_id' : 'field_1', 'store_status' : 'field_2',...}\n```\n\nWrite an instance to csv.\n\n```python\n>>> kn.to_csv('data.csv')\n\"store_id\",\"inspection_date\",\"store_status\"\n\"30424\",\"11-18-2016\",\"OPEN\"\n\"30200\",\"10-01-2013\",\"CLOSED\"\n...\n```\n\nCreate a new record.\n\n```python\n>>> import knackpy\n\n>>> record = {'field_1': 30424}\n\n>>> response = knackpy.record(\n record,\n obj_key='object_12',\n apd_id='myappid',\n api_ley='topsecretapikey',\n method='create'\n )\n\n{ 'id':'6a204bd89f3c8348afd5c77c717a097a', field_1': 30424, ...}\n```\n\nUpdate a record.\n\n```python\n>>> import knackpy\n\n>>> record = {'id':'6a204bd89f3c8348afd5c77c717a097a','field_1': 2049}\n\n>>> response = knackpy.record(\n record,\n obj_key='object_12',\n apd_id='myappid',\n api_ley='topsecretapikey',\n method='update'\n )\n\n{ 'id':'6a204bd89f3c8348afd5c77c717a097a', field_1': 2049, ...}\n```\nGet an application configuration data (objects, scenes, etc.)\n\n```python\n>>> from knackpy import get_app_data\n\n>>> my_app = get_app_data('myAppIdString')\n\n>>> my_app['name']\n\n'John's Amazing App'\n\n## License\n\nAs a work of the City of Austin, this project is in the public domain within the United States.\n\nAdditionally, we waive copyright and related rights of the work worldwide through the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/cityofaustin/knackpy", "keywords": "knack api api-client integration python", "license": "Public Domain", "maintainer": "", "maintainer_email": "", "name": "knackpy", "package_url": "https://pypi.org/project/knackpy/", "platform": "", "project_url": "https://pypi.org/project/knackpy/", "project_urls": { "Homepage": "http://github.com/cityofaustin/knackpy" }, "release_url": "https://pypi.org/project/knackpy/0.0.12/", "requires_dist": [ "arrow", "requests" ], "requires_python": "", "summary": "A Python API wrapper for interacting with Knack applications.", "version": "0.0.12" }, "last_serial": 3957576, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "00567cde4579c52574b1e2687db1b849", "sha256": "716c3b9449d1a79e7436e2c16896da072594bf76740f83138878bca998c182d8" }, "downloads": -1, "filename": "knackpy-0.0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "00567cde4579c52574b1e2687db1b849", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7397, "upload_time": "2018-02-18T23:05:40", "url": "https://files.pythonhosted.org/packages/5a/27/e2d4e29e373cae9482353be095403b9e6054fc16df61776095c547176919/knackpy-0.0.10-py2.py3-none-any.whl" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "fa42bad1ff0e4deb961738952f234c0e", "sha256": "54144c67570d51385a569b58e4425f9cbdd8ca594adc744151864c80d5801458" }, "downloads": -1, "filename": "knackpy-0.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa42bad1ff0e4deb961738952f234c0e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7404, "upload_time": "2018-02-20T18:25:37", "url": "https://files.pythonhosted.org/packages/a1/ea/c683d381afae4200c159be00b4d3a2de27fdfd73d92d998164af30250cb6/knackpy-0.0.11-py2.py3-none-any.whl" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "0784d2ce2d70db721e6d75b1f804697b", "sha256": "82f4a9c4aa94764ba9a4c356e93d2f5a34b9a0c391e44b8beafc3844642bcff4" }, "downloads": -1, "filename": "knackpy-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "0784d2ce2d70db721e6d75b1f804697b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7687, "upload_time": "2018-06-13T12:53:51", "url": "https://files.pythonhosted.org/packages/f2/c4/b25a05efa23b57231e504d8440d5063eeadcbc8cd03f9f1bd72c04a66c1f/knackpy-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c55509d27a5dbf5b6136731e4c04d28", "sha256": "124a7da241a2edf33312ae715cff113229f45e6f7a9926a5bbe3398cadb117dd" }, "downloads": -1, "filename": "knackpy-0.0.12.tar.gz", "has_sig": false, "md5_digest": "9c55509d27a5dbf5b6136731e4c04d28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8272, "upload_time": "2018-06-13T12:53:52", "url": "https://files.pythonhosted.org/packages/06/54/8ff09ce5ca88c76827f534230a2f232c486c478c9fb3b80b5d2ab2098f9d/knackpy-0.0.12.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "2eae700ff8f1ea098bbbf0c60c38223e", "sha256": "f23aa499b0897bf158b8ec68f84dfbf5d492b763c8b853c9c8e388ad87a41ce4" }, "downloads": -1, "filename": "knackpy-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2eae700ff8f1ea098bbbf0c60c38223e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7071, "upload_time": "2017-11-04T13:52:46", "url": "https://files.pythonhosted.org/packages/cd/e1/57abd650050408bc114163c174fefefb749f4353bbecd52ce82c5e634494/knackpy-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e25fffcf15ab8d62d21c6392d1ae84b7", "sha256": "d154ba5332f70eca22a997aab5583a1c51532c37d90ba175ca6d780e90001c49" }, "downloads": -1, "filename": "knackpy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "e25fffcf15ab8d62d21c6392d1ae84b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6760, "upload_time": "2017-11-04T13:52:47", "url": "https://files.pythonhosted.org/packages/6d/15/57316c0ad5ebc31dc733d3c5e90b2a7694bb23f486e9553790420aed1a1f/knackpy-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "968808a9a8901a3e5979e53164c49049", "sha256": "bff9c7241f613e305d4660b68dabe83f3f08dd03d34f18bde3c5bd4f6f0b1828" }, "downloads": -1, "filename": "knackpy-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "968808a9a8901a3e5979e53164c49049", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7070, "upload_time": "2017-11-04T14:36:28", "url": "https://files.pythonhosted.org/packages/73/b6/18c1cbdbfc6cd3e888cb58bddace3d9fb62d906f82424a2ea0d40b2ef771/knackpy-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f9bc4faca33dbaab5d23c065aa35043", "sha256": "76ce5c94ff5ecba45ec5fc382201ec4f3771c6c35d4e26af7d654e30bc5287af" }, "downloads": -1, "filename": "knackpy-0.0.5.tar.gz", "has_sig": false, "md5_digest": "1f9bc4faca33dbaab5d23c065aa35043", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6981, "upload_time": "2017-11-04T14:36:28", "url": "https://files.pythonhosted.org/packages/8a/f8/189650fb4be76dd76c72237a251009db955115be21803b58967cf6930dc1/knackpy-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "7570024fafdf4f6144a8e98f9da00ddf", "sha256": "3e8243ae231e22946f28f7487777438a721ed78323f3828a22d66f5d7d21e482" }, "downloads": -1, "filename": "knackpy-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7570024fafdf4f6144a8e98f9da00ddf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7382, "upload_time": "2018-02-18T15:28:12", "url": "https://files.pythonhosted.org/packages/63/1e/b6c70b0580e5488b557703436f74da83a6b66dd707899c189c386222892f/knackpy-0.0.6-py2.py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "0f3f4816c3c6c6c03527a32f0abaf07a", "sha256": "dfd6ba32cc2b1742d93554b92e2a259174b8d2249bba4690e2b87ac7d2801a73" }, "downloads": -1, "filename": "knackpy-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f3f4816c3c6c6c03527a32f0abaf07a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7431, "upload_time": "2018-02-18T15:43:04", "url": "https://files.pythonhosted.org/packages/a5/cf/4663c1c2c3d738a59c37a93ded13da68c5b37bf5b2b396d4679b2cdc0fd6/knackpy-0.0.7-py2.py3-none-any.whl" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "636473410c8882ef300a4484d213492d", "sha256": "4e2fd9db6ed03ee34f9940b280a442977c969f1f80f6ebd6df060db05f822db6" }, "downloads": -1, "filename": "knackpy-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "636473410c8882ef300a4484d213492d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7365, "upload_time": "2018-02-18T21:19:49", "url": "https://files.pythonhosted.org/packages/67/14/52d9501f60399499cd94c759220a74b01f47dc094a16f3d56bf91f87235e/knackpy-0.0.8-py2.py3-none-any.whl" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "5cc9e1c87a73d9c67ace3a124e77bd57", "sha256": "2063e51cbc69a041d8e79d9abefed3d5e1b62be09926f4c2867e5ae95acc1e59" }, "downloads": -1, "filename": "knackpy-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5cc9e1c87a73d9c67ace3a124e77bd57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7403, "upload_time": "2018-02-18T22:40:04", "url": "https://files.pythonhosted.org/packages/78/10/043a13708a0860c3643b2177516eb6cb4d2a351419629714fd90c4936e2f/knackpy-0.0.9-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0784d2ce2d70db721e6d75b1f804697b", "sha256": "82f4a9c4aa94764ba9a4c356e93d2f5a34b9a0c391e44b8beafc3844642bcff4" }, "downloads": -1, "filename": "knackpy-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "0784d2ce2d70db721e6d75b1f804697b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7687, "upload_time": "2018-06-13T12:53:51", "url": "https://files.pythonhosted.org/packages/f2/c4/b25a05efa23b57231e504d8440d5063eeadcbc8cd03f9f1bd72c04a66c1f/knackpy-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c55509d27a5dbf5b6136731e4c04d28", "sha256": "124a7da241a2edf33312ae715cff113229f45e6f7a9926a5bbe3398cadb117dd" }, "downloads": -1, "filename": "knackpy-0.0.12.tar.gz", "has_sig": false, "md5_digest": "9c55509d27a5dbf5b6136731e4c04d28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8272, "upload_time": "2018-06-13T12:53:52", "url": "https://files.pythonhosted.org/packages/06/54/8ff09ce5ca88c76827f534230a2f232c486c478c9fb3b80b5d2ab2098f9d/knackpy-0.0.12.tar.gz" } ] }