Commit 30c7b8ac by Sébastien Eustace

Deprecate allows-prereleases in favor of allow-prereleases for consistency

parent 54bc8dfe
...@@ -105,7 +105,7 @@ If you do not specify a version constraint, poetry will choose a suitable one ba ...@@ -105,7 +105,7 @@ If you do not specify a version constraint, poetry will choose a suitable one ba
constraint["optional"] = True constraint["optional"] = True
if self.option("allow-prereleases"): if self.option("allow-prereleases"):
constraint["allows-prereleases"] = True constraint["allow-prereleases"] = True
if self.option("extras"): if self.option("extras"):
extras = [] extras = []
......
...@@ -46,13 +46,14 @@ class ApplicationConfig(BaseApplicationConfig): ...@@ -46,13 +46,14 @@ class ApplicationConfig(BaseApplicationConfig):
io = event.io io = event.io
if not command.loggers: loggers = ["poetry.packages.package"]
return
loggers += command.loggers
handler = IOHandler(io) handler = IOHandler(io)
handler.setFormatter(IOFormatter()) handler.setFormatter(IOFormatter())
for logger in command.loggers: for logger in loggers:
logger = logging.getLogger(logger) logger = logging.getLogger(logger)
logger.handlers = [handler] logger.handlers = [handler]
......
...@@ -19,7 +19,7 @@ class IOHandler(logging.Handler): ...@@ -19,7 +19,7 @@ class IOHandler(logging.Handler):
level = record.levelname.lower() level = record.levelname.lower()
err = level in ("warning", "error", "exception", "critical") err = level in ("warning", "error", "exception", "critical")
if err: if err:
self._io.error(msg, newline=True) self._io.error_line(msg)
else: else:
self._io.write_line(msg) self._io.write_line(msg)
except Exception: except Exception:
......
...@@ -290,6 +290,17 @@ class Factory: ...@@ -290,6 +290,17 @@ class Factory:
"Consider specifying a more explicit one." "Consider specifying a more explicit one."
) )
for name, constraint in config["dependencies"].items():
if not isinstance(constraint, dict):
continue
if "allows-prereleases" in constraint:
result["warnings"].append(
'The "{}" dependency specifies '
'the "allows-prereleases" property, which is deprecated. '
'Use "allow-preleases" instead.'.format(name)
)
# Checking for scripts with extras # Checking for scripts with extras
if "scripts" in config: if "scripts" in config:
scripts = config["scripts"] scripts = config["scripts"]
......
...@@ -247,6 +247,10 @@ ...@@ -247,6 +247,10 @@
"type": "string", "type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed." "description": "The PEP 508 compliant environment markers for which the dependency should be installed."
}, },
"allow-prereleases": {
"type": "boolean",
"description": "Whether the dependency allows prereleases or not."
},
"allows-prereleases": { "allows-prereleases": {
"type": "boolean", "type": "boolean",
"description": "Whether the dependency allows prereleases or not." "description": "Whether the dependency allows prereleases or not."
...@@ -304,6 +308,10 @@ ...@@ -304,6 +308,10 @@
"type": "string", "type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed." "description": "The PEP 508 compliant environment markers for which the dependency should be installed."
}, },
"allow-prereleases": {
"type": "boolean",
"description": "Whether the dependency allows prereleases or not."
},
"allows-prereleases": { "allows-prereleases": {
"type": "boolean", "type": "boolean",
"description": "Whether the dependency allows prereleases or not." "description": "Whether the dependency allows prereleases or not."
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import copy import copy
import logging
import re import re
from contextlib import contextmanager from contextlib import contextmanager
from typing import Union from typing import Union
from warnings import warn
from poetry.semver import Version from poetry.semver import Version
from poetry.semver import parse_constraint from poetry.semver import parse_constraint
...@@ -24,6 +26,8 @@ from .utils.utils import create_nested_marker ...@@ -24,6 +26,8 @@ from .utils.utils import create_nested_marker
AUTHOR_REGEX = re.compile(r"(?u)^(?P<name>[- .,\w\d'’\"()]+)(?: <(?P<email>.+?)>)?$") AUTHOR_REGEX = re.compile(r"(?u)^(?P<name>[- .,\w\d'’\"()]+)(?: <(?P<email>.+?)>)?$")
logger = logging.getLogger(__name__)
class Package(object): class Package(object):
...@@ -270,7 +274,18 @@ class Package(object): ...@@ -270,7 +274,18 @@ class Package(object):
python_versions = constraint.get("python") python_versions = constraint.get("python")
platform = constraint.get("platform") platform = constraint.get("platform")
markers = constraint.get("markers") markers = constraint.get("markers")
allows_prereleases = constraint.get("allows-prereleases", False) if "allows-prereleases" in constraint:
message = (
'The "{}" dependency specifies '
'the "allows-prereleases" property, which is deprecated. '
'Use "allow-preleases" instead.'.format(name)
)
warn(message, DeprecationWarning)
logger.warning(message)
allows_prereleases = constraint.get(
"allow-prereleases", constraint.get("allows-prereleases", False)
)
if "git" in constraint: if "git" in constraint:
# VCS dependency # VCS dependency
......
...@@ -42,6 +42,7 @@ Warning: A wildcard Python dependency is ambiguous. Consider specifying a more e ...@@ -42,6 +42,7 @@ Warning: A wildcard Python dependency is ambiguous. Consider specifying a more e
Error: 'description' is a required property Error: 'description' is a required property
Error: INVALID is not a valid license Error: INVALID is not a valid license
Warning: A wildcard Python dependency is ambiguous. Consider specifying a more explicit one. Warning: A wildcard Python dependency is ambiguous. Consider specifying a more explicit one.
Warning: The "pendulum" dependency specifies the "allows-prereleases" property, which is deprecated. Use "allow-preleases" instead.
""" """
assert expected == tester.io.fetch_output() assert expected == tester.io.fetch_output()
...@@ -8,3 +8,4 @@ license = "INVALID" ...@@ -8,3 +8,4 @@ license = "INVALID"
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "*" python = "*"
pendulum = {"version" = "^2.0.5", allows-prereleases = true}
...@@ -430,7 +430,7 @@ def test_solver_returns_extras_if_requested(solver, repo, package): ...@@ -430,7 +430,7 @@ def test_solver_returns_extras_if_requested(solver, repo, package):
def test_solver_returns_prereleases_if_requested(solver, repo, package): def test_solver_returns_prereleases_if_requested(solver, repo, package):
package.add_dependency("A") package.add_dependency("A")
package.add_dependency("B") package.add_dependency("B")
package.add_dependency("C", {"version": "*", "allows-prereleases": True}) package.add_dependency("C", {"version": "*", "allow-prereleases": True})
package_a = get_package("A", "1.0") package_a = get_package("A", "1.0")
package_b = get_package("B", "1.0") package_b = get_package("B", "1.0")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment