我当前使用的是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()函数,即抛出错误的函数。
第4版:多亏了pdb,我解决了这个问题:通过浏览代码,我发现url的生成是动态的,基于对组织功能的输入。
具体来说,我拥有的是我们组织的默认基本url,它正确地收集了我们的组织数据。我需要做的是修改我的代码,使其使用两个不同的url,这是基于获得组织列表和获取所有组织的条件。
此问题现已解决。谢谢大家!
就记录而言,当您期望一个dict并希望使用.pop(key, None)
清除它,但在列表中使用它时,也会发生这种情况。对于列表,.pop()
总是只接受一个参数。
问题出在org = gh.organization(needed_org)
行。显然.organization()
方法使用pop
。无论predefined_orgs_list
变量是什么,看起来都像是某种列表(从名称…duh)
然而,从上面的链接来看,pop
采用的是索引,而不是项。这个答案del、remove和pop-on列表之间的差异显示了pop
的用途的一个很好的例子,并将其与其他方法进行了比较。