Metadata-Version: 2.1
Name: awsync
Version: 0.3.0
Summary: An asynchronous, fully-typed AWS API library with a focus on being understandable, reliable, and maintainable.
Home-page: https://github.com/JKCT/awsync
License: Apache-2.0
Keywords: aws,async,boto,request,sdk,typed
Author: JKCT
Author-email: jkct@visceralfx.com
Requires-Python: >=3.8,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Dist: httpx (>=0.27.0,<0.28.0)
Project-URL: Repository, https://github.com/JKCT/awsync
Description-Content-Type: text/markdown

# awsync

![CICD](https://github.com/JKCT/awsync/actions/workflows/cicd.yaml/badge.svg)

An asynchronous, fully-typed AWS API library with a focus on being understandable, reliable, and maintainable.

**NOTE: Currently a work in progress!**
Only a few API methods currently implemented for testing and development.

## Usage

```python
"Module main."
from asyncio import run
from httpx import AsyncClient

from awsync.client import Client
from awsync.models.aws import Region, Credentials


async def main() -> int:
    "Main function."
    async with AsyncClient() as httpx_client:
        client = Client(
            credentials=Credentials.from_environment(),
            httpx_client=httpx_client,
        )
        response = await client.list_stack_resources(
            region=Region.us_east_1, stack_name="Example-Stack-Name"
        )
        print(response)
    return 0


if __name__ == "__main__":
    run(main())
```

## Local Developer Setup

Requirements:

- [make](https://www.gnu.org/software/make/)
- [python3](https://www.python.org/)
- [poetry](https://python-poetry.org/)

### Package Management

- `make init` install/update dependencies, alias for `poetry install --sync`.
- `poetry add` add a dependency ie. `poetry add pydantic`.
- `poetry add -D` add a development dependency ie. `poetry add -D black`.
- `poetry remove` remove a dependency ie. `poetry remove pydantic`.
- `poetry shell` activate the python virtual environment.
- `exit` exit the python virtual environment.

### Repository Mangement

- `make run` runs the main module.
- `make pr` runs all pull request pre-checks below.
- `make format` runs code formatter.
- `make lint` checks code linting.
- `make test` runs tests.

## Repository TODO:

- Code generation [from JSON](https://github.com/boto/botocore/tree/develop/botocore/data)
- Automatic Publish CICD
- Documentation with [mkDocs](https://squidfunk.github.io/mkdocs-material/)
- Test Makefile replacements
  - [mise](https://mise.jdx.dev/)
  - [Poetry run](https://python-poetry.org/docs/cli/#run)
  - [doit](https://pydoit.org/)

