pip is amazing and lets Python coders bounce off each other by sharing code
easily. The back end of pip is provided by PyPi.org and while that eases the burden of finding useful packages, it doesn't quite forster the same community dynamics through statistics as other languages do.
For example, take a look at the statistics available for the requests package on pip and compare that to its equivalent package on npm. The latter reports things like daily downloads, dependencies in both directions, and a wide variety of GitHub metrics that make the experience of using it richer because it is easier for members of the community to judge the state of the package through the behavior of others.
So if you were trying to build a Python-based sub-community, it would be nice to have the functionality of a
pip install but have back end metrics closer to what
npm provides. And if you were going to build such a thing in 2019, you'd do it with a serverless application architecture. That's what this project is.
If you'd like to understand how it all works, check out the architecture documentation.
If you'd just like to get it up and running, check out the quickstart.
Like any modern project, this one stands on the shoulders of others that are leveraged heavily in different ways here:
- cfn-certificate-provider - Automates the creation of the ACM cert and DNS validation through Route53.
- s3pypi - Provides a really nice set of CloudFormation templates for setting up an S3 bucket with a combination of CloudFront and AWS Certificate Manager so that
pip installwill work correctly.
- Serverless Framework - The leaders in serverless tooling eases the packaging and trigger management for functions.
- github-cognito-openid-wrapper - Bridges the gap between Cognito and the GitHub login system so that API endpoints can be secured using an authenticator familiar to developers.
- serverless-s3-sync - Serverless Plug-In for synch'ing files from a local folder to an S3 bucket.
- PyGithub - For interacting with the GitHub API
- boto3 - The AWS Python SDK.