def _mirror_list(first):
'''Generator producing all mirror names'''
ord_a = ord('a')
last = socket.gethostbyname_ex('last.pypi.python.org')
cur_index = ord(first)-ord_a
cur = first+'.pypi.python.org'
while True:
for family, _, _, _, sockaddr in socket.getaddrinfo(cur, 0, 0, socket.SOCK_STREAM):
yield cur, family, sockaddr
if last[0] == cur:
break
cur_index += 1
if cur_index < 26:
# a..z
cur = chr(ord_a+cur_index)
elif cur_index > 701:
raise ValueError, 'too many mirrors'
else:
# aa, ab, ... zz
cur = divmod(cur_index, 26)
cur = chr(ord_a-1+cur[0])+chr(ord_a+cur[1])
cur += '.pypi.python.org'
评论列表
文章目录