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
94304e9d
Unverified
Commit
94304e9d
authored
Nov 21, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix environment detection
parent
c2c6f3be
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
35 additions
and
20 deletions
+35
-20
CHANGELOG.md
+1
-0
poetry/console/commands/debug/info.py
+1
-1
poetry/console/commands/debug/resolve.py
+1
-1
poetry/console/commands/env_command.py
+2
-2
poetry/console/commands/init.py
+1
-1
poetry/console/commands/new.py
+1
-1
poetry/puzzle/provider.py
+1
-1
poetry/utils/env.py
+4
-13
tests/conftest.py
+10
-0
tests/utils/test_env.py
+13
-0
No files found.
CHANGELOG.md
View file @
94304e9d
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
### Fixed
### Fixed
-
Fixed
`run`
not executing scripts.
-
Fixed
`run`
not executing scripts.
-
Fixed environment detection.
## [0.12.9] - 2018-11-19
## [0.12.9] - 2018-11-19
...
...
poetry/console/commands/debug/info.py
View file @
94304e9d
...
@@ -15,7 +15,7 @@ class DebugInfoCommand(Command):
...
@@ -15,7 +15,7 @@ class DebugInfoCommand(Command):
from
....utils.env
import
Env
from
....utils.env
import
Env
poetry
=
self
.
poetry
poetry
=
self
.
poetry
env
=
Env
.
get
(
cwd
=
poetry
.
file
.
parent
)
env
=
Env
.
get
(
poetry
.
file
.
parent
)
poetry_python_version
=
"."
.
join
(
str
(
s
)
for
s
in
sys
.
version_info
[:
3
])
poetry_python_version
=
"."
.
join
(
str
(
s
)
for
s
in
sys
.
version_info
[:
3
])
...
...
poetry/console/commands/debug/resolve.py
View file @
94304e9d
...
@@ -79,7 +79,7 @@ class DebugResolveCommand(Command):
...
@@ -79,7 +79,7 @@ class DebugResolveCommand(Command):
return
0
return
0
env
=
Env
.
get
()
env
=
Env
.
get
(
self
.
poetry
.
file
.
parent
)
current_python_version
=
parse_constraint
(
current_python_version
=
parse_constraint
(
"."
.
join
(
str
(
v
)
for
v
in
env
.
version_info
)
"."
.
join
(
str
(
v
)
for
v
in
env
.
version_info
)
)
)
...
...
poetry/console/commands/env_command.py
View file @
94304e9d
...
@@ -15,7 +15,7 @@ class EnvCommand(Command):
...
@@ -15,7 +15,7 @@ class EnvCommand(Command):
# Checking compatibility of the current environment with
# Checking compatibility of the current environment with
# the python dependency specified in pyproject.toml
# the python dependency specified in pyproject.toml
current_env
=
Env
.
get
()
current_env
=
Env
.
get
(
self
.
poetry
.
file
.
parent
)
supported_python
=
self
.
poetry
.
package
.
python_constraint
supported_python
=
self
.
poetry
.
package
.
python_constraint
current_python
=
parse_constraint
(
current_python
=
parse_constraint
(
"."
.
join
(
str
(
v
)
for
v
in
current_env
.
version_info
[:
3
])
"."
.
join
(
str
(
v
)
for
v
in
current_env
.
version_info
[:
3
])
...
@@ -30,7 +30,7 @@ class EnvCommand(Command):
...
@@ -30,7 +30,7 @@ class EnvCommand(Command):
)
)
self
.
_env
=
Env
.
create_venv
(
self
.
_env
=
Env
.
create_venv
(
o
,
self
.
poetry
.
package
.
name
,
cwd
=
self
.
poetry
.
file
.
parent
self
.
poetry
.
file
.
parent
,
o
,
self
.
poetry
.
package
.
name
)
)
if
self
.
_env
.
is_venv
()
and
o
.
is_verbose
():
if
self
.
_env
.
is_venv
()
and
o
.
is_verbose
():
...
...
poetry/console/commands/init.py
View file @
94304e9d
...
@@ -102,7 +102,7 @@ The <info>init</info> command creates a basic <comment>pyproject.toml</> file in
...
@@ -102,7 +102,7 @@ The <info>init</info> command creates a basic <comment>pyproject.toml</> file in
question
.
validator
=
self
.
_validate_license
question
.
validator
=
self
.
_validate_license
license
=
self
.
ask
(
question
)
license
=
self
.
ask
(
question
)
current_env
=
Env
.
get
()
current_env
=
Env
.
get
(
Path
.
cwd
()
)
default_python
=
"^{}"
.
format
(
default_python
=
"^{}"
.
format
(
"."
.
join
(
str
(
v
)
for
v
in
current_env
.
version_info
[:
2
])
"."
.
join
(
str
(
v
)
for
v
in
current_env
.
version_info
[:
2
])
)
)
...
...
poetry/console/commands/new.py
View file @
94304e9d
...
@@ -45,7 +45,7 @@ class NewCommand(Command):
...
@@ -45,7 +45,7 @@ class NewCommand(Command):
if
author_email
:
if
author_email
:
author
+=
" <{}>"
.
format
(
author_email
)
author
+=
" <{}>"
.
format
(
author_email
)
current_env
=
Env
.
get
()
current_env
=
Env
.
get
(
Path
.
cwd
()
)
default_python
=
"^{}"
.
format
(
default_python
=
"^{}"
.
format
(
"."
.
join
(
str
(
v
)
for
v
in
current_env
.
version_info
[:
2
])
"."
.
join
(
str
(
v
)
for
v
in
current_env
.
version_info
[:
2
])
)
)
...
...
poetry/puzzle/provider.py
View file @
94304e9d
...
@@ -275,7 +275,7 @@ class Provider:
...
@@ -275,7 +275,7 @@ class Provider:
try
:
try
:
cwd
=
dependency
.
full_path
cwd
=
dependency
.
full_path
venv
=
Env
.
get
(
NullIO
(),
cwd
=
cwd
)
venv
=
Env
.
get
(
cwd
)
venv
.
run
(
"python"
,
"setup.py"
,
"egg_info"
)
venv
.
run
(
"python"
,
"setup.py"
,
"egg_info"
)
except
EnvCommandError
:
except
EnvCommandError
:
result
=
SetupReader
.
read_from_directory
(
dependency
.
full_path
)
result
=
SetupReader
.
read_from_directory
(
dependency
.
full_path
)
...
...
poetry/utils/env.py
View file @
94304e9d
...
@@ -153,7 +153,7 @@ class Env(object):
...
@@ -153,7 +153,7 @@ class Env(object):
return
self
.
_bin
(
"pip"
)
return
self
.
_bin
(
"pip"
)
@classmethod
@classmethod
def
get
(
cls
,
reload
=
False
,
cwd
=
None
):
# type: (bool, Path
) -> Env
def
get
(
cls
,
cwd
,
reload
=
False
):
# type: (Path, bool
) -> Env
if
cls
.
_env
is
not
None
and
not
reload
:
if
cls
.
_env
is
not
None
and
not
reload
:
return
cls
.
_env
return
cls
.
_env
...
@@ -162,7 +162,7 @@ class Env(object):
...
@@ -162,7 +162,7 @@ class Env(object):
if
not
in_venv
:
if
not
in_venv
:
# Checking if a local virtualenv exists
# Checking if a local virtualenv exists
if
cwd
and
(
cwd
/
".venv"
)
.
exists
():
if
(
cwd
/
".venv"
)
.
exists
():
venv
=
cwd
/
".venv"
venv
=
cwd
/
".venv"
return
VirtualEnv
(
venv
)
return
VirtualEnv
(
venv
)
...
@@ -179,9 +179,6 @@ class Env(object):
...
@@ -179,9 +179,6 @@ class Env(object):
else
:
else
:
venv_path
=
Path
(
venv_path
)
venv_path
=
Path
(
venv_path
)
if
cwd
is
None
:
cwd
=
Path
.
cwd
()
name
=
cwd
.
name
name
=
cwd
.
name
name
=
"{}-py{}"
.
format
(
name
=
"{}-py{}"
.
format
(
name
,
"."
.
join
([
str
(
v
)
for
v
in
sys
.
version_info
[:
2
]])
name
,
"."
.
join
([
str
(
v
)
for
v
in
sys
.
version_info
[:
2
]])
...
@@ -204,11 +201,11 @@ class Env(object):
...
@@ -204,11 +201,11 @@ class Env(object):
return
VirtualEnv
(
prefix
,
base_prefix
)
return
VirtualEnv
(
prefix
,
base_prefix
)
@classmethod
@classmethod
def
create_venv
(
cls
,
io
,
name
=
None
,
cwd
=
None
):
# type: (IO, bool, Path
) -> Env
def
create_venv
(
cls
,
cwd
,
io
,
name
=
None
):
# type: (Path, IO, bool
) -> Env
if
cls
.
_env
is
not
None
:
if
cls
.
_env
is
not
None
:
return
cls
.
_env
return
cls
.
_env
env
=
cls
.
get
(
cwd
=
cwd
)
env
=
cls
.
get
(
cwd
)
if
env
.
is_venv
():
if
env
.
is_venv
():
# Already inside a virtualenv.
# Already inside a virtualenv.
return
env
return
env
...
@@ -220,9 +217,6 @@ class Env(object):
...
@@ -220,9 +217,6 @@ class Env(object):
venv_path
=
config
.
setting
(
"settings.virtualenvs.path"
)
venv_path
=
config
.
setting
(
"settings.virtualenvs.path"
)
if
root_venv
:
if
root_venv
:
if
not
cwd
:
raise
RuntimeError
(
"Unable to determine the project's directory"
)
venv_path
=
cwd
/
".venv"
venv_path
=
cwd
/
".venv"
elif
venv_path
is
None
:
elif
venv_path
is
None
:
venv_path
=
Path
(
CACHE_DIR
)
/
"virtualenvs"
venv_path
=
Path
(
CACHE_DIR
)
/
"virtualenvs"
...
@@ -230,9 +224,6 @@ class Env(object):
...
@@ -230,9 +224,6 @@ class Env(object):
venv_path
=
Path
(
venv_path
)
venv_path
=
Path
(
venv_path
)
if
not
name
:
if
not
name
:
if
not
cwd
:
cwd
=
Path
.
cwd
()
name
=
cwd
.
name
name
=
cwd
.
name
name
=
"{}-py{}"
.
format
(
name
,
"."
.
join
([
str
(
v
)
for
v
in
sys
.
version_info
[:
2
]]))
name
=
"{}-py{}"
.
format
(
name
,
"."
.
join
([
str
(
v
)
for
v
in
sys
.
version_info
[:
2
]]))
...
...
tests/conftest.py
View file @
94304e9d
import
os
import
pytest
import
pytest
import
shutil
import
shutil
import
tempfile
import
tempfile
...
@@ -45,6 +46,15 @@ def mock_clone(_, source, dest):
...
@@ -45,6 +46,15 @@ def mock_clone(_, source, dest):
shutil
.
copytree
(
str
(
folder
),
str
(
dest
))
shutil
.
copytree
(
str
(
folder
),
str
(
dest
))
@pytest.fixture
def
environ
():
original_environ
=
os
.
environ
yield
os
.
environ
os
.
environ
=
original_environ
@pytest.fixture
(
autouse
=
True
)
@pytest.fixture
(
autouse
=
True
)
def
git_mock
(
mocker
):
def
git_mock
(
mocker
):
# Patch git module to not actually clone projects
# Patch git module to not actually clone projects
...
...
tests/utils/test_env.py
View file @
94304e9d
import
os
from
poetry.utils._compat
import
Path
from
poetry.utils._compat
import
Path
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
VirtualEnv
from
poetry.utils.env
import
VirtualEnv
...
@@ -11,3 +13,14 @@ def test_virtualenvs_with_spaces_in_their_path_work_as_expected(tmp_dir):
...
@@ -11,3 +13,14 @@ def test_virtualenvs_with_spaces_in_their_path_work_as_expected(tmp_dir):
venv
=
VirtualEnv
(
venv_path
)
venv
=
VirtualEnv
(
venv_path
)
assert
venv
.
run
(
"python"
,
"-V"
,
shell
=
True
)
.
startswith
(
"Python"
)
assert
venv
.
run
(
"python"
,
"-V"
,
shell
=
True
)
.
startswith
(
"Python"
)
def
test_env_get_in_project_venv
(
tmp_dir
,
environ
):
if
"VIRTUAL_ENV"
in
environ
:
del
environ
[
"VIRTUAL_ENV"
]
(
Path
(
tmp_dir
)
/
".venv"
)
.
mkdir
()
venv
=
Env
.
get
(
cwd
=
Path
(
tmp_dir
))
assert
venv
.
path
==
Path
(
tmp_dir
)
/
".venv"
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