{
"info": {
"author": "Thorgate",
"author_email": "code@thorgate.eu",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: ISC License (ISCL)",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6"
],
"description": "=================\nThorgate API Core\n=================\n\n\n.. image:: https://img.shields.io/pypi/v/tg-apicore.svg\n :target: https://pypi.python.org/pypi/tg-apicore\n\n.. image:: https://img.shields.io/travis/thorgate/tg-apicore.svg\n :target: https://travis-ci.org/thorgate/tg-apicore\n\n.. image:: https://readthedocs.org/projects/tg-apicore/badge/?version=latest\n :target: https://tg-apicore.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n\nOpinionated API framework on top of Django REST framework\n\n\n* Free software: ISC license\n\nSupports Python 3.5+, Django 1.11+, Django REST framework 3.6+\n\n\nFeatures\n--------\n\n* API documentation automatically generated from your views\n * General intro can be added\n * You can add example request/response data\n * Autogenerated Python `requests`-based examples\n * Not interactive yet\n* Integrates `JSON API `_\n * Cursor pagination with configurable page size\n* Viewset classes for using different serializers and querysets for list/detail/edit endpoints\n* API-specific 404 view\n* Test utilities, e.g. for response validation\n* Versioning (WIP)\n * Transformer-based approach, inspired by\n `djangorestframework-version-transforms `_\n and `Stripe `_\n\n\nUsage\n-----\n\n- ``pip install tg-apicore``\n- Add ``tg_apicore`` to ``INSTALLED_APPS``\n- Ensure your ``REST_FRAMEWORK`` setting contains ``ALLOWED_VERSIONS``, e.g:\n\n .. code:: python\n\n # In your Django project settings:\n REST_FRAMEWORK = {\n 'ALLOWED_VERSIONS': ('2018-01-01',),\n }\n\n- Note that the default paginator requires that your models have ``created`` field\n\n- Create API documentation view by subclassing ``APIDocumentationView`` and making necessary modifications.\n See ``example/example/views.py`` for example.\n- Add main API urls plus 404 view (as fallback).\n\n\nHere's an example ``urls.py``:\n\n.. code:: python\n\n from tg_apicore.views import PageNotFoundView\n\n from myproject.views import MyProjectAPIDocumentationView\n\n urlpatterns = [\n # The documentation view\n url(r'^api-docs/', MyProjectAPIDocumentationView.as_view(), name='api-docs'),\n\n # myproject.urls_api should contain your API urls patterns\n url(r'^api/(?P(\\d{4}-\\d{2}-\\d{2}))/', include('myproject.urls_api')),\n\n # API-specific 404 for everything under api/ prefix\n url(r'^api/', include(PageNotFoundView.urlpatterns())),\n ]\n\nSee ``example`` directory for a more in-depth demo.\n\n\nCredits\n-------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n=======\nHistory\n=======\n\n0.3.0 (2018-05-23)\n------------------\n\n* Add Usage section to README (to make starting up easier)\n* Most ``REST_FRAMEWORK`` settings are now automatically configured by Thorgate API Core.\n Users only need to specify ``ALLOWED_VERSIONS``, the rest is optional.\n\n\n0.2.1 (2018-04-14)\n------------------\n\n* Fix packaging (tg_apicore subdirs weren't included)\n\n\n0.2.0 (2018-04-14)\n------------------\n\n* Added PageNotFoundView (JSON-based 404 views)\n* Added DetailSerializerViewSet (different serializers and queryset for list/detail/edit views)\n* Added CreateOnlyFieldsSerializerMixin, ModelValidationSerializerMixin and BaseModelSerializer\n* Renamed APIDocumentationView.get_patterns() to .urlpatterns()\n* Improved example app a lot. It now also includes tests that partially test tg-apicore itself\n\n\n0.1.0 (2018-03-08)\n------------------\n\n* First release on PyPI.\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/thorgate/tg-apicore",
"keywords": "tg-apicore django djangorestframework",
"license": "ISC license",
"maintainer": "",
"maintainer_email": "",
"name": "tg-apicore",
"package_url": "https://pypi.org/project/tg-apicore/",
"platform": "",
"project_url": "https://pypi.org/project/tg-apicore/",
"project_urls": {
"Homepage": "https://github.com/thorgate/tg-apicore"
},
"release_url": "https://pypi.org/project/tg-apicore/0.3.0/",
"requires_dist": [
"Django (<2.1,>=1.11)",
"djangorestframework (<4,>=3.6)",
"djangorestframework-jsonapi (<3,>=2.4)",
"attrs (>=17.2.0)",
"coreapi (>=2.3)",
"Markdown (>=2.6)",
"Pygments (>=2.2)"
],
"requires_python": "",
"summary": "Opinionated API framework on top of Django REST framework",
"version": "0.3.0"
},
"last_serial": 3890807,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "1f53853e8f024ec9332f828147e1f9b9",
"sha256": "c15e1fd9c3b57e2f79ac20fc92ec5123b7055b919c5b288b0d04878b51ef0f62"
},
"downloads": -1,
"filename": "tg_apicore-0.1.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "1f53853e8f024ec9332f828147e1f9b9",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 14519,
"upload_time": "2018-03-08T12:55:40",
"url": "https://files.pythonhosted.org/packages/ca/32/3d92633ef978063ca7671fbbafc179f9c3dd71967c6fe9c2f780ae00c7e2/tg_apicore-0.1.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "4cbc8fab7bafc757ba95458bc70ac791",
"sha256": "6258053c635edf5745f247088248225cb67e350a87517bab0c9f7d0fe4c070e7"
},
"downloads": -1,
"filename": "tg-apicore-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "4cbc8fab7bafc757ba95458bc70ac791",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15824,
"upload_time": "2018-03-08T12:55:42",
"url": "https://files.pythonhosted.org/packages/1e/e2/575c4de714fa90855cb9453ecf277ea47c1f49816d12d3efc07093b2715e/tg-apicore-0.1.0.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "0366dec7319f942a1d5b31a6ba5ed430",
"sha256": "9eed2bc777df953dd01e424d5f357b44f1b001c2e184cb8946e674e52cf02720"
},
"downloads": -1,
"filename": "tg_apicore-0.2.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "0366dec7319f942a1d5b31a6ba5ed430",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 15907,
"upload_time": "2018-04-14T09:22:57",
"url": "https://files.pythonhosted.org/packages/bb/af/85458f228206ad4a5c496b230b96a077e6b1d3176484f49c36faac4d3b17/tg_apicore-0.2.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "b1a3bdb97cb4c83db66e52e36f5470a6",
"sha256": "989d488162e3f0a8daafac3b94df7530245f825e3ff8748903d8f49c78aed9a9"
},
"downloads": -1,
"filename": "tg-apicore-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "b1a3bdb97cb4c83db66e52e36f5470a6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18152,
"upload_time": "2018-04-14T09:22:58",
"url": "https://files.pythonhosted.org/packages/6f/71/9a29e79d1a512d172c9f77c011896c4aa45a1120dd8280949edeaceebc55/tg-apicore-0.2.0.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "86acf33a700d8e75fd55adebeb3323ba",
"sha256": "638def191c7ddae39e9e125554b91cc9b478ffafec56063c65a7bf0c9fa23688"
},
"downloads": -1,
"filename": "tg_apicore-0.2.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "86acf33a700d8e75fd55adebeb3323ba",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 23745,
"upload_time": "2018-04-14T12:09:53",
"url": "https://files.pythonhosted.org/packages/dd/f0/3eafcce863aa98f87e745dfa7efe6d20064a6246ed317c43412d34d5c8f6/tg_apicore-0.2.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a9a34feae5e201b69e6d6988dd19af25",
"sha256": "8fa1fdf2eb44c15c16f69d0b0dd20859e108bb6dcda06ece7b2b68e064aa6a1b"
},
"downloads": -1,
"filename": "tg-apicore-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "a9a34feae5e201b69e6d6988dd19af25",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 27898,
"upload_time": "2018-04-14T12:09:54",
"url": "https://files.pythonhosted.org/packages/b7/31/af9ca4368114dc7eed89dcb09783790e70c4f9ff8ef12b2fd9fe73418ca9/tg-apicore-0.2.1.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "f85726d6daa5d397bebd3844b500c97f",
"sha256": "ac7c9a749b950b1e7e7f5da76c63d809a41e08d772faea62c53847a93b2329b4"
},
"downloads": -1,
"filename": "tg_apicore-0.3.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f85726d6daa5d397bebd3844b500c97f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 23621,
"upload_time": "2018-05-23T10:11:41",
"url": "https://files.pythonhosted.org/packages/0d/8b/c209afe8f2ef5ec4de9c27501fae51bd0d07cd1dcc593f7e443be9e423d4/tg_apicore-0.3.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "41b071cedbf2db12779217857b3e7a80",
"sha256": "da47e7539dc080bced58f982df7aba14aa22226473bb7685085e07d063320a03"
},
"downloads": -1,
"filename": "tg-apicore-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "41b071cedbf2db12779217857b3e7a80",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22724,
"upload_time": "2018-05-23T10:11:43",
"url": "https://files.pythonhosted.org/packages/0c/f2/a32347f79323716be0c168d4379aaf52e784b63aebc813c6c17cec9f6ff9/tg-apicore-0.3.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "f85726d6daa5d397bebd3844b500c97f",
"sha256": "ac7c9a749b950b1e7e7f5da76c63d809a41e08d772faea62c53847a93b2329b4"
},
"downloads": -1,
"filename": "tg_apicore-0.3.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f85726d6daa5d397bebd3844b500c97f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 23621,
"upload_time": "2018-05-23T10:11:41",
"url": "https://files.pythonhosted.org/packages/0d/8b/c209afe8f2ef5ec4de9c27501fae51bd0d07cd1dcc593f7e443be9e423d4/tg_apicore-0.3.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "41b071cedbf2db12779217857b3e7a80",
"sha256": "da47e7539dc080bced58f982df7aba14aa22226473bb7685085e07d063320a03"
},
"downloads": -1,
"filename": "tg-apicore-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "41b071cedbf2db12779217857b3e7a80",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22724,
"upload_time": "2018-05-23T10:11:43",
"url": "https://files.pythonhosted.org/packages/0c/f2/a32347f79323716be0c168d4379aaf52e784b63aebc813c6c17cec9f6ff9/tg-apicore-0.3.0.tar.gz"
}
]
}