{ "info": { "author": "Henrik Palmlund Wahlgren @ Palmlund Wahlgren Innovative Technology AB", "author_email": "henrik@pwit.se", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries" ], "description": "=======\napi-orm\n=======\n\nInteract with API endpoints as Python objects and manage resources in an ORMy way\n\nInstallation\n============\n\nPython version supported: 3.6+\n\n.. code-block::\n\n pip install api-orm\n\n\nAbout\n=====\n\nWe have written many small clients to different APIs. It usually becomes a\ncouple of functions like:\n\n.. code-block:: python\n\n client.get_customers()\n client.new_customer()\n # etc\n\nWhen writing our client for our accounting API we wanted a more declarative way\nof accessing our data. Also the API supported OData which allows for filtering\non all parameters. This made request look more like database access than\nsimple REST endpoints. So we wanted an interface more like a database ORM.\n\nWe use django a lot so we would like something we are used to.\n\nThis library is an attempt to extract the ORM parts of our Visma client so that\nwe can reuse the framework for a bunch of other API clients.\n\nWe want an api very alike the Django ORM:\n\n.. code-block:: python\n\n all_customers = Customer.api.all()\n a = Customer(**customer_data)\n a.save()\n\n some_customers = Customer.api.filter(name='Dave').exclude(invoice_postal_code__startswith='25')\n\n\n\nBefore we have to write alot of custom validation but in this framework we use\nthe awesome serializer library marshmallow to transform python objects to\nHTTP-request data and back. This gives us a declarative way of defining our\nmodels and it comes included with validation of schemas and fields.\nThere are also tools available to generate models from and API specification\nwhich greatly reduces the implementation time.\n\n=========\nChangelog\n=========\n\nThe format is based on `Keep a Changelog: https://keepachangelog.com/en/1.0.0/`,\nand this project adheres to `Semantic Versioning: https://semver.org/spec/v2.0.0.html`\n\nUnreleased\n----------\n\nAdded\n^^^^^\n\nChanged\n^^^^^^^\n\nDeprecated\n^^^^^^^^^^\n\nRemoved\n^^^^^^^\n\nFixed\n^^^^^\n\nSecurity\n^^^^^^^^\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pwitab/api-orm", "keywords": "api,orm", "license": "BSD-3", "maintainer": "", "maintainer_email": "", "name": "api-orm", "package_url": "https://pypi.org/project/api-orm/", "platform": "", "project_url": "https://pypi.org/project/api-orm/", "project_urls": { "Homepage": "https://github.com/pwitab/api-orm" }, "release_url": "https://pypi.org/project/api-orm/0.0.0.dev1/", "requires_dist": [ "marshmallow (>=3.0.0b1)" ], "requires_python": ">=3.6", "summary": "Interact with API endpoints as Python objects and manage resources in an ORMy way", "version": "0.0.0.dev1" }, "last_serial": 4429015, "releases": { "0.0.0.dev1": [ { "comment_text": "", "digests": { "md5": "bb58c454e4faa3593c94478ba8a071d6", "sha256": "54e0e3215f94ea51495de496c94065f4a32263cd2087c59678571f345eec50ab" }, "downloads": -1, "filename": "api_orm-0.0.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "bb58c454e4faa3593c94478ba8a071d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 3398, "upload_time": "2018-10-29T20:26:33", "url": "https://files.pythonhosted.org/packages/3c/3f/7b24c360d176e1a01c83a3315b5f3c6b0cd61b330acc151c75ce56edbbc8/api_orm-0.0.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e34fa1bcdb019d7ee8c031362e96b12f", "sha256": "6e93e75fb0622ff15d4e9db6c6b9185006ea59d96ffc93a81c99288e1e976c9d" }, "downloads": -1, "filename": "api-orm-0.0.0.dev1.tar.gz", "has_sig": false, "md5_digest": "e34fa1bcdb019d7ee8c031362e96b12f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3194, "upload_time": "2018-10-29T20:26:34", "url": "https://files.pythonhosted.org/packages/9c/ea/358014486f9c6b1089282dd157d8f3969b5cbdf8724718b2d79fbfa3308f/api-orm-0.0.0.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb58c454e4faa3593c94478ba8a071d6", "sha256": "54e0e3215f94ea51495de496c94065f4a32263cd2087c59678571f345eec50ab" }, "downloads": -1, "filename": "api_orm-0.0.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "bb58c454e4faa3593c94478ba8a071d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 3398, "upload_time": "2018-10-29T20:26:33", "url": "https://files.pythonhosted.org/packages/3c/3f/7b24c360d176e1a01c83a3315b5f3c6b0cd61b330acc151c75ce56edbbc8/api_orm-0.0.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e34fa1bcdb019d7ee8c031362e96b12f", "sha256": "6e93e75fb0622ff15d4e9db6c6b9185006ea59d96ffc93a81c99288e1e976c9d" }, "downloads": -1, "filename": "api-orm-0.0.0.dev1.tar.gz", "has_sig": false, "md5_digest": "e34fa1bcdb019d7ee8c031362e96b12f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3194, "upload_time": "2018-10-29T20:26:34", "url": "https://files.pythonhosted.org/packages/9c/ea/358014486f9c6b1089282dd157d8f3969b5cbdf8724718b2d79fbfa3308f/api-orm-0.0.0.dev1.tar.gz" } ] }