Name | easylambda JSON |
Version |
0.2.2
JSON |
| download |
home_page | None |
Summary | None |
upload_time | 2025-07-24 23:45:26 |
maintainer | None |
docs_url | None |
author | Leandro Lima |
requires_python | <4.0,>=3.12 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# EasyLambda
A lightweight, FastAPI-inspired framework for building AWS Lambda functions with Python.
## Installation
You can install the library using pip:
```bash
pip install easylambda
```
## Quick Start
```python
from easylambda import get
@get("/")
def lambda_handler() -> dict:
return {"message": "Hello World!"}
```
## Features
### Request Parameters
EasyLambda supports various ways to handle request parameters:
#### Path Parameters
```python
from typing import Annotated
from easylambda import get
from easylambda.path import Path
@get("/items/{item_id}")
def lambda_handler(item_id: Annotated[int, Path("item_id")]) -> dict:
return {"item_id": item_id}
```
#### Query Parameters
```python
from typing import Annotated
from easylambda import get
from easylambda.query import Query
items = [
{"item_name": "Foo"},
{"item_name": "Bar"},
{"item_name": "Baz"},
]
@get("/items")
def lambda_handler(
skip: Annotated[int, Query("skip")] = 0,
limit: Annotated[int, Query("limit")] = 10,
) -> list[dict]:
return items[skip : skip + limit]
```
#### Request Body
```python
from typing import Annotated
from easylambda import post
from easylambda.body import Body
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
@post("/items")
def lambda_handler(item: Annotated[Item, Body]) -> dict:
return item.model_dump()
```
#### Headers
```python
from typing import Annotated
from easylambda import get
from easylambda.header import Header
@get("/items")
def lambda_handler(
user_agent: Annotated[str | None, Header("user-agent")] = None,
) -> dict:
return {"User-Agent": user_agent}
```
### Response Handling
EasyLambda provides flexible response handling options:
#### Dictionary Response
The simplest way to return a response:
```python
from easylambda import get
@get("/")
def lambda_handler() -> dict:
return {"message": "Hello World!"}
```
#### Pydantic Model Response
For type-safe responses:
```python
from easylambda import get
from pydantic import BaseModel
class HandlerResponse(BaseModel):
message: str
@get("/")
def lambda_handler() -> HandlerResponse:
return HandlerResponse(message="Hello World!")
```
#### Custom Response
For full control over the response:
```python
from easylambda import get
from easylambda.aws import Response
@get("/")
def lambda_handler() -> Response:
return Response(
statusCode=418,
body="I'm a teapot",
)
```
## Key Features
- FastAPI-inspired syntax
- Type hints and validation using Pydantic
- Support for path parameters, query parameters, request body, and headers
- Flexible response handling
- Lightweight and optimized for AWS Lambda environment
- No heavy web framework dependencies
## Best Practices
1. Use type hints consistently for better code clarity and automatic validation
2. Leverage Pydantic models for request/response validation
3. Keep functions focused and single-purpose
4. Use meaningful parameter names that match your API design
5. Provide default values for optional parameters
## Limitations
- When using as a Lambda Layer:
- Only available in us-east-2 region
- Requires Python 3.11 or 3.12
- Must be used as a Lambda Layer
## Contributing
The project is available on GitHub at: https://github.com/leandropls/easylambda
Raw data
{
"_id": null,
"home_page": null,
"name": "easylambda",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": null,
"author": "Leandro Lima",
"author_email": "leandro@lls-software.com",
"download_url": "https://files.pythonhosted.org/packages/42/3d/103c8494231deba0020ad77f5663229389501445fcec7a980a740411ca99/easylambda-0.2.2.tar.gz",
"platform": null,
"description": "# EasyLambda\n\nA lightweight, FastAPI-inspired framework for building AWS Lambda functions with Python.\n\n## Installation\n\nYou can install the library using pip:\n\n```bash\npip install easylambda\n```\n\n## Quick Start\n\n```python\nfrom easylambda import get\n\n@get(\"/\")\ndef lambda_handler() -> dict:\n return {\"message\": \"Hello World!\"}\n```\n\n## Features\n\n### Request Parameters\n\nEasyLambda supports various ways to handle request parameters:\n\n#### Path Parameters\n\n```python\nfrom typing import Annotated\nfrom easylambda import get\nfrom easylambda.path import Path\n\n@get(\"/items/{item_id}\")\ndef lambda_handler(item_id: Annotated[int, Path(\"item_id\")]) -> dict:\n return {\"item_id\": item_id}\n```\n\n#### Query Parameters\n\n```python\nfrom typing import Annotated\nfrom easylambda import get\nfrom easylambda.query import Query\n\nitems = [\n {\"item_name\": \"Foo\"},\n {\"item_name\": \"Bar\"},\n {\"item_name\": \"Baz\"},\n]\n\n\n@get(\"/items\")\ndef lambda_handler(\n skip: Annotated[int, Query(\"skip\")] = 0,\n limit: Annotated[int, Query(\"limit\")] = 10,\n) -> list[dict]:\n return items[skip : skip + limit]\n```\n\n#### Request Body\n\n```python\nfrom typing import Annotated\nfrom easylambda import post\nfrom easylambda.body import Body\nfrom pydantic import BaseModel\n\nclass Item(BaseModel):\n name: str\n description: str | None = None\n price: float\n tax: float | None = None\n\n@post(\"/items\")\ndef lambda_handler(item: Annotated[Item, Body]) -> dict:\n return item.model_dump()\n```\n\n#### Headers\n\n```python\nfrom typing import Annotated\nfrom easylambda import get\nfrom easylambda.header import Header\n\n@get(\"/items\")\ndef lambda_handler(\n user_agent: Annotated[str | None, Header(\"user-agent\")] = None,\n) -> dict:\n return {\"User-Agent\": user_agent}\n```\n\n### Response Handling\n\nEasyLambda provides flexible response handling options:\n\n#### Dictionary Response\n\nThe simplest way to return a response:\n\n```python\nfrom easylambda import get\n\n@get(\"/\")\ndef lambda_handler() -> dict:\n return {\"message\": \"Hello World!\"}\n```\n\n#### Pydantic Model Response\n\nFor type-safe responses:\n\n```python\nfrom easylambda import get\nfrom pydantic import BaseModel\n\nclass HandlerResponse(BaseModel):\n message: str\n\n@get(\"/\")\ndef lambda_handler() -> HandlerResponse:\n return HandlerResponse(message=\"Hello World!\")\n```\n\n#### Custom Response\n\nFor full control over the response:\n\n```python\nfrom easylambda import get\nfrom easylambda.aws import Response\n\n@get(\"/\")\ndef lambda_handler() -> Response:\n return Response(\n statusCode=418,\n body=\"I'm a teapot\",\n )\n```\n\n## Key Features\n\n- FastAPI-inspired syntax\n- Type hints and validation using Pydantic\n- Support for path parameters, query parameters, request body, and headers\n- Flexible response handling\n- Lightweight and optimized for AWS Lambda environment\n- No heavy web framework dependencies\n\n## Best Practices\n\n1. Use type hints consistently for better code clarity and automatic validation\n2. Leverage Pydantic models for request/response validation\n3. Keep functions focused and single-purpose\n4. Use meaningful parameter names that match your API design\n5. Provide default values for optional parameters\n\n## Limitations\n\n- When using as a Lambda Layer:\n - Only available in us-east-2 region\n - Requires Python 3.11 or 3.12\n - Must be used as a Lambda Layer\n\n## Contributing\n\nThe project is available on GitHub at: https://github.com/leandropls/easylambda",
"bugtrack_url": null,
"license": "MIT",
"summary": null,
"version": "0.2.2",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7d670ae0bc28e97f059f2986a1bf67e1fe5778b5bd81da34c002d0d0f352a5fb",
"md5": "16c57a66002eb220e0bdc58024ce2a68",
"sha256": "68a48aa1cdfa511cfd2d48e3321b95caa2d476d66faa46c17978068668f61df2"
},
"downloads": -1,
"filename": "easylambda-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "16c57a66002eb220e0bdc58024ce2a68",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 10353,
"upload_time": "2025-07-24T23:45:25",
"upload_time_iso_8601": "2025-07-24T23:45:25.276917Z",
"url": "https://files.pythonhosted.org/packages/7d/67/0ae0bc28e97f059f2986a1bf67e1fe5778b5bd81da34c002d0d0f352a5fb/easylambda-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "423d103c8494231deba0020ad77f5663229389501445fcec7a980a740411ca99",
"md5": "73fba056fdd953ce46b3517f52d20817",
"sha256": "6e709c32a257bdce8112583516e44bdfff01ec1911f56c343005fed13d8e5088"
},
"downloads": -1,
"filename": "easylambda-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "73fba056fdd953ce46b3517f52d20817",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 6685,
"upload_time": "2025-07-24T23:45:26",
"upload_time_iso_8601": "2025-07-24T23:45:26.235809Z",
"url": "https://files.pythonhosted.org/packages/42/3d/103c8494231deba0020ad77f5663229389501445fcec7a980a740411ca99/easylambda-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-24 23:45:26",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "easylambda"
}