{ "info": { "author": "Koudai Aono", "author_email": "koxudaxi@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# lambdantic\n[Pydantic](https://github.com/samuelcolvin/pydantic) model and lambda event handler for [AWS Lambda](https://aws.amazon.com/lambda/)\n\n[![Build Status](https://travis-ci.org/koxudaxi/lambdantic.svg?branch=master)](https://travis-ci.org/koxudaxi/lambdantic)\n[![PyPI version](https://badge.fury.io/py/lambdantic.svg)](https://badge.fury.io/py/lambdantic)\n[![codecov](https://codecov.io/gh/koxudaxi/lambdantic/branch/master/graph/badge.svg)](https://codecov.io/gh/koxudaxi/lambdantic)\n\n\n## This project is an experimental phase.\n\n## What is Lambdantic ?\nThe name means [AWS Lambda](https://aws.amazon.com/lambda/) + [pydantic](https://github.com/samuelcolvin/pydantic)\n\n`lambdantic` dispatch handler function from aws lambda events and to assign attributes from event object.\n\n## Installation\n\nTo install `lambdantic`:\n```sh\n$ pip install lambdantic\n```\n\n## Example\n### API Gateway\nThe example is simple api which is invoked by API Gateway.\n\n`lambdantic` parse [Lambda Proxy Integration](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html) request.\n\nThe example should be deployed by [Serverless](https://serverless.com/), [AWS CDK](https://github.com/aws/aws-cdk) or other framework which supports [Lambda Proxy Integration](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html).\n\n```python\n# handler.py\nfrom typing import List, Optional\n\nfrom pydantic import BaseModel, Schema\n\nfrom lambdantic.apigateway import Handler\n\nhandler = Handler()\n\n\nclass Pet(BaseModel):\n pet_id: Optional[int] = Schema(..., alias='id')\n name: str\n age: int\n\n\n# database\npets = [\n Pet(id=1, name='dog', age=3),\n Pet(id=2, name='cat', age=2)\n ]\n\n\n@handler.get('/pets')\ndef get_pets() -> List[Pet]:\n return pets\n\n\n@handler.get('/pets/')\ndef get_pet(pet_id: int) -> Pet:\n for pet in pets:\n if pet.pet_id == pet_id:\n return pet\n\n\n@handler.post('/pets', body_model=Pet, status_code=201)\ndef crate_pet(pet: Pet) -> Pet:\n pet.pet_id = max(p.pet_id for p in pets)\n pets.append(pet)\n\n return pet\n```\n\nIf you use Serverless then, the handler is defined like this example.\n```yaml\nfunctions:\n pet:\n handler: handler.handler\n events:\n - http:\n method: any\n path: /{proxy+}\n```\n\nI show common parameters for Other framework \n```\nHandler: handler.handler\nAPI Gateway API integration type : Lambda Proxy Integration\nPath: /{proxy+}\nmethod: ANY\n```\n\n## Implemented\n- API Gateway (WIP)\n\n## Not Implemented\n- S3\n- SNS\n... and more\n\n\n## Development\n\nInstall the package in editable mode:\n\n```sh\n$ git clone git@github.com:koxudaxi/lambdantic.git\n$ pip install -e lambdantic\n```\n\n## PyPi \n\n[https://pypi.org/project/lambdantic](https://pypi.org/project/lambdantic)\n\n## Source Code\n\n[https://github.com/koxudaxi/lambdantic](https://github.com/koxudaxi/lambdantic)\n\n## Documentation\n\n[https://koxudaxi.github.io/lambdantic](https://koxudaxi.github.io/lambdantic)\n\n## License\n\nlambdantic is released under the MIT License. http://www.opensource.org/licenses/mit-license\n\n\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/koxudaxi/lambdantic/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "lambdantic", "package_url": "https://pypi.org/project/lambdantic/", "platform": "", "project_url": "https://pypi.org/project/lambdantic/", "project_urls": { "Homepage": "https://github.com/koxudaxi/lambdantic/" }, "release_url": "https://pypi.org/project/lambdantic/0.0.2/", "requires_dist": [ "pydantic[email,ujson] (==0.32.0)", "pytest-runner ; extra == 'all'", "setuptools-scm ; extra == 'all'", "pytest ; extra == 'all'", "pytest-benchmark ; extra == 'all'", "pytest-cov ; extra == 'all'", "pytest-mock ; extra == 'all'", "mypy ; extra == 'all'", "isort ; extra == 'all'", "freezegun ; extra == 'all'", "black ; extra == 'all'", "mkdocs ; extra == 'all'", "mkdocs-material ; extra == 'all'", "wheel ; extra == 'all'", "twine ; extra == 'all'", "codecov ; extra == 'all'", "codecov ; extra == 'ci'", "mkdocs ; extra == 'docs'", "mkdocs-material ; extra == 'docs'", "pytest-runner ; extra == 'setup'", "setuptools-scm ; extra == 'setup'", "pytest ; extra == 'test'", "pytest-benchmark ; extra == 'test'", "pytest-cov ; extra == 'test'", "pytest-mock ; extra == 'test'", "mypy ; extra == 'test'", "isort ; extra == 'test'", "freezegun ; extra == 'test'", "black ; extra == 'test'", "wheel ; extra == 'wheel'", "twine ; extra == 'wheel'" ], "requires_python": ">=3.7.0", "summary": "Pydantic model and lambda event handler for AWS Lambda", "version": "0.0.2" }, "last_serial": 5799756, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8496cfcb0b2c69503832138ed6e5db76", "sha256": "0432d53c2bbb3bb62e8236fe4f692f4fbadf06238b4197cd95904f0b81fb44da" }, "downloads": -1, "filename": "lambdantic-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8496cfcb0b2c69503832138ed6e5db76", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 8303, "upload_time": "2019-09-08T15:57:19", "url": "https://files.pythonhosted.org/packages/d3/72/1b8bdf8b3561fcd0828f094d70fd4ba87ff7aa4192078d1eaa78d0637363/lambdantic-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39909151bf2c71e98f6a3514cdaa997a", "sha256": "fd774d27c4ce86d21fd714ce0ed17fc7d1ecef99ed0fe7bc4b02f7b7dbbe092a" }, "downloads": -1, "filename": "lambdantic-0.0.1.tar.gz", "has_sig": false, "md5_digest": "39909151bf2c71e98f6a3514cdaa997a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 10909, "upload_time": "2019-09-08T15:57:21", "url": "https://files.pythonhosted.org/packages/42/00/6ca9bb224803dbd9004a25cacd969b5d65da85c997b84be96dbec219ad9a/lambdantic-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a99504209c5811b37aaae8f6ff3739e7", "sha256": "d6bae5e6aeac7f165c90c2cf65e03b891e8ab4418fa9cff9a47ad85f2d9e3e45" }, "downloads": -1, "filename": "lambdantic-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a99504209c5811b37aaae8f6ff3739e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 8275, "upload_time": "2019-09-08T16:15:59", "url": "https://files.pythonhosted.org/packages/b8/a2/cb279ebf2c3e21867c9a42d0903073d482970cd1c85c07e4d2053e29e4db/lambdantic-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18fd9882656bbf24b806bc997379f593", "sha256": "6f79f1d585318ec2ee154191f3aaedbf8264ad69880ed6ac3e52fe1c56c8c81c" }, "downloads": -1, "filename": "lambdantic-0.0.2.tar.gz", "has_sig": false, "md5_digest": "18fd9882656bbf24b806bc997379f593", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 10863, "upload_time": "2019-09-08T16:16:01", "url": "https://files.pythonhosted.org/packages/bc/ba/0e0e8581a0007f0dd7779ace1951b04876c65ff89d69bb7f542ad09bd35a/lambdantic-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a99504209c5811b37aaae8f6ff3739e7", "sha256": "d6bae5e6aeac7f165c90c2cf65e03b891e8ab4418fa9cff9a47ad85f2d9e3e45" }, "downloads": -1, "filename": "lambdantic-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a99504209c5811b37aaae8f6ff3739e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 8275, "upload_time": "2019-09-08T16:15:59", "url": "https://files.pythonhosted.org/packages/b8/a2/cb279ebf2c3e21867c9a42d0903073d482970cd1c85c07e4d2053e29e4db/lambdantic-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18fd9882656bbf24b806bc997379f593", "sha256": "6f79f1d585318ec2ee154191f3aaedbf8264ad69880ed6ac3e52fe1c56c8c81c" }, "downloads": -1, "filename": "lambdantic-0.0.2.tar.gz", "has_sig": false, "md5_digest": "18fd9882656bbf24b806bc997379f593", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 10863, "upload_time": "2019-09-08T16:16:01", "url": "https://files.pythonhosted.org/packages/bc/ba/0e0e8581a0007f0dd7779ace1951b04876c65ff89d69bb7f542ad09bd35a/lambdantic-0.0.2.tar.gz" } ] }