Skip to content

Commit 276bd84

Browse files
committed
Mark select functions as provisional or conditionally provisional.
1 parent a299a50 commit 276bd84

File tree

1 file changed

+32
-0
lines changed
  • src/pip/_internal/commands

1 file changed

+32
-0
lines changed

src/pip/_internal/commands/run.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,42 @@
33

44
from __future__ import absolute_import
55

6+
import functools
7+
import logging
8+
69
from pip._vendor import pip_run
710

811
from pip._internal.cli.base_command import SUCCESS, Command
912

13+
logger = logging.getLogger(__name__)
14+
15+
16+
def provisional(msg):
17+
"""
18+
Unconditionally warn when func is invoked.
19+
"""
20+
return provisional_eval(msg, cond=lambda result: True)
21+
22+
23+
def provisional_eval(msg, cond=bool):
24+
"""
25+
Warn if cond(func result) evaluates True.
26+
"""
27+
def decorator(func):
28+
@functools.wraps(func)
29+
def wrapper(*args, **kwargs):
30+
result = func(*args, **kwargs)
31+
if cond(result):
32+
logger.warning(msg)
33+
return result
34+
return wrapper
35+
return decorator
36+
37+
38+
pip_run.scripts.DepsReader.try_read = classmethod(provisional_eval(
39+
msg="Support for reading requirements from a script is provisional.")(
40+
vars(pip_run.scripts.DepsReader)['try_read'].__func__))
41+
1042

1143
class RunCommand(Command):
1244
"""Run a new Python interpreter with packages transient-installed"""

0 commit comments

Comments
 (0)