Skip to content

Commit 839e2ff

Browse files
authored
Merge pull request NCAR#169 from sfalmo/fix-config
Fix handling of config for third party packages
2 parents 222681e + 1035812 commit 839e2ff

File tree

1 file changed

+42
-29
lines changed

1 file changed

+42
-29
lines changed

src/wrf/config.py

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,54 @@
1010
_local_config = local()
1111

1212

13-
def _init_local():
13+
def _try_enable_xarray():
1414
global _local_config
15-
1615
_local_config.xarray_enabled = True
17-
_local_config.cartopy_enabled = True
18-
_local_config.basemap_enabled = True
19-
_local_config.pyngl_enabled = True
20-
_local_config.cache_size = 20
21-
_local_config.initialized = True
22-
2316
try:
2417
from xarray import DataArray
2518
except ImportError:
2619
_local_config.xarray_enabled = False
2720

21+
22+
def _try_enable_cartopy():
23+
global _local_config
24+
_local_config.cartopy_enabled = True
2825
try:
2926
from cartopy import crs
3027
except ImportError:
3128
_local_config.cartopy_enabled = False
3229

30+
31+
def _try_enable_basemap():
32+
global _local_config
33+
_local_config.basemap_enabled = True
3334
try:
3435
from mpl_toolkits.basemap import Basemap
3536
except ImportError:
3637
_local_config.basemap_enabled = False
3738

39+
40+
def _try_enable_pyngl():
41+
global _local_config
42+
_local_config.pyngl_enabled = True
3843
try:
3944
from Ngl import Resources
4045
except ImportError:
4146
_local_config.pyngl_enabled = False
4247

4348

49+
def _init_local():
50+
global _local_config
51+
52+
_try_enable_xarray()
53+
_try_enable_cartopy()
54+
_try_enable_basemap()
55+
_try_enable_pyngl()
56+
57+
_local_config.cache_size = 20
58+
_local_config.initialized = True
59+
60+
4461
# Initialize the main thread's configuration
4562
_init_local()
4663

@@ -51,11 +68,11 @@ def init_local():
5168
def func_wrapper(wrapped, instance, args, kwargs):
5269
global _local_config
5370
try:
54-
init = _local_config.init
71+
initialized = _local_config.initialized
5572
except AttributeError:
5673
_init_local()
5774
else:
58-
if not init:
75+
if not initialized:
5976
_init_local()
6077

6178
return wrapped(*args, **kwargs)
@@ -77,17 +94,16 @@ def xarray_enabled():
7794

7895

7996
@init_local()
80-
def disable_xarray():
81-
"""Disable xarray."""
82-
global _local_config
83-
_local_config.xarray_enabled = False
97+
def enable_xarray():
98+
"""Enable xarray if it is installed."""
99+
_try_enable_xarray()
84100

85101

86102
@init_local()
87-
def enable_xarray():
88-
"""Enable xarray."""
103+
def disable_xarray():
104+
"""Disable xarray."""
89105
global _local_config
90-
_local_config.xarray_enabled = True
106+
_local_config.xarray_enabled = False
91107

92108

93109
@init_local()
@@ -105,16 +121,15 @@ def cartopy_enabled():
105121

106122
@init_local()
107123
def enable_cartopy():
108-
"""Enable cartopy."""
109-
global _local_config
110-
_local_config.cartopy_enabled = True
124+
"""Enable cartopy if it is installed."""
125+
_try_enable_cartopy()
111126

112127

113128
@init_local()
114129
def disable_cartopy():
115130
"""Disable cartopy."""
116131
global _local_config
117-
_local_config.cartopy_enabled = True
132+
_local_config.cartopy_enabled = False
118133

119134

120135
@init_local()
@@ -132,16 +147,15 @@ def basemap_enabled():
132147

133148
@init_local()
134149
def enable_basemap():
135-
"""Enable basemap."""
136-
global _local_config
137-
_local_config.basemap_enabled = True
150+
"""Enable basemap if it is installed."""
151+
_try_enable_basemap()
138152

139153

140154
@init_local()
141155
def disable_basemap():
142156
"""Disable basemap."""
143157
global _local_config
144-
_local_config.basemap_enabled = True
158+
_local_config.basemap_enabled = False
145159

146160

147161
@init_local()
@@ -159,16 +173,15 @@ def pyngl_enabled():
159173

160174
@init_local()
161175
def enable_pyngl():
162-
"""Enable pyngl."""
163-
global _local_config
164-
_local_config.pyngl_enabled = True
176+
"""Enable pyngl if it is installed."""
177+
_try_enable_pyngl()
165178

166179

167180
@init_local()
168181
def disable_pyngl():
169182
"""Disable pyngl."""
170183
global _local_config
171-
_local_config.pyngl_enabled = True
184+
_local_config.pyngl_enabled = False
172185

173186

174187
@init_local()

0 commit comments

Comments
 (0)