11from collections import Iterator
2- from github3 .models import GitHubCore ,urlparse
2+ from github3 .models import GitHubCore
3+ from requests .compat import urlparse ,urlencode
34
45
56class GitHubIterator (GitHubCore ,Iterator ):
67"""The :class:`GitHubIterator` class powers all of the iter_* methods."""
7- def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ):
8+ def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ,
9+ headers = None ):
810GitHubCore .__init__ (self , {},session )
911#: Original number of items requested
1012self .original = count
@@ -25,14 +27,14 @@ def __init__(self, count, url, cls, session, params=None, etag=None):
2527#: The ETag Header value returned by GitHub
2628self .etag = None
2729#: Headers generated for the GET request
28- self .headers = {}
30+ self .headers = headers or {}
2931#: The last response seen
3032self .last_response = None
3133#: Last status code received
3234self .last_status = 0
3335
3436if etag :
35- self .headers = {'If-None-Match' :etag }
37+ self .headers . update ( {'If-None-Match' :etag })
3638
3739self .path = urlparse (self .url ).path
3840
@@ -98,9 +100,10 @@ def next(self):
98100
99101
100102class SearchIterator (GitHubIterator ):
101- def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ):
103+ def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ,
104+ headers = None ):
102105super (SearchIterator ,self ).__init__ (count ,url ,cls ,session ,params ,
103- etag )
106+ etag , headers )
104107self .total_count = 0
105108
106109def __repr__ (self ):