我目前正在使用github3.py版本0.9.6,并在调用 github3.organization(登录)函数时收到错误:
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)
我希望能在解决这个问题上得到一些帮助。具体来说,我很好奇在最后一次通话中“无”的来源。
提前感谢您的帮助!
EDIT1:我正在尝试根据用户提供的现有组织列表调用特定组织,在我看来,这个组织比组织总数要小得多,因此迭代所有组织在这种情况下对我来说不是一个好处(如果没有给出列表,这恰好是我的默认情况)。
再次感谢!
EDIT2:我正在实施的代码示例,显然是微不足道的(无法提供私人信息):
# 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的库,并询问我如何解决/修复models.py中的pop()函数,这是抛出错误的函数。
EDIT4:我解决了这个问题,感谢pdb: 通过遍历代码,我发现根据组织函数的输入,url生成是动态的。
具体来说,我所拥有的是我们正确收集组织数据的组织的默认基本网址。我需要做的是修改我的代码以使用两个不同的URL,基于给出一个orgs列表与抓住所有orgs的条件。
此问题现已解决。谢谢大家!
答案 0 :(得分:2)
问题在于您的org = gh.organization(needed_org)
行。显然.organization()
方法使用pop
。无论predefined_orgs_list
变量是什么,看起来像某个列表(来自名称...... duh)。
但是,从上面的链接中,pop
采用索引而不是项目。这个答案Difference between del, remove and pop on lists展示了pop
用于什么的一个很好的例子,并将其与其他方法进行比较。
答案 1 :(得分:2)
只是为了记录,当你期望一个字典并且想要使用.pop(key, None)
清除它时它也会发生,但是在列表中使用它。对于列表,.pop()
始终只使用一个参数。