Biblioteca de Python más adecuada para Github API v3

Estoy buscando una biblioteca de Python para Github APIv3 adecuada para mí. Antecedentes: soy un principiante de Python con un background principalmente enraizado en Matlab y C ++, y recientemente aprendí a usar python-matplotlib.

Encontré una biblioteca (python-github3) mencionada en los documentos GH API . Después de jugar con él en ipython durante una o dos horas, me pareció realmente poco intuitivo explorar / trabajar con él. Miré un poco más y descubrí que hay un buen número de personas intentando, al less, escribir una biblioteca de este tipo. Los más prometedores (de un vistazo) son PyGithub y otro python-github3 , que aparentemente es diferente del primero.

Antes de pasar los próximos días probando una biblioteca tras otra, ¿quería preguntarle a la comunidad SO si hay una opción aceptada, definitiva y obvia para esa biblioteca?

Lo que no me gustó de la primera biblioteca fue (para mí) una forma poco intuitiva de get datos: algunas cosas que obtienes como attributes, otras las obtienes como valor de retorno de un método, ese valor de retorno es un object complicado que tiene que ser paginado y repetido, etc.

En ese sentido, PyGithub se ve más atractivo a primera vista: desglosa claramente a través de una jerarquía de objects y luego llega al atributo que contiene lo que deseas:

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

Entonces, ¿alguna perla de sabiduría para compartir? Sé que no tengo las habilidades suficientes para juzgar rápidamente la calidad de la biblioteca, por lo que me dirijo a la comunidad SO.

edit: fwiw, terminé usando PyGithub . Funciona bien, y el autor es realmente receptivo para comentarios e informes de errores. 🙂

Como mencionaste que eres un principiante progtwigdor python, te sugiero que intentes utilizar la API JSON sin ninguna biblioteca Github primero. Realmente no es tan difícil y te ayudará mucho más adelante en tu vida de progtwigción, ya que el mismo enfoque se puede aplicar a cualquier API JSON. Especialmente si parece que probar bibliotecas llevará días.

No estoy diciendo que alguna biblioteca no sea más fácil de usar, solo digo que el pequeño esfuerzo adicional para usar la API directamente puede valer la pena a largo ploop. Al less te ayudará a entender por qué algunas de esas bibliotecas parecen "poco intuitivas" (como dijiste).

Ejemplo simple para recuperar el time de creación del repository django:

 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'] 

Esto está utilizando la popular biblioteca de requestes . En su código, naturalmente también necesitará manejar los casos de error.

Si necesita acceso con authentication, será un poco más complejo.

Al final, terminé usando PyGithub . Funciona bien, y el autor es realmente receptivo para comentarios e informes de errores. 🙂

(Adaptado de mi edición a la pregunta original, para una mejor visibilidad)

La documentation es horrible para PyGitHub, pero el producto es excelente. Aquí hay una muestra rápida para recuperar un file, cambiarlo con un nuevo comentario al principio del file y volver a enviarlo.

 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) 

Libsaas es ideal para principiantes. Tiene una buena documentation y es fácil de usar, ver ejemplo . Siéntete libre de contribuir.