Pygithub: Mengunggah aset ke rilis merusak objek Repositori

Dibuat pada 1 Mei 2018  ·  12Komentar  ·  Sumber: PyGithub/PyGithub

Saya melihat beberapa perilaku yang sangat aneh setelah menggunakan objek GitRelease untuk mengunggah aset ke rilis.

Inti masalah:

import os
from github import Github

repo = Github(os.environ['GITHUB_ACCESS_TOKEN']).get_repo('<my-repo>')
release = repo.get_release(id='1.0.0')

repo.get_branch(branch='release')  # works

release.upload_asset(path='/Users/elip/asset', content_type='application/octet-stream')

repo.get_branch(branch='release')  # throws the exception

Pengecualian:

Traceback (most recent call last):
  File "pygithub_bug.py", line 16, in <module>
    repo.get_branch(branch='release')
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Repository.py", line 1191, in get_branch
    self.url + "/branches/" + branch
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 185, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 198, in __check
    raise self.__createException(status, responseHeaders, output)
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 210, in __createException
    elif status == 404 and output.get("message") == "Not Found":
AttributeError: 'NoneType' object has no attribute 'get'

Patut disebutkan bahwa bukan hanya get_branch yang rusak, setiap metode yang perlu mengambil sesuatu dari Github gagal dengan kesalahan ini.

Juga layak disebutkan, adalah bahwa terkadang, pengecualiannya berbeda:

Traceback (most recent call last):
  File "pygithub_bug.py", line 19, in <module>
    repo.get_commit(sha='release')
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Repository.py", line 1267, in get_commit
    self.url + "/commits/" + sha
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 185, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 231, in requestJson
    return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode)
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 275, in __requestEncode
    url = self.__makeAbsoluteUrl(url)
  File "/Users/elip/.virtualenvs/pyci/lib/python2.7/site-packages/github/Requester.py", line 343, in __makeAbsoluteUrl
    assert o.hostname in [self.__hostname, "uploads.github.com"], o.hostname
AssertionError: api.github.com

Pengecualian ini terjadi, ketika saya menambahkan repo.default_branch (atau saya menganggap permintaan properti apa pun yang memerlukan panggilan REST) ​​tepat sebelum saya mengunggah.

Adakah yang bisa menjelaskan? apakah saya melewatkan sesuatu di sini?

Terima kasih

Semua 12 komentar

Lupa menyebutkan env saya:

Python 2.7.14
MacOS High Sierra
PyGithub 1.38

Ini adalah masalah yang diketahui, lihat PR saya #771 yang akan menyelesaikan bug ini, itu akan digabungkan oleh pengembang untuk rilis berikutnya

Luar biasa

Terima kasih 👍

Ya, akan mencoba untuk segera menggabungkan #771.

Akan senang melihat ini digabungkan. Mengalami masalah yang sama.

Solusi yang saya gunakan untuk ini cukup mudah. Pada dasarnya setelah setiap unggahan file, saya hanya membuat ulang instance github, repo, dan rilis. Ini pseudocodenya (kode lengkap ada di Satsuki ):

try:
  release_asset = release.upload_asset (
    path,
    **args
  )
except Exception as e:
  error = e
finally:
  gh = github.Github(...)
  repo = gh.get_repo(...)
  release = repo.get_release(...)

# see if e is an actual error, usually it's not

Harus diselesaikan sekarang karena https://github.com/PyGithub/PyGithub/pull/771 digabungkan?

Ya


Dari: nurupo [email protected]
Dikirim: Senin, 25 Juni 2018 14:32:26
Kepada: PyGithub/PyGithub
Cc: Wan Liuyang; Komentar
Subjek: Re: [PyGithub/PyGithub] Mengunggah aset ke rilis merusak objek Repositori (#779)

Harus diselesaikan dengan #771 https://github.com/PyGithub/PyGithub/pull/771 digabung?


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub https://github.com/PyGithub/PyGithub/issues/779#issuecomment-399846062 , atau nonaktifkan utas https://github.com/notifications/unsubscribe-auth/AA- CRnGC3DneR2a5__s9jFIwPiPraMrFks5uAIP6gaJpZM4Tt_wu .

Itu harus diperbaiki oleh #771 . Bisakah kalian mencoba masternya? Saya mungkin akan segera memotong rilis.

@sfdye di atasnya

@sfdye terlihat bagus 👍 , terima kasih!

BTW, saya tidak yakin bagaimana Anda memotong rilis, tetapi Anda dapat melihat alat yang saya tulis khusus untuk mengelola rilis untuk proyek Python yang dihosting di GIthub. Namanya pyci , mungkin Anda bisa mengambil manfaat darinya ... (Maaf untuk plug yang tidak tahu malu, tapi sepertinya cocok :))

@iliapolo Keren, akan kita lihat.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

hsluoyz picture hsluoyz  ·  3Komentar

nchammas picture nchammas  ·  3Komentar

PeterJCLaw picture PeterJCLaw  ·  6Komentar

grayaii picture grayaii  ·  4Komentar

BBI-YggyKing picture BBI-YggyKing  ·  5Komentar