-
Notifications
You must be signed in to change notification settings - Fork 266
Expand file tree
/
Copy pathutils.py
More file actions
54 lines (41 loc) · 1.18 KB
/
utils.py
File metadata and controls
54 lines (41 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""Utility functions for unit testing."""
import os
import platform
import tempfile
from contextlib import contextmanager
from textwrap import dedent
__all__ = ("temporary_file",)
@contextmanager
def overridden_configuration(key, value):
from igraph import config
old_value = config[key]
config[key] = value
try:
yield
finally:
config[key] = old_value
@contextmanager
def temporary_file(content=None, mode=None, binary=False):
tmpf, tmpfname = tempfile.mkstemp()
os.close(tmpf)
if mode is None:
if content is None:
mode = "rb"
else:
mode = "wb"
tmpf = open(tmpfname, mode)
if content is not None:
if hasattr(content, "encode") and not binary:
tmpf.write(dedent(content).encode("utf8"))
else:
tmpf.write(content)
tmpf.close()
yield tmpfname
try:
os.unlink(tmpfname)
except Exception:
# ignore exceptions; it happens sometimes on Windows in the CI environment
# that it cannot remove the temporary file because another process (?) is
# using it...
pass
is_pypy = platform.python_implementation() == "PyPy"