summaryrefslogtreecommitdiff
path: root/pkg_resources.py
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <Arfrever.FTA@GMail.Com>2013-12-20 22:09:39 +0100
committerArfrever Frehtes Taifersar Arahesis <Arfrever.FTA@GMail.Com>2013-12-20 22:09:39 +0100
commit03882a7d0d48dd842f95a2644d33f63d31f1e8a8 (patch)
tree664c49ac4790cd86c80a6647e02a582d14af4e4e /pkg_resources.py
parent9eb9ea1b62b34d83504d0331783a2947985cf0e4 (diff)
downloadpython-setuptools-git-03882a7d0d48dd842f95a2644d33f63d31f1e8a8.tar.gz
Fix NameError during installation with Python implementations (e.g. Jython) not containing parser module.
Diffstat (limited to 'pkg_resources.py')
-rw-r--r--pkg_resources.py54
1 files changed, 27 insertions, 27 deletions
diff --git a/pkg_resources.py b/pkg_resources.py
index c6228545..efe5d34d 100644
--- a/pkg_resources.py
+++ b/pkg_resources.py
@@ -1214,6 +1214,32 @@ class MarkerEvaluation(object):
return cls.interpret(parser.expr(text).totuple(1)[1])
@classmethod
+ def _markerlib_evaluate(cls, text):
+ """
+ Evaluate a PEP 426 environment marker using markerlib.
+ Return a boolean indicating the marker result in this environment.
+ Raise SyntaxError if marker is invalid.
+ """
+ import _markerlib
+ # markerlib implements Metadata 1.2 (PEP 345) environment markers.
+ # Translate the variables to Metadata 2.0 (PEP 426).
+ env = _markerlib.default_environment()
+ for key in env.keys():
+ new_key = key.replace('.', '_')
+ env[new_key] = env.pop(key)
+ try:
+ result = _markerlib.interpret(text, env)
+ except NameError:
+ e = sys.exc_info()[1]
+ raise SyntaxError(e.args[0])
+ return result
+
+ if 'parser' not in globals():
+ # Fall back to less-complete _markerlib implementation if 'parser' module
+ # is not available.
+ evaluate_marker = _markerlib_evaluate
+
+ @classmethod
def interpret(cls, nodelist):
while len(nodelist)==2: nodelist = nodelist[1]
try:
@@ -1242,34 +1268,8 @@ class MarkerEvaluation(object):
return s[1:-1]
raise SyntaxError("Language feature not supported in environment markers")
-def _markerlib_evaluate(text):
- """
- Evaluate a PEP 426 environment marker using markerlib.
- Return a boolean indicating the marker result in this environment.
- Raise SyntaxError if marker is invalid.
- """
- import _markerlib
- # markerlib implements Metadata 1.2 (PEP 345) environment markers.
- # Translate the variables to Metadata 2.0 (PEP 426).
- env = _markerlib.default_environment()
- for key in env.keys():
- new_key = key.replace('.', '_')
- env[new_key] = env.pop(key)
- try:
- result = _markerlib.interpret(text, env)
- except NameError:
- e = sys.exc_info()[1]
- raise SyntaxError(e.args[0])
- return result
-
invalid_marker = MarkerEvaluation.is_invalid_marker
-
-if 'parser' in globals():
- evaluate_marker = MarkerEvaluation.evaluate_marker
-else:
- # fallback to less-complete _markerlib implementation if 'parser' module
- # is not available.
- evaluate_marker = _markerlib_evaluate
+evaluate_marker = MarkerEvaluation.evaluate_marker
class NullProvider:
"""Try to implement resources and metadata for arbitrary PEP 302 loaders"""