github3 0.9.6 TypeError:pop()最多需要1个参数(给定2个)

时间:2017-01-06 22:34:59

标签: python github3.py

我目前正在使用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的条件。

此问题现已解决。谢谢大家!

2 个答案:

答案 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()始终只使用一个参数。