comparison venv/lib/python2.7/site-packages/setuptools/tests/contexts.py @ 0:d67268158946 draft

planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author bcclaywell
date Mon, 12 Oct 2015 17:43:33 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d67268158946
1 import tempfile
2 import os
3 import shutil
4 import sys
5 import contextlib
6 import site
7
8 from ..compat import StringIO
9
10
11 @contextlib.contextmanager
12 def tempdir(cd=lambda dir:None, **kwargs):
13 temp_dir = tempfile.mkdtemp(**kwargs)
14 orig_dir = os.getcwd()
15 try:
16 cd(temp_dir)
17 yield temp_dir
18 finally:
19 cd(orig_dir)
20 shutil.rmtree(temp_dir)
21
22
23 @contextlib.contextmanager
24 def environment(**replacements):
25 """
26 In a context, patch the environment with replacements. Pass None values
27 to clear the values.
28 """
29 saved = dict(
30 (key, os.environ[key])
31 for key in replacements
32 if key in os.environ
33 )
34
35 # remove values that are null
36 remove = (key for (key, value) in replacements.items() if value is None)
37 for key in list(remove):
38 os.environ.pop(key, None)
39 replacements.pop(key)
40
41 os.environ.update(replacements)
42
43 try:
44 yield saved
45 finally:
46 for key in replacements:
47 os.environ.pop(key, None)
48 os.environ.update(saved)
49
50
51 @contextlib.contextmanager
52 def quiet():
53 """
54 Redirect stdout/stderr to StringIO objects to prevent console output from
55 distutils commands.
56 """
57
58 old_stdout = sys.stdout
59 old_stderr = sys.stderr
60 new_stdout = sys.stdout = StringIO()
61 new_stderr = sys.stderr = StringIO()
62 try:
63 yield new_stdout, new_stderr
64 finally:
65 new_stdout.seek(0)
66 new_stderr.seek(0)
67 sys.stdout = old_stdout
68 sys.stderr = old_stderr
69
70
71 @contextlib.contextmanager
72 def save_user_site_setting():
73 saved = site.ENABLE_USER_SITE
74 try:
75 yield saved
76 finally:
77 site.ENABLE_USER_SITE = saved
78
79
80 @contextlib.contextmanager
81 def suppress_exceptions(*excs):
82 try:
83 yield
84 except excs:
85 pass