Package: warehouse14
Warehouse14While the PyPI (Warehouse) provides a global package index for all Python users, companies and closed groups do have the
need for a non-global Python package index.Whileexisting projectsprovide different options for a private package index, Warehouse14 provides
an implementation that requires authentication by default, but provides the option for a decentralized access management
on individual project level.FeaturesAuthentication via OIDC provider by defaultUser manageable API keys for download/uploadProjectProject pagePackage metadataUser access managementAdminis able to modify package content and upload new versions. They also manage users.Memberread access to private repositories.Project Types: Public (still require authentication) / Private (Access only for defined users)DeploymentTODO 🙈Deploy on AWS Lambda# Requirements: warehouse[aws], apig_wsgiimportboto3fromwarehouse14importOIDCAuthenticator,create_appfromwarehouse14.repos_dynamoimportDynamoDBBackend,create_tablefromwarehouse14.storageimportS3Storage# requires apig_wsgifromapig_wsgiimportmake_lambda_handlerauth=OIDCAuthenticator(client_id="<your oidc client id>",client_secret="<your oidc client secret>",user_id_field="email",server_metadata_url="https://<idp>/.well-known/openid-configuration",)dynamodb=boto3.resource("dynamodb")table=create_table(dynamodb,"table")db=DynamoDBBackend(table)bucket=boto3.resource("s3").Bucket("<bucket name>")storage=S3Storage(bucket)app=create_app(db,storage,auth,session_secret="{{ LONG_RANDOM_STRING }}")lambda_handler=make_lambda_handler(app,binary_support=True)GlossaryTo use common Python terms we take over the glossary
ofWarehouseTermDefinitionProjectA collection of releases and files, and information about them. Projects on Warehouse are made and shared by members of the Python community so others can use them.ReleaseA specific version of a project. For example, the requests project has many releases, like requests 2.10 and requests 1.2.1. A release consists of one or more files.FileSomething that you can download and install. Because of different hardware, operating systems, and file formats, a release may have several files, like an archive containing source code or a binary wheel.PackageA synonym for a file.UserA person who has registered an account on Warehouse.AccountAn object representing a logged in user.MaintainerAn user who has permissions to manage a project on Warehouse.OwnerAn user who has permissions to manage a project on Warehouse, and has additional permission to add and remove other maintainers and owners to a project.AuthorA free-form piece of information associated with a project. This information could be a name of a person, an organization, or something else altogether. This information is not linked to a user on Warehouse.Related ProjectswarehousepypiserverBackends:Filesystemupload supporteddifferent auth optionspywharfBackends:FilesystemGithubserver or github pagesNO UPLOADPyPICloudBackends:FilesystemS3Cache via Redis, Dynamo, ...Upload supportedExtendablelapypialmost fully PEP 503Backends:S3Uses ChaliceplambdapiUses TerraformBackends:S3Uses Chalicepypiprivatestatic generatorBackends:S3elasticpypiBackends:S3/ Dynamodbserverless framework10MB limitsupports upload (strange /simple/post method)uses s3 trigger to update dynamodb entriesdevpypi