Mercurial > repos > bcclaywell > argo_navis
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 |