summaryrefslogtreecommitdiff
path: root/setuptools/depends.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2019-10-27 19:54:42 -0400
committerJason R. Coombs <jaraco@jaraco.com>2019-10-27 20:25:21 -0400
commit773f1ec3c2622a78ee0280eb1d2b03c60871c52b (patch)
tree2d7cc4a9d7d24ec2354d61925575b36103ac7862 /setuptools/depends.py
parent85a9ca5e75abf00e0dde55dde4e2b0a11f93c04a (diff)
downloadpython-setuptools-git-773f1ec3c2622a78ee0280eb1d2b03c60871c52b.tar.gz
Rely on contextlib.closing for brevity.
Diffstat (limited to 'setuptools/depends.py')
-rw-r--r--setuptools/depends.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/setuptools/depends.py b/setuptools/depends.py
index eed4913a..a37675cb 100644
--- a/setuptools/depends.py
+++ b/setuptools/depends.py
@@ -1,5 +1,6 @@
import sys
import marshal
+import contextlib
from distutils.version import StrictVersion
from .py33compat import Bytecode
@@ -81,6 +82,17 @@ class Require:
return self.version_ok(version)
+def maybe_close(f):
+ @contextlib.contextmanager
+ def empty():
+ yield
+ return
+ if not f:
+ return empty()
+
+ return contextlib.closing(f)
+
+
def get_module_constant(module, symbol, default=-1, paths=None):
"""Find 'module' by searching 'paths', and extract 'symbol'
@@ -94,7 +106,7 @@ def get_module_constant(module, symbol, default=-1, paths=None):
# Module doesn't exist
return None
- try:
+ with maybe_close(f):
if kind == PY_COMPILED:
f.read(8) # skip magic & date
code = marshal.load(f)
@@ -107,10 +119,6 @@ def get_module_constant(module, symbol, default=-1, paths=None):
imported = py27compat.get_module(module, paths, info)
return getattr(imported, symbol, None)
- finally:
- if f:
- f.close()
-
return extract_constant(code, symbol, default)