class Project: """ A project corresponds to a repository (Git, Mercurial, etc.) It has a set of tasks (ad-hoc or predefined). It also has several revisions/commits. We can fetch a specific revision from the repository and run tasks on it. """ def __init__(self, **kwargs): for k in kwargs: setattr(self, k, kwargs[k]) class GitLabProject(Project): def download_revision(self): pass