py-serverless-kit 0.1.0__tar.gz → 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/CHANGELOG.md +34 -20
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/PKG-INFO +47 -41
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/README.md +42 -36
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/deploy_docs/CONTRIBUTING.md +2 -2
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/02-rest-api/app/handlers.py +1 -1
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/pyproject.toml +4 -4
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/_version.py +1 -1
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/.gitignore +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/CONTRIBUTING.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/LICENSE +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/architecture.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/cli.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/configuration.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/dashboard.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/events.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/getting-started.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/handlers.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/local-development.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/migrating-from-aws.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/providers.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/troubleshooting.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/docs/workflows.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/01-hello-http/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/01-hello-http/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/01-hello-http/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/01-hello-http/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/01-hello-http/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/02-rest-api/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/02-rest-api/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/02-rest-api/app/store.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/02-rest-api/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/02-rest-api/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/app/jobs.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/app/worker.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/app/files.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/app/subscribers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/app/orders.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/events/b2b.json +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/events/declined.json +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/events/happy.json +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/pskit.aws.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/pskit.azure.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/pskit.gcp.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/app/quotes.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/.env.example +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/app/settings.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/config/limits.json +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/app/repository.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/scripts/smoke_test.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/tests/test_orders.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/12-async-and-context/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/12-async-and-context/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/12-async-and-context/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/12-async-and-context/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/12-async-and-context/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/after/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/after/app/orders.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/after/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/after/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/before/lambda_function.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/before/state_machine.asl.json +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/13-migrate-from-aws-lambda/before/template.yaml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/ci.github-workflow.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/tests/conftest.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/tests/test_handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/14-testing/tests/test_workflow.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/15-ci-cd-deploy/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/15-ci-cd-deploy/app/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/15-ci-cd-deploy/app/handlers.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/15-ci-cd-deploy/deploy.github-workflow.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/15-ci-cd-deploy/pskit.yml +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/15-ci-cd-deploy/requirements.txt +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/README.md +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/__main__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/cli/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/cli/main.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/cli/templates.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/config/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/config/loader.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/config/schema.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/core/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/core/deployer.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/core/describe.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/core/project.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/dashboard/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/dashboard/generator.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/dashboard/template.html +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/local/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/local/runner.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/local/server.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/packaging/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/packaging/builder.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/alibaba.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/aws.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/azure.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/base.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/cloudflare.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/digitalocean.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/gcp.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/huawei.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/ibm.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/oracle.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/registry.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/schedule.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/tencent.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/providers/terraform_doc.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/_httpfn.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/alibaba.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/aws.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/azure.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/base.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/cloudflare.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/digitalocean.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/gcp.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/huawei.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/ibm.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/oracle.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/adapters/tencent.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/batch.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/context.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/dispatch.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/errors.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/event.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/invoke.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/log.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/manifest.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/response.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/routing.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/runtime/workflow.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/terraform/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/terraform/runner.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/workflows/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/workflows/asl.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/src/py_serverless_kit/workflows/gcp.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/config/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/config/test_loader.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/config/test_schema.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/conftest.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/local/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/local/test_server.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_alibaba.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_aws.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_azure.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_cloudflare.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_digitalocean.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_gcp.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_huawei.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_ibm.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_oracle.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_schedule.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/providers/test_tencent.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_alibaba.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_aws.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_azure.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_cloudflare.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_digitalocean.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_gcp.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_huawei.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_ibm.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_oracle.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_adapter_tencent.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_dispatch.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_models.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/runtime/test_workflow_engine.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/test_cli.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/test_dashboard.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/test_examples.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/test_packaging.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/workflows/__init__.py +0 -0
- {py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/tests/workflows/test_compilers.py +0 -0
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses [Semantic Versioning](https://semver.org/).
|
|
4
|
-
|
|
5
|
-
> The function runtime is bundled into every deployment. After upgrading `py-serverless-kit`, run `pskit deploy` again to pick up runtime fixes.
|
|
6
|
-
|
|
7
|
-
## [Unreleased]
|
|
8
|
-
|
|
9
|
-
## [0.1.
|
|
10
|
-
|
|
11
|
-
###
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses [Semantic Versioning](https://semver.org/).
|
|
4
|
+
|
|
5
|
+
> The function runtime is bundled into every deployment. After upgrading `py-serverless-kit`, run `pskit deploy` again to pick up runtime fixes.
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.1.1] - 2026-10-15
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Author and maintainer set to Asif Khan @ Kavion.ai (`py_serverless_kit.__author__`, package metadata, LICENSE).
|
|
13
|
+
- Project URLs (homepage, docs, issues, changelog) now point to https://github.com/ak9347128658/serverless_kit.
|
|
14
|
+
- README links are absolute so they work on the PyPI project page; added CI/PyPI/license badges.
|
|
15
|
+
- `scripts/validate_all_providers.py` explains that Terraform is optional instead of printing a traceback when it isn't installed.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- `deploy_docs/How_to_deploy.md`: short PyPI release guide with PowerShell commands and troubleshooting (e.g. TestPyPI `403`).
|
|
19
|
+
- `deploy_docs/HOW_TO_INSTALL_TERRAFORM.md`: installing Terraform on Windows.
|
|
20
|
+
|
|
21
|
+
No runtime changes: functions deployed with 0.1.0 don't need to be redeployed.
|
|
22
|
+
|
|
23
|
+
## [0.1.0] - 2026-10-15
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- Portable handler API: `Event`, `HttpRequest`, `Record`, `Headers`, `Context`, `Response`, HTTP error classes, `BatchResult`, `invoke()`.
|
|
27
|
+
- `pskit.yml` configuration with `extends:`, `providers:` and `stages:` overrides, and `${env:}`, `${opt:}`, `${self:}`, `${file()}` and `${tf:}` variables.
|
|
28
|
+
- Providers: AWS (stable), Google Cloud (stable), Azure (stable), Alibaba Cloud (beta), Huawei Cloud (beta), Tencent Cloud (beta), DigitalOcean (beta), IBM Cloud (beta), Oracle Cloud (experimental), Cloudflare Workers (experimental).
|
|
29
|
+
- Triggers: HTTP (path params, CORS, auth), schedule (rate/cron), queue, storage, topic.
|
|
30
|
+
- Workflows: native AWS Step Functions and Google Cloud Workflows compilers, plus an embedded engine for the other providers and local runs.
|
|
31
|
+
- CLI: `init`, `validate`, `package`, `plan`, `deploy`, `remove`, `info`, `dashboard`, `dev`, `invoke`, `workflow run|show`, `providers`, `tf`.
|
|
32
|
+
- Deployment dashboard (self-contained HTML).
|
|
33
|
+
- Local dev server with hot reload, and `LocalRunner` for tests.
|
|
34
|
+
- `scripts/validate_all_providers.py`, which runs `terraform validate` for every provider.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: py-serverless-kit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Write a Python serverless function once and deploy it to AWS, Azure, GCP and 7 more clouds with one YAML file, powered by Terraform.
|
|
5
|
-
Project-URL: Homepage, https://github.com/
|
|
6
|
-
Project-URL: Documentation, https://github.com/
|
|
7
|
-
Project-URL: Issues, https://github.com/
|
|
8
|
-
Project-URL: Changelog, https://github.com/
|
|
5
|
+
Project-URL: Homepage, https://github.com/ak9347128658/serverless_kit
|
|
6
|
+
Project-URL: Documentation, https://github.com/ak9347128658/serverless_kit/tree/main/docs
|
|
7
|
+
Project-URL: Issues, https://github.com/ak9347128658/serverless_kit/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/ak9347128658/serverless_kit/blob/main/CHANGELOG.md
|
|
9
9
|
Author: Asif Khan @ Kavion.ai
|
|
10
10
|
Maintainer: Asif Khan @ Kavion.ai
|
|
11
11
|
License: MIT
|
|
@@ -44,6 +44,10 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
|
|
45
45
|
# py-serverless-kit
|
|
46
46
|
|
|
47
|
+
[](https://github.com/ak9347128658/serverless_kit/actions/workflows/ci.yml)
|
|
48
|
+
[](https://pypi.org/project/py-serverless-kit/)
|
|
49
|
+
[](https://github.com/ak9347128658/serverless_kit/blob/main/LICENSE)
|
|
50
|
+
|
|
47
51
|
**Write your Python functions once. Deploy them to any of 10 clouds by changing one line of YAML.**
|
|
48
52
|
|
|
49
53
|
`py-serverless-kit` (CLI: `pskit`) is a Serverless-Framework-style toolkit built on **Terraform**. Your handlers use one small, provider-neutral API (`Event`, `Context`, `Response`). A `pskit.yml` file says which cloud they run on and what triggers them: HTTP, schedules, queues, storage, topics. The same file can also define workflows in the style of Step Functions. `pskit deploy` generates Terraform for the chosen cloud, applies it, and builds an HTML dashboard of everything you deployed.
|
|
@@ -119,7 +123,7 @@ Teams that build on AWS Lambda and Step Functions end up with code full of API G
|
|
|
119
123
|
|
|
120
124
|
Run `pskit providers` for the live matrix. If a config uses a trigger the target cloud can't support, **`pskit validate` fails with a clear message instead of deploying something half-working.**
|
|
121
125
|
|
|
122
|
-
> **Maturity, honestly stated:** the Terraform generated for every provider is checked with `terraform validate` against the real provider plugins (in CI, too). The *stable* providers cover the most surface area. *beta* and *experimental* providers follow vendor docs for event payloads that `validate` can't check, so try them on a non-production account first. See [docs/providers.md](docs/providers.md) for each provider's details and limits.
|
|
126
|
+
> **Maturity, honestly stated:** the Terraform generated for every provider is checked with `terraform validate` against the real provider plugins (in CI, too). The *stable* providers cover the most surface area. *beta* and *experimental* providers follow vendor docs for event payloads that `validate` can't check, so try them on a non-production account first. See [docs/providers.md](https://github.com/ak9347128658/serverless_kit/blob/main/docs/providers.md) for each provider's details and limits.
|
|
123
127
|
|
|
124
128
|
## Install
|
|
125
129
|
|
|
@@ -127,7 +131,7 @@ Run `pskit providers` for the live matrix. If a config uses a trigger the target
|
|
|
127
131
|
pip install py-serverless-kit
|
|
128
132
|
```
|
|
129
133
|
|
|
130
|
-
You also need **Terraform ≥ 1.5** (or OpenTofu) on your `PATH`, plus credentials for your cloud. See [Getting started](docs/getting-started.md#cloud-credentials).
|
|
134
|
+
You also need **Terraform ≥ 1.5** (or OpenTofu) on your `PATH`, plus credentials for your cloud. See [Getting started](https://github.com/ak9347128658/serverless_kit/blob/main/docs/getting-started.md#cloud-credentials).
|
|
131
135
|
|
|
132
136
|
## Quick start
|
|
133
137
|
|
|
@@ -243,58 +247,60 @@ The same definition becomes **AWS Step Functions** on AWS, **Google Cloud Workfl
|
|
|
243
247
|
your result ──► Response / raw value ──► adapter ──► native cloud response
|
|
244
248
|
```
|
|
245
249
|
|
|
246
|
-
More: [docs/architecture.md](docs/architecture.md).
|
|
250
|
+
More: [docs/architecture.md](https://github.com/ak9347128658/serverless_kit/blob/main/docs/architecture.md).
|
|
247
251
|
|
|
248
252
|
## Examples
|
|
249
253
|
|
|
250
|
-
Fifteen runnable scenarios live in [`examples/`](examples/). They are tested in CI.
|
|
254
|
+
Fifteen runnable scenarios live in [`examples/`](https://github.com/ak9347128658/serverless_kit/tree/main/examples/). They are tested in CI.
|
|
251
255
|
|
|
252
256
|
| | |
|
|
253
257
|
|---|---|
|
|
254
|
-
| [01-hello-http](examples/01-hello-http) | Minimal HTTP function |
|
|
255
|
-
| [02-rest-api](examples/02-rest-api) | CRUD, path params, validation errors, CORS, cookies, binary, JWT |
|
|
256
|
-
| [03-scheduled-jobs](examples/03-scheduled-jobs) | rate/cron schedules with input and time zones |
|
|
257
|
-
| [04-queue-worker](examples/04-queue-worker) | Queue consumer, partial batch failures, dead-letter queue |
|
|
258
|
-
| [05-storage-events](examples/05-storage-events) | Object created/deleted with filters |
|
|
259
|
-
| [06-pubsub-topic](examples/06-pubsub-topic) | Topic fan-out and filters |
|
|
260
|
-
| [07-workflow-orders](examples/07-workflow-orders) | Every workflow state type, retry/catch |
|
|
261
|
-
| [08-multi-cloud](examples/08-multi-cloud) | Same code, all 10 providers |
|
|
262
|
-
| [09-function-invoke](examples/09-function-invoke) | Function-to-function `invoke()` |
|
|
263
|
-
| [10-stages-and-config](examples/10-stages-and-config) | Stages, variables, secrets |
|
|
264
|
-
| [11-custom-terraform](examples/11-custom-terraform) | `terraform.extra`, `${tf:...}`, remote state, hooks |
|
|
265
|
-
| [12-async-and-context](examples/12-async-and-context) | async handlers, logging, deadlines |
|
|
266
|
-
| [13-migrate-from-aws-lambda](examples/13-migrate-from-aws-lambda) | Before/after migration of Lambda + Step Functions |
|
|
267
|
-
| [14-testing](examples/14-testing) | Unit-testing handlers and workflows with pytest |
|
|
268
|
-
| [15-ci-cd-deploy](examples/15-ci-cd-deploy) | GitHub Actions deploys per stage |
|
|
258
|
+
| [01-hello-http](https://github.com/ak9347128658/serverless_kit/tree/main/examples/01-hello-http) | Minimal HTTP function |
|
|
259
|
+
| [02-rest-api](https://github.com/ak9347128658/serverless_kit/tree/main/examples/02-rest-api) | CRUD, path params, validation errors, CORS, cookies, binary, JWT |
|
|
260
|
+
| [03-scheduled-jobs](https://github.com/ak9347128658/serverless_kit/tree/main/examples/03-scheduled-jobs) | rate/cron schedules with input and time zones |
|
|
261
|
+
| [04-queue-worker](https://github.com/ak9347128658/serverless_kit/tree/main/examples/04-queue-worker) | Queue consumer, partial batch failures, dead-letter queue |
|
|
262
|
+
| [05-storage-events](https://github.com/ak9347128658/serverless_kit/tree/main/examples/05-storage-events) | Object created/deleted with filters |
|
|
263
|
+
| [06-pubsub-topic](https://github.com/ak9347128658/serverless_kit/tree/main/examples/06-pubsub-topic) | Topic fan-out and filters |
|
|
264
|
+
| [07-workflow-orders](https://github.com/ak9347128658/serverless_kit/tree/main/examples/07-workflow-orders) | Every workflow state type, retry/catch |
|
|
265
|
+
| [08-multi-cloud](https://github.com/ak9347128658/serverless_kit/tree/main/examples/08-multi-cloud) | Same code, all 10 providers |
|
|
266
|
+
| [09-function-invoke](https://github.com/ak9347128658/serverless_kit/tree/main/examples/09-function-invoke) | Function-to-function `invoke()` |
|
|
267
|
+
| [10-stages-and-config](https://github.com/ak9347128658/serverless_kit/tree/main/examples/10-stages-and-config) | Stages, variables, secrets |
|
|
268
|
+
| [11-custom-terraform](https://github.com/ak9347128658/serverless_kit/tree/main/examples/11-custom-terraform) | `terraform.extra`, `${tf:...}`, remote state, hooks |
|
|
269
|
+
| [12-async-and-context](https://github.com/ak9347128658/serverless_kit/tree/main/examples/12-async-and-context) | async handlers, logging, deadlines |
|
|
270
|
+
| [13-migrate-from-aws-lambda](https://github.com/ak9347128658/serverless_kit/tree/main/examples/13-migrate-from-aws-lambda) | Before/after migration of Lambda + Step Functions |
|
|
271
|
+
| [14-testing](https://github.com/ak9347128658/serverless_kit/tree/main/examples/14-testing) | Unit-testing handlers and workflows with pytest |
|
|
272
|
+
| [15-ci-cd-deploy](https://github.com/ak9347128658/serverless_kit/tree/main/examples/15-ci-cd-deploy) | GitHub Actions deploys per stage |
|
|
269
273
|
|
|
270
274
|
## Documentation
|
|
271
275
|
|
|
272
276
|
| | |
|
|
273
277
|
|---|---|
|
|
274
|
-
| [Getting started](docs/getting-started.md) | Install, credentials, first deploy |
|
|
275
|
-
| [Configuration reference](docs/configuration.md) | Every `pskit.yml` key, variables, `extends`, stages |
|
|
276
|
-
| [Events](docs/events.md) | HTTP, schedule, queue, storage, topic, with a per-provider matrix |
|
|
277
|
-
| [Handler API](docs/handlers.md) | `Event`, `Context`, `Response`, errors, `BatchResult`, `invoke()` |
|
|
278
|
-
| [Workflows](docs/workflows.md) | State machine reference, engines, limitations |
|
|
279
|
-
| [Providers](docs/providers.md) | Options, credentials, resources and limits per cloud |
|
|
280
|
-
| [CLI](docs/cli.md) | Every command and flag |
|
|
281
|
-
| [Local development](docs/local-development.md) | `pskit dev`, `invoke`, testing |
|
|
282
|
-
| [Dashboard](docs/dashboard.md) | The deployment UI |
|
|
283
|
-
| [Architecture](docs/architecture.md) | Internals and third-party providers |
|
|
284
|
-
| [Migrating from AWS](docs/migrating-from-aws.md) | Lambda + Step Functions → pskit |
|
|
285
|
-
| [Troubleshooting](docs/troubleshooting.md) | Common errors and fixes |
|
|
278
|
+
| [Getting started](https://github.com/ak9347128658/serverless_kit/blob/main/docs/getting-started.md) | Install, credentials, first deploy |
|
|
279
|
+
| [Configuration reference](https://github.com/ak9347128658/serverless_kit/blob/main/docs/configuration.md) | Every `pskit.yml` key, variables, `extends`, stages |
|
|
280
|
+
| [Events](https://github.com/ak9347128658/serverless_kit/blob/main/docs/events.md) | HTTP, schedule, queue, storage, topic, with a per-provider matrix |
|
|
281
|
+
| [Handler API](https://github.com/ak9347128658/serverless_kit/blob/main/docs/handlers.md) | `Event`, `Context`, `Response`, errors, `BatchResult`, `invoke()` |
|
|
282
|
+
| [Workflows](https://github.com/ak9347128658/serverless_kit/blob/main/docs/workflows.md) | State machine reference, engines, limitations |
|
|
283
|
+
| [Providers](https://github.com/ak9347128658/serverless_kit/blob/main/docs/providers.md) | Options, credentials, resources and limits per cloud |
|
|
284
|
+
| [CLI](https://github.com/ak9347128658/serverless_kit/blob/main/docs/cli.md) | Every command and flag |
|
|
285
|
+
| [Local development](https://github.com/ak9347128658/serverless_kit/blob/main/docs/local-development.md) | `pskit dev`, `invoke`, testing |
|
|
286
|
+
| [Dashboard](https://github.com/ak9347128658/serverless_kit/blob/main/docs/dashboard.md) | The deployment UI |
|
|
287
|
+
| [Architecture](https://github.com/ak9347128658/serverless_kit/blob/main/docs/architecture.md) | Internals and third-party providers |
|
|
288
|
+
| [Migrating from AWS](https://github.com/ak9347128658/serverless_kit/blob/main/docs/migrating-from-aws.md) | Lambda + Step Functions → pskit |
|
|
289
|
+
| [Troubleshooting](https://github.com/ak9347128658/serverless_kit/blob/main/docs/troubleshooting.md) | Common errors and fixes |
|
|
286
290
|
|
|
287
291
|
## Contributing & releasing
|
|
288
292
|
|
|
289
|
-
- Contributor guide: [deploy_docs/CONTRIBUTING.md](deploy_docs/CONTRIBUTING.md)
|
|
290
|
-
- Quick PyPI release guide: [deploy_docs/How_to_deploy.md](deploy_docs/How_to_deploy.md)
|
|
291
|
-
- Publishing to PyPI (step by step): [deploy_docs/PUBLISHING_TO_PYPI.md](deploy_docs/PUBLISHING_TO_PYPI.md)
|
|
292
|
-
- Security policy: [SECURITY.md](SECURITY.md)
|
|
293
|
+
- Contributor guide: [deploy_docs/CONTRIBUTING.md](https://github.com/ak9347128658/serverless_kit/blob/main/deploy_docs/CONTRIBUTING.md)
|
|
294
|
+
- Quick PyPI release guide: [deploy_docs/How_to_deploy.md](https://github.com/ak9347128658/serverless_kit/blob/main/deploy_docs/How_to_deploy.md)
|
|
295
|
+
- Publishing to PyPI (step by step): [deploy_docs/PUBLISHING_TO_PYPI.md](https://github.com/ak9347128658/serverless_kit/blob/main/deploy_docs/PUBLISHING_TO_PYPI.md)
|
|
296
|
+
- Security policy: [SECURITY.md](https://github.com/ak9347128658/serverless_kit/blob/main/SECURITY.md)
|
|
293
297
|
|
|
294
298
|
## Author
|
|
295
299
|
|
|
296
300
|
Created and maintained by **Asif Khan @ [Kavion.ai](https://kavion.ai)**.
|
|
297
301
|
|
|
302
|
+
Source code, issues and releases: <https://github.com/ak9347128658/serverless_kit>
|
|
303
|
+
|
|
298
304
|
## License
|
|
299
305
|
|
|
300
|
-
MIT, see [LICENSE](LICENSE).
|
|
306
|
+
MIT, see [LICENSE](https://github.com/ak9347128658/serverless_kit/blob/main/LICENSE).
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# py-serverless-kit
|
|
2
2
|
|
|
3
|
+
[](https://github.com/ak9347128658/serverless_kit/actions/workflows/ci.yml)
|
|
4
|
+
[](https://pypi.org/project/py-serverless-kit/)
|
|
5
|
+
[](https://github.com/ak9347128658/serverless_kit/blob/main/LICENSE)
|
|
6
|
+
|
|
3
7
|
**Write your Python functions once. Deploy them to any of 10 clouds by changing one line of YAML.**
|
|
4
8
|
|
|
5
9
|
`py-serverless-kit` (CLI: `pskit`) is a Serverless-Framework-style toolkit built on **Terraform**. Your handlers use one small, provider-neutral API (`Event`, `Context`, `Response`). A `pskit.yml` file says which cloud they run on and what triggers them: HTTP, schedules, queues, storage, topics. The same file can also define workflows in the style of Step Functions. `pskit deploy` generates Terraform for the chosen cloud, applies it, and builds an HTML dashboard of everything you deployed.
|
|
@@ -75,7 +79,7 @@ Teams that build on AWS Lambda and Step Functions end up with code full of API G
|
|
|
75
79
|
|
|
76
80
|
Run `pskit providers` for the live matrix. If a config uses a trigger the target cloud can't support, **`pskit validate` fails with a clear message instead of deploying something half-working.**
|
|
77
81
|
|
|
78
|
-
> **Maturity, honestly stated:** the Terraform generated for every provider is checked with `terraform validate` against the real provider plugins (in CI, too). The *stable* providers cover the most surface area. *beta* and *experimental* providers follow vendor docs for event payloads that `validate` can't check, so try them on a non-production account first. See [docs/providers.md](docs/providers.md) for each provider's details and limits.
|
|
82
|
+
> **Maturity, honestly stated:** the Terraform generated for every provider is checked with `terraform validate` against the real provider plugins (in CI, too). The *stable* providers cover the most surface area. *beta* and *experimental* providers follow vendor docs for event payloads that `validate` can't check, so try them on a non-production account first. See [docs/providers.md](https://github.com/ak9347128658/serverless_kit/blob/main/docs/providers.md) for each provider's details and limits.
|
|
79
83
|
|
|
80
84
|
## Install
|
|
81
85
|
|
|
@@ -83,7 +87,7 @@ Run `pskit providers` for the live matrix. If a config uses a trigger the target
|
|
|
83
87
|
pip install py-serverless-kit
|
|
84
88
|
```
|
|
85
89
|
|
|
86
|
-
You also need **Terraform ≥ 1.5** (or OpenTofu) on your `PATH`, plus credentials for your cloud. See [Getting started](docs/getting-started.md#cloud-credentials).
|
|
90
|
+
You also need **Terraform ≥ 1.5** (or OpenTofu) on your `PATH`, plus credentials for your cloud. See [Getting started](https://github.com/ak9347128658/serverless_kit/blob/main/docs/getting-started.md#cloud-credentials).
|
|
87
91
|
|
|
88
92
|
## Quick start
|
|
89
93
|
|
|
@@ -199,58 +203,60 @@ The same definition becomes **AWS Step Functions** on AWS, **Google Cloud Workfl
|
|
|
199
203
|
your result ──► Response / raw value ──► adapter ──► native cloud response
|
|
200
204
|
```
|
|
201
205
|
|
|
202
|
-
More: [docs/architecture.md](docs/architecture.md).
|
|
206
|
+
More: [docs/architecture.md](https://github.com/ak9347128658/serverless_kit/blob/main/docs/architecture.md).
|
|
203
207
|
|
|
204
208
|
## Examples
|
|
205
209
|
|
|
206
|
-
Fifteen runnable scenarios live in [`examples/`](examples/). They are tested in CI.
|
|
210
|
+
Fifteen runnable scenarios live in [`examples/`](https://github.com/ak9347128658/serverless_kit/tree/main/examples/). They are tested in CI.
|
|
207
211
|
|
|
208
212
|
| | |
|
|
209
213
|
|---|---|
|
|
210
|
-
| [01-hello-http](examples/01-hello-http) | Minimal HTTP function |
|
|
211
|
-
| [02-rest-api](examples/02-rest-api) | CRUD, path params, validation errors, CORS, cookies, binary, JWT |
|
|
212
|
-
| [03-scheduled-jobs](examples/03-scheduled-jobs) | rate/cron schedules with input and time zones |
|
|
213
|
-
| [04-queue-worker](examples/04-queue-worker) | Queue consumer, partial batch failures, dead-letter queue |
|
|
214
|
-
| [05-storage-events](examples/05-storage-events) | Object created/deleted with filters |
|
|
215
|
-
| [06-pubsub-topic](examples/06-pubsub-topic) | Topic fan-out and filters |
|
|
216
|
-
| [07-workflow-orders](examples/07-workflow-orders) | Every workflow state type, retry/catch |
|
|
217
|
-
| [08-multi-cloud](examples/08-multi-cloud) | Same code, all 10 providers |
|
|
218
|
-
| [09-function-invoke](examples/09-function-invoke) | Function-to-function `invoke()` |
|
|
219
|
-
| [10-stages-and-config](examples/10-stages-and-config) | Stages, variables, secrets |
|
|
220
|
-
| [11-custom-terraform](examples/11-custom-terraform) | `terraform.extra`, `${tf:...}`, remote state, hooks |
|
|
221
|
-
| [12-async-and-context](examples/12-async-and-context) | async handlers, logging, deadlines |
|
|
222
|
-
| [13-migrate-from-aws-lambda](examples/13-migrate-from-aws-lambda) | Before/after migration of Lambda + Step Functions |
|
|
223
|
-
| [14-testing](examples/14-testing) | Unit-testing handlers and workflows with pytest |
|
|
224
|
-
| [15-ci-cd-deploy](examples/15-ci-cd-deploy) | GitHub Actions deploys per stage |
|
|
214
|
+
| [01-hello-http](https://github.com/ak9347128658/serverless_kit/tree/main/examples/01-hello-http) | Minimal HTTP function |
|
|
215
|
+
| [02-rest-api](https://github.com/ak9347128658/serverless_kit/tree/main/examples/02-rest-api) | CRUD, path params, validation errors, CORS, cookies, binary, JWT |
|
|
216
|
+
| [03-scheduled-jobs](https://github.com/ak9347128658/serverless_kit/tree/main/examples/03-scheduled-jobs) | rate/cron schedules with input and time zones |
|
|
217
|
+
| [04-queue-worker](https://github.com/ak9347128658/serverless_kit/tree/main/examples/04-queue-worker) | Queue consumer, partial batch failures, dead-letter queue |
|
|
218
|
+
| [05-storage-events](https://github.com/ak9347128658/serverless_kit/tree/main/examples/05-storage-events) | Object created/deleted with filters |
|
|
219
|
+
| [06-pubsub-topic](https://github.com/ak9347128658/serverless_kit/tree/main/examples/06-pubsub-topic) | Topic fan-out and filters |
|
|
220
|
+
| [07-workflow-orders](https://github.com/ak9347128658/serverless_kit/tree/main/examples/07-workflow-orders) | Every workflow state type, retry/catch |
|
|
221
|
+
| [08-multi-cloud](https://github.com/ak9347128658/serverless_kit/tree/main/examples/08-multi-cloud) | Same code, all 10 providers |
|
|
222
|
+
| [09-function-invoke](https://github.com/ak9347128658/serverless_kit/tree/main/examples/09-function-invoke) | Function-to-function `invoke()` |
|
|
223
|
+
| [10-stages-and-config](https://github.com/ak9347128658/serverless_kit/tree/main/examples/10-stages-and-config) | Stages, variables, secrets |
|
|
224
|
+
| [11-custom-terraform](https://github.com/ak9347128658/serverless_kit/tree/main/examples/11-custom-terraform) | `terraform.extra`, `${tf:...}`, remote state, hooks |
|
|
225
|
+
| [12-async-and-context](https://github.com/ak9347128658/serverless_kit/tree/main/examples/12-async-and-context) | async handlers, logging, deadlines |
|
|
226
|
+
| [13-migrate-from-aws-lambda](https://github.com/ak9347128658/serverless_kit/tree/main/examples/13-migrate-from-aws-lambda) | Before/after migration of Lambda + Step Functions |
|
|
227
|
+
| [14-testing](https://github.com/ak9347128658/serverless_kit/tree/main/examples/14-testing) | Unit-testing handlers and workflows with pytest |
|
|
228
|
+
| [15-ci-cd-deploy](https://github.com/ak9347128658/serverless_kit/tree/main/examples/15-ci-cd-deploy) | GitHub Actions deploys per stage |
|
|
225
229
|
|
|
226
230
|
## Documentation
|
|
227
231
|
|
|
228
232
|
| | |
|
|
229
233
|
|---|---|
|
|
230
|
-
| [Getting started](docs/getting-started.md) | Install, credentials, first deploy |
|
|
231
|
-
| [Configuration reference](docs/configuration.md) | Every `pskit.yml` key, variables, `extends`, stages |
|
|
232
|
-
| [Events](docs/events.md) | HTTP, schedule, queue, storage, topic, with a per-provider matrix |
|
|
233
|
-
| [Handler API](docs/handlers.md) | `Event`, `Context`, `Response`, errors, `BatchResult`, `invoke()` |
|
|
234
|
-
| [Workflows](docs/workflows.md) | State machine reference, engines, limitations |
|
|
235
|
-
| [Providers](docs/providers.md) | Options, credentials, resources and limits per cloud |
|
|
236
|
-
| [CLI](docs/cli.md) | Every command and flag |
|
|
237
|
-
| [Local development](docs/local-development.md) | `pskit dev`, `invoke`, testing |
|
|
238
|
-
| [Dashboard](docs/dashboard.md) | The deployment UI |
|
|
239
|
-
| [Architecture](docs/architecture.md) | Internals and third-party providers |
|
|
240
|
-
| [Migrating from AWS](docs/migrating-from-aws.md) | Lambda + Step Functions → pskit |
|
|
241
|
-
| [Troubleshooting](docs/troubleshooting.md) | Common errors and fixes |
|
|
234
|
+
| [Getting started](https://github.com/ak9347128658/serverless_kit/blob/main/docs/getting-started.md) | Install, credentials, first deploy |
|
|
235
|
+
| [Configuration reference](https://github.com/ak9347128658/serverless_kit/blob/main/docs/configuration.md) | Every `pskit.yml` key, variables, `extends`, stages |
|
|
236
|
+
| [Events](https://github.com/ak9347128658/serverless_kit/blob/main/docs/events.md) | HTTP, schedule, queue, storage, topic, with a per-provider matrix |
|
|
237
|
+
| [Handler API](https://github.com/ak9347128658/serverless_kit/blob/main/docs/handlers.md) | `Event`, `Context`, `Response`, errors, `BatchResult`, `invoke()` |
|
|
238
|
+
| [Workflows](https://github.com/ak9347128658/serverless_kit/blob/main/docs/workflows.md) | State machine reference, engines, limitations |
|
|
239
|
+
| [Providers](https://github.com/ak9347128658/serverless_kit/blob/main/docs/providers.md) | Options, credentials, resources and limits per cloud |
|
|
240
|
+
| [CLI](https://github.com/ak9347128658/serverless_kit/blob/main/docs/cli.md) | Every command and flag |
|
|
241
|
+
| [Local development](https://github.com/ak9347128658/serverless_kit/blob/main/docs/local-development.md) | `pskit dev`, `invoke`, testing |
|
|
242
|
+
| [Dashboard](https://github.com/ak9347128658/serverless_kit/blob/main/docs/dashboard.md) | The deployment UI |
|
|
243
|
+
| [Architecture](https://github.com/ak9347128658/serverless_kit/blob/main/docs/architecture.md) | Internals and third-party providers |
|
|
244
|
+
| [Migrating from AWS](https://github.com/ak9347128658/serverless_kit/blob/main/docs/migrating-from-aws.md) | Lambda + Step Functions → pskit |
|
|
245
|
+
| [Troubleshooting](https://github.com/ak9347128658/serverless_kit/blob/main/docs/troubleshooting.md) | Common errors and fixes |
|
|
242
246
|
|
|
243
247
|
## Contributing & releasing
|
|
244
248
|
|
|
245
|
-
- Contributor guide: [deploy_docs/CONTRIBUTING.md](deploy_docs/CONTRIBUTING.md)
|
|
246
|
-
- Quick PyPI release guide: [deploy_docs/How_to_deploy.md](deploy_docs/How_to_deploy.md)
|
|
247
|
-
- Publishing to PyPI (step by step): [deploy_docs/PUBLISHING_TO_PYPI.md](deploy_docs/PUBLISHING_TO_PYPI.md)
|
|
248
|
-
- Security policy: [SECURITY.md](SECURITY.md)
|
|
249
|
+
- Contributor guide: [deploy_docs/CONTRIBUTING.md](https://github.com/ak9347128658/serverless_kit/blob/main/deploy_docs/CONTRIBUTING.md)
|
|
250
|
+
- Quick PyPI release guide: [deploy_docs/How_to_deploy.md](https://github.com/ak9347128658/serverless_kit/blob/main/deploy_docs/How_to_deploy.md)
|
|
251
|
+
- Publishing to PyPI (step by step): [deploy_docs/PUBLISHING_TO_PYPI.md](https://github.com/ak9347128658/serverless_kit/blob/main/deploy_docs/PUBLISHING_TO_PYPI.md)
|
|
252
|
+
- Security policy: [SECURITY.md](https://github.com/ak9347128658/serverless_kit/blob/main/SECURITY.md)
|
|
249
253
|
|
|
250
254
|
## Author
|
|
251
255
|
|
|
252
256
|
Created and maintained by **Asif Khan @ [Kavion.ai](https://kavion.ai)**.
|
|
253
257
|
|
|
258
|
+
Source code, issues and releases: <https://github.com/ak9347128658/serverless_kit>
|
|
259
|
+
|
|
254
260
|
## License
|
|
255
261
|
|
|
256
|
-
MIT, see [LICENSE](LICENSE).
|
|
262
|
+
MIT, see [LICENSE](https://github.com/ak9347128658/serverless_kit/blob/main/LICENSE).
|
|
@@ -60,8 +60,8 @@ platform -> shim (e.g. pskit_entry.handler) -> runtime.adapters.<cloud> -> runti
|
|
|
60
60
|
## Development setup
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
git clone https://github.com/
|
|
64
|
-
cd
|
|
63
|
+
git clone https://github.com/ak9347128658/serverless_kit.git
|
|
64
|
+
cd serverless_kit
|
|
65
65
|
python -m venv .venv
|
|
66
66
|
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
|
|
67
67
|
pip install -e ".[dev]"
|
|
@@ -93,7 +93,7 @@ def cover(event: Event, ctx: Context):
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
def docs(event: Event, ctx: Context):
|
|
96
|
-
return Response.redirect("https://github.com/
|
|
96
|
+
return Response.redirect("https://github.com/ak9347128658/serverless_kit/tree/main/docs")
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
def create_session(event: Event, ctx: Context):
|
|
@@ -52,10 +52,10 @@ pskit = "py_serverless_kit.cli.main:main"
|
|
|
52
52
|
py-serverless-kit = "py_serverless_kit.cli.main:main"
|
|
53
53
|
|
|
54
54
|
[project.urls]
|
|
55
|
-
Homepage = "https://github.com/
|
|
56
|
-
Documentation = "https://github.com/
|
|
57
|
-
Issues = "https://github.com/
|
|
58
|
-
Changelog = "https://github.com/
|
|
55
|
+
Homepage = "https://github.com/ak9347128658/serverless_kit"
|
|
56
|
+
Documentation = "https://github.com/ak9347128658/serverless_kit/tree/main/docs"
|
|
57
|
+
Issues = "https://github.com/ak9347128658/serverless_kit/issues"
|
|
58
|
+
Changelog = "https://github.com/ak9347128658/serverless_kit/blob/main/CHANGELOG.md"
|
|
59
59
|
|
|
60
60
|
[tool.hatch.version]
|
|
61
61
|
path = "src/py_serverless_kit/_version.py"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.1"
|
|
2
2
|
__author__ = "Asif Khan @ Kavion.ai"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/app/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/03-scheduled-jobs/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/app/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/04-queue-worker/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/app/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/05-storage-events/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/app/__init__.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/app/subscribers.py
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/06-pubsub-topic/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/app/__init__.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/app/orders.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/events/b2b.json
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/events/declined.json
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/events/happy.json
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/07-workflow-orders/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/08-multi-cloud/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/app/__init__.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/app/quotes.py
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/09-function-invoke/requirements.txt
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/.env.example
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/app/__init__.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/app/handlers.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/app/settings.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/config/limits.json
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/10-stages-and-config/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/app/__init__.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/app/handlers.py
RENAMED
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/app/repository.py
RENAMED
|
File without changes
|
|
File without changes
|
{py_serverless_kit-0.1.0 → py_serverless_kit-0.1.1}/examples/11-custom-terraform/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|