github3 0.9.6 TypeError:pop() принимает максимум 1 аргумент (2 дано)
В настоящее время я использую github3.py версии 0.9.6 и получаю сообщение об ошибке при вызове функции github3.organization(login):
Traceback (most recent call last):
File "Main.py", line 23, in <module>
__main__()
File "Main.py", line 19, in __main__
Stats.git_auth(username, password, access_token)
File "/Users/edigiovine/Repositories/GitMetrics/Stats.py", line 36, in git_auth
git_orgs(gh)
File "/Users/edigiovine/Repositories/GitMetrics/Stats.py", line 49, in git_orgs
org = gh.organization(rel_org)
File "/Library/Python/2.7/site-packages/github3/github.py", line 971, in organization
return Organization(json, self) if json else None
File "/Library/Python/2.7/site-packages/github3/orgs.py", line 236, in __init__
super(Organization, self).__init__(org, session)
File "/Library/Python/2.7/site-packages/github3/models.py", line 311, in __init__
super(BaseAccount, self).__init__(acct, session)
File "/Library/Python/2.7/site-packages/github3/models.py", line 77, in __init__
super(GitHubCore, self).__init__(json)
File "/Library/Python/2.7/site-packages/github3/models.py", line 30, in __init__
self.etag = json.pop('ETag', None)
TypeError: pop() takes at most 1 argument (2 given)
Я надеялся, что смогу получить помощь в решении этой проблемы. В частности, мне любопытно, откуда пришло None в последнем звонке.
Спасибо за любую помощь заранее!
РЕДАКТИРОВАТЬ 1: я пытаюсь вызвать конкретные организации на основе списка существующих организаций, предоставленного пользователем, который в моем случае намного меньше, чем общий список организаций, поэтому итерации по всем организациям в этом случае не принесут мне никакой пользы (это мой случай по умолчанию, если список не указан).
Еще раз спасибо!
РЕДАКТИРОВАТЬ 2: Пример кода, который я реализую, очевидно тривиален (не может дать личную информацию):
# Defined username, password, access_token, and api_call_base in a
# config file, use them here to build the github object.
gh = github3.login(username, password, access_token, api_call_base)
# predefined_orgs_list is a list of the names of the organizations
# that are in focus for my project.
for needed_org in predefined_orgs_list:
# This is the function that throws the error I am receiving.
org = gh.organization(needed_org)
# If above function works, then the following value should be
# the same as in the predefined_orgs_list
print org.login
EDIT3: я знаю, что функция gh.organization является причиной проблемы в моем коде, что видно по трассировке стека. Мой вопрос касается библиотеки для github3 и вопроса о том, как мне разрешить / исправить функцию pop() в models.py, которая вызывает ошибку.
РЕДАКТИРОВАТЬ 4: Я решил эту проблему, благодаря pdb: от просмотра кода, я обнаружил, что генерация URL является динамической на основе входных данных, предоставленных функции организации.
В частности, у меня была базовая ссылка по умолчанию для наших организаций, которая правильно собирала данные нашей организации. Что мне нужно было сделать, так это изменить мой код, чтобы он использовал два разных URL-адреса, основываясь на условии получения списка организаций вместо того, чтобы захватывать все организации.
Эта проблема теперь решена. Спасибо всем!
2 ответа
Просто для записи, это также происходит, когда вы ожидаете диктовку и хотите очистить ее, используя .pop(key, None)
но вместо этого используйте его в списке. Для списка .pop()
всегда принимает только один аргумент.
Проблема заключается в вашем org = gh.organization(needed_org)
линия. По-видимому .organization()
метод использует pop
, Без разницы predefined_orgs_list
переменная может быть, выглядит как список (от имени... дух) какого-то рода.
Однако по ссылке выше, pop
берет индекс, а не элемент. Этот ответ Разница между del, remove и pop в списках показала отличный пример того, что pop
используется и сравнивает его с другими методами.