web-dev-qa-db-fra.com

La bibliothèque python la plus appropriée pour l'API Github v3)

Je recherche une bibliothèque python pour l'APIv3 Github qui me convient.

J'ai trouvé une bibliothèque (python-github3) mentionnée dans les documentation de l'API GH . Après avoir joué avec lui en ipython pendant une heure ou deux, je l'ai trouvé vraiment peu intuitif à explorer/travailler avec. J'ai regardé un peu plus et j'ai découvert qu'il y avait pas mal de gens qui essayaient au moins d'écrire une telle bibliothèque. Les plus prometteurs (en un coup d'œil) sont PyGithub et n autre python-github , qui est apparemment différent du premier.

Avant de passer les jours suivants à essayer consécutivement bibliothèque après bibliothèque, je voulais demander à la communauté SO s'il y a un choix accepté, définitif et évident pour cette bibliothèque?

Ce que je n'aimais pas dans la première bibliothèque, c'était la manière (pour moi) non intuitive d'obtenir des données - certaines choses que vous obtenez en tant qu'attributs, d'autres que vous obtenez en tant que valeur de retour d'une méthode, cette valeur de retour est un objet compliqué qui doit être paginé et itéré, etc.

À cet égard, PyGithub semble plus attrayant à première vue - explorez clairement une hiérarchie d'objets, puis arrivez à l'attribut contenant ce que vous voulez:

for repo in g.get_user().get_repos(): print repo.name

Alors, des perles de sagesse à partager? Je sais que je n'ai pas les compétences suffisantes pour juger rapidement la qualité de la bibliothèque, c'est pourquoi je me tourne vers la communauté SO.

edit: fwiw, j'ai fini par utiliser PyGithub . Cela fonctionne bien et l'auteur est très réceptif aux commentaires et aux rapports de bogues. : -)

80
Christoph

Au final, j'ai fini par utiliser PyGithub . Cela fonctionne bien et l'auteur est très réceptif aux commentaires et aux rapports de bogues. :-)

(Adapté de mon montage à la question d'origine, pour une meilleure visibilité)

22
Christoph

Puisque vous avez mentionné que vous êtes un débutant python, je vous suggère d'essayer d'utiliser l'API JSON sans aucune bibliothèque Github d'abord. Ce n'est vraiment pas si difficile et cela vous aidera beaucoup plus tard dans votre vie de programmation, car la même approche peut être appliquée à n'importe quelle API JSON. Surtout s'il semble que l'essai des bibliothèques prendra des jours.

Je ne dis pas qu'une bibliothèque n'est pas plus facile à utiliser, je dis simplement que le petit effort supplémentaire pour utiliser l'API directement en vaut la peine à long terme. Au moins, cela vous aidera à comprendre pourquoi certaines de ces bibliothèques semblent "peu intuitives" (comme vous l'avez dit).

Exemple simple pour récupérer l'heure de création de Django repository:

import requests
import json
r = requests.get('https://api.github.com/repos/Django/django')
if(r.ok):
    repoItem = json.loads(r.text or r.content)
    print "Django repository created: " + repoItem['created_at']

Ceci utilise le populaire bibliothèque de requêtes . Dans votre code, vous devrez naturellement également gérer les cas d'erreur.

Si vous avez besoin d'un accès avec authentification, ce sera un peu plus complexe.

72
Lycha

La documentation est horrible pour PyGitHub, mais le produit est excellent. Voici un exemple rapide pour réellement récupérer un fichier, le changer avec un nouveau commentaire au début du fichier et le valider à nouveau

from github import Github
gh = Github(login_or_token='.....', base_url='...../api/v3')
user = gh.get_user()
repo = user.get_repo("RepoName")
file = repo.get_file_contents("/App/forms.py")
decoded_content = "# Test " + "\r\n" + file.decoded_content
repo.update_file("/"RepoName"/forms.py", "Commit Comments", decoded_content, file.sha)
14
Steve

Libsaas est idéal pour les débutants. Il a un Nice documentation et est facile à utiliser, voir exemple . N'hésitez pas à contribuer.

1
DmitrySandalov