Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
749ebc02
Unverified
Commit
749ebc02
authored
Apr 13, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update get-poetry.py script to work with Python 2.7
parent
f05d2951
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
24 deletions
+46
-24
get-poetry.py
+46
-24
No files found.
get-poetry.py
View file @
749ebc02
...
...
@@ -25,9 +25,14 @@ import subprocess
import
sys
import
tempfile
from
contextlib
import
contextmanager
from
email.parser
import
Parser
from
pathlib
import
Path
from
urllib.request
import
urlopen
from
glob
import
glob
try
:
from
urllib.request
import
urlopen
except
ImportError
:
from
urllib2
import
urlopen
FOREGROUND_COLORS
=
{
...
...
@@ -97,6 +102,20 @@ def colorize(style, text):
return
'{}{}
\033
[0m'
.
format
(
STYLES
[
style
],
text
)
@contextmanager
def
temporary_directory
(
*
args
,
**
kwargs
):
try
:
from
tempfile
import
TemporaryDirectory
with
TemporaryDirectory
(
*
args
,
**
kwargs
)
as
name
:
yield
name
except
ImportError
:
name
=
tempfile
.
mkdtemp
(
*
args
,
**
kwargs
)
yield
name
shutil
.
rmtree
(
name
)
class
Installer
:
...
...
@@ -120,8 +139,10 @@ class Installer:
def
run
(
self
):
print
(
colorize
(
'info'
,
'Retrieving metadata'
))
with
urlopen
(
self
.
METADATA_URL
)
as
r
:
metadata
=
json
.
loads
(
r
.
read
()
.
decode
())
r
=
urlopen
(
self
.
METADATA_URL
)
metadata
=
json
.
loads
(
r
.
read
()
.
decode
())
r
.
close
()
print
(
''
)
releases
=
sorted
(
...
...
@@ -172,36 +193,37 @@ class Installer:
def
install
(
self
,
version
):
# Most of the work will be delegated to pip
with
tempfile
.
TemporaryDirectory
(
prefix
=
'poetry-installer-'
)
as
dir
:
dir
=
Path
(
dir
)
dist
=
dir
/
'dist'
with
temporary_directory
(
prefix
=
'poetry-installer-'
)
as
dir
:
dist
=
os
.
path
.
join
(
dir
,
'dist'
)
print
(
' - Getting dependencies'
)
self
.
call
(
'pip'
,
'install'
,
'poetry=={}'
.
format
(
version
),
'--target'
,
str
(
dist
)
'--target'
,
dist
)
print
(
' - Vendorizing dependencies'
)
poetry_dir
=
dist
/
'poetry'
vendor_dir
=
poetry_dir
/
'_vendor'
poetry_dir
=
os
.
path
.
join
(
dist
,
'poetry'
)
vendor_dir
=
os
.
path
.
join
(
poetry_dir
,
'_vendor'
)
# Everything, except poetry itself, should
# be put in the _vendor directory
for
file
in
dist
.
glob
(
'*'
):
if
file
.
name
.
startswith
(
'poetry'
):
for
file
in
glob
(
os
.
path
.
join
(
dist
,
'*'
)
):
if
os
.
path
.
basename
(
file
)
.
startswith
(
'poetry'
):
continue
dest
=
vendor_dir
/
file
.
name
if
file
.
is_dir
(
):
shutil
.
copytree
(
str
(
file
),
str
(
dest
)
)
shutil
.
rmtree
(
str
(
file
)
)
dest
=
os
.
path
.
join
(
vendor_dir
,
os
.
path
.
basename
(
file
))
if
os
.
path
.
isdir
(
file
):
shutil
.
copytree
(
file
,
dest
)
shutil
.
rmtree
(
file
)
else
:
shutil
.
copy
(
str
(
file
),
str
(
dest
)
)
os
.
unlink
(
str
(
file
)
)
shutil
.
copy
(
file
,
dest
)
os
.
unlink
(
file
)
wheel_data
=
dist
/
'poetry-{}.dist-info'
.
format
(
version
)
/
'WHEEL'
with
wheel_data
.
open
()
as
f
:
wheel_data
=
os
.
path
.
join
(
dist
,
'poetry-{}.dist-info'
.
format
(
version
),
'WHEEL'
)
with
open
(
wheel_data
)
as
f
:
wheel_data
=
Parser
()
.
parsestr
(
f
.
read
())
tag
=
wheel_data
[
'Tag'
]
...
...
@@ -210,21 +232,21 @@ class Installer:
print
(
' - Installing {}'
.
format
(
colorize
(
'info'
,
'poetry'
)))
shutil
.
make_archive
(
str
(
dir
/
'poetry-{}-{}'
.
format
(
version
,
tag
)),
os
.
path
.
join
(
dir
,
'poetry-{}-{}'
.
format
(
version
,
tag
)),
format
=
'zip'
,
root_dir
=
str
(
dist
)
)
os
.
rename
(
str
(
dir
/
'poetry-{}-{}.zip'
.
format
(
version
,
tag
)),
str
(
dir
/
'poetry-{}-{}.whl'
.
format
(
version
,
tag
)),
os
.
path
.
join
(
dir
,
'poetry-{}-{}.zip'
.
format
(
version
,
tag
)),
os
.
path
.
join
(
dir
,
'poetry-{}-{}.whl'
.
format
(
version
,
tag
))
)
self
.
call
(
'pip'
,
'install'
,
'--upgrade'
,
'--no-deps'
,
str
(
dir
/
'poetry-{}-{}.whl'
.
format
(
version
,
tag
))
os
.
path
.
join
(
dir
,
'poetry-{}-{}.whl'
.
format
(
version
,
tag
))
)
print
(
''
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment