Important:
This repository contains the legacy public version of PePy. The latest version is now maintained privately. We continue to use this repository solely to track issues and preserve historical references.
PePy is a website that provides statistics about Python packages. This repo houses the backend service for PePy.
Our website stays alive thanks to your support and the continued help from our sponsors.
![User avatar: Samuel Colvin](https://github.com/samuelcolvin.png)
![User avatar: Seth Michael Larson](https://github.com/sethmlarson.png)
![User avatar: Guardrails AI](https://github.com/guardrails-ai.png)
I wanted to make the setup of the environment as easy as possible. To start the environment you need the following prerequisites:
- bash (+4.3)
- docker (+17.05)
- docker-compose (+1.16.1)
- docker-py (+2.2.1)
- ansible (+2.3)
You only (fingers crossed) need to execute the following to start the environment:
make start-containers
Principally I used some DDD concepts (like value objects, entities, and so on) and also CQS whose objective is to separate commands from queries.
The structure of the code is the following:
pepy/application
: here is where all the commands and the queries are located.pepy/domain
: domain objects like entities, exceptions, and value objects.pepy/infrastructure
: infrastructure components like the implementation of the repository class like DB or BigQuery, the Flask web application, the container, and so on.pepy/infrastructure/cli
: the command line programs.pepy/infrastructure/container
: config files and the dependency injection manager.pepy/infrastructure/api
: the api endpoints controller.
Where the downloads come from?
The data is retrieved from the official BigQuery repository: https://packaging.python.org/guides/analyzing-pypi-package-downloads/
When the data is updated?
There is a cron that runs every day at 5 pm UTC that retrieves all the new downloads from the previous day.
The code is available under the MIT license.