easylambda


Nameeasylambda JSON
Version 0.2.2 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2025-07-24 23:45:26
maintainerNone
docs_urlNone
authorLeandro Lima
requires_python<4.0,>=3.12
licenseMIT
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"
}
        
Elapsed time: 1.47577s