-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy path_optional_imports.py
More file actions
68 lines (51 loc) · 1.59 KB
/
_optional_imports.py
File metadata and controls
68 lines (51 loc) · 1.59 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""Utility module for handling optional dependencies for plotting functionality."""
import functools
def _matplotlib_import_error_message():
"""Generate helpful error message for missing matplotlib."""
return (
"matplotlib is required for plotting functionality. "
"Install it using one of the following methods:\n"
" pip install solarfactors[plot]\n"
" pip install matplotlib\n"
" conda install matplotlib"
)
def _check_matplotlib():
"""
Check if matplotlib is available and raise ImportError if not.
"""
try:
import matplotlib # noqa: F401
return True
except ImportError:
raise ImportError(_matplotlib_import_error_message())
def requires_matplotlib(func):
"""Decorator to check for matplotlib availability before executing
plotting functions.
Parameters
----------
func : callable
Function that requires matplotlib
Returns
-------
callable
Wrapped function that checks for matplotlib before execution
"""
@functools.wraps(func)
def wrapper(*args, **kwargs):
_check_matplotlib()
return func(*args, **kwargs)
return wrapper
def optional_matplotlib_import():
"""Import matplotlib.pyplot with optional handling.
Returns
-------
module or None
matplotlib.pyplot module if available, None otherwise
Raises
------
ImportError
If matplotlib is not available with helpful installation message
"""
_check_matplotlib()
import matplotlib.pyplot as plt # noqa: F401
return plt