FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/PCbuild/get_external.py at 3.7 · python/cpython · GitHub
python
cpython
Repository navigation
Code
Issues
5k+
(5k+)
Pull requests
2.7k
(2.7k)
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
PCbuild
/
get_external.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
60 lines (49 loc) · 1.79 KB
Breadcrumbs
cpython
/
PCbuild
/
get_external.py
Copy path
File metadata and controls
60 lines (49 loc) · 1.79 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python3
import
argparse
import
os
import
pathlib
import
zipfile
from
urllib
.
request
import
urlretrieve
def
fetch_zip
(
commit_hash
,
zip_dir
,
*
,
org
=
'python'
,
binary
=
False
,
verbose
):
repo
=
f'cpython-
{
"bin"
if
binary
else
"source"
}
-deps'
url
=
f'https://github.com/
{
org
}
/
{
repo
}
/archive/
{
commit_hash
}
.zip'
reporthook
=
None
if
verbose
:
reporthook
=
print
zip_dir
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
filename
,
headers
=
urlretrieve
(
url
,
zip_dir
/
f'
{
commit_hash
}
.zip'
,
reporthook
=
reporthook
,
)
return
filename
def
extract_zip
(
externals_dir
,
zip_path
):
with
zipfile
.
ZipFile
(
os
.
fspath
(
zip_path
))
as
zf
:
zf
.
extractall
(
os
.
fspath
(
externals_dir
))
return
externals_dir
/
zf
.
namelist
()[
0
].
split
(
'/'
)[
0
]
def
parse_args
():
p
=
argparse
.
ArgumentParser
()
p
.
add_argument
(
'-v'
,
'--verbose'
,
action
=
'store_true'
)
p
.
add_argument
(
'-b'
,
'--binary'
,
action
=
'store_true'
,
help
=
'Is the dependency in the binary repo?'
)
p
.
add_argument
(
'-O'
,
'--organization'
,
help
=
'Organization owning the deps repos'
,
default
=
'python'
)
p
.
add_argument
(
'-e'
,
'--externals-dir'
,
type
=
pathlib
.
Path
,
help
=
'Directory in which to store dependencies'
,
default
=
pathlib
.
Path
(
__file__
).
parent
.
parent
/
'externals'
)
p
.
add_argument
(
'tag'
,
help
=
'tag of the dependency'
)
return
p
.
parse_args
()
def
main
():
args
=
parse_args
()
zip_path
=
fetch_zip
(
args
.
tag
,
args
.
externals_dir
/
'zips'
,
org
=
args
.
organization
,
binary
=
args
.
binary
,
verbose
=
args
.
verbose
,
)
final_name
=
args
.
externals_dir
/
args
.
tag
extract_zip
(
args
.
externals_dir
,
zip_path
).
replace
(
final_name
)
if
__name__
==
'__main__'
:
main
()
Back
|
FazBrowse Home
|
New Git URL