Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
镜像
Python_Packaging_Authority
pip
提交
55026b27
P
pip
项目概览
镜像
/
Python_Packaging_Authority
/
pip
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pip
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
55026b27
编写于
4月 28, 2011
作者:
C
Carl Meyer
浏览文件
操作
浏览文件
下载
差异文件
Merged pull request #275 from bradleyayers/develop.
Fixed issue #273
上级
4b37065f
439e1ed6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
13 deletion
+16
-13
pip/download.py
pip/download.py
+16
-13
未找到文件。
pip/download.py
浏览文件 @
55026b27
import
re
import
cgi
import
getpass
import
sys
import
os
import
mimetypes
import
os
import
re
import
shutil
import
sys
import
tempfile
from
pip.backwardcompat
import
(
md5
,
copytree
,
xmlrpclib
,
urllib
,
urllib2
,
urlparse
,
string_types
,
HTTPError
)
...
...
@@ -330,10 +331,7 @@ def _check_md5(download_hash, link):
def
_get_md5_from_file
(
target_file
,
link
):
download_hash
=
md5
()
fp
=
open
(
target_file
,
'rb'
)
while
1
:
chunk
=
fp
.
read
(
4096
)
if
not
chunk
:
break
for
chunk
in
iter
(
lambda
:
fp
.
read
(
4096
),
''
):
download_hash
.
update
(
chunk
)
fp
.
close
()
return
download_hash
...
...
@@ -362,10 +360,7 @@ def _download_url(resp, link, temp_location):
logger
.
notify
(
'Downloading %s'
%
show_url
)
logger
.
debug
(
'Downloading from URL %s'
%
link
)
while
1
:
chunk
=
resp
.
read
(
4096
)
if
not
chunk
:
break
for
chunk
in
iter
(
lambda
:
resp
.
read
(
4096
),
''
):
downloaded
+=
len
(
chunk
)
if
show_progress
:
if
not
total_length
:
...
...
@@ -416,7 +411,7 @@ def unpack_http_url(link, location, download_cache, only_download):
create_download_cache_folder
(
download_cache
)
if
(
target_file
and
os
.
path
.
exists
(
target_file
)
and
os
.
path
.
exists
(
target_file
+
'.content-type'
)):
and
os
.
path
.
exists
(
target_file
+
'.content-type'
)):
fp
=
open
(
target_file
+
'.content-type'
)
content_type
=
fp
.
read
().
strip
()
fp
.
close
()
...
...
@@ -427,7 +422,14 @@ def unpack_http_url(link, location, download_cache, only_download):
else
:
resp
=
_get_response_from_url
(
target_url
,
link
)
content_type
=
resp
.
info
()[
'content-type'
]
filename
=
link
.
filename
filename
=
link
.
filename
# fallback
# Have a look at the Content-Disposition header for a better guess
content_disposition
=
resp
.
info
().
get
(
'content-disposition'
)
if
content_disposition
:
type
,
params
=
cgi
.
parse_header
(
content_disposition
)
# We use ``or`` here because we don't want to use an "empty" value
# from the filename param.
filename
=
params
.
get
(
'filename'
)
or
filename
ext
=
splitext
(
filename
)[
1
]
if
not
ext
:
ext
=
mimetypes
.
guess_extension
(
content_type
)
...
...
@@ -466,6 +468,7 @@ def _get_response_from_url(target_url, link):
raise
return
resp
class
Urllib2HeadRequest
(
urllib2
.
Request
):
def
get_method
(
self
):
return
"HEAD"
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录