/
conftest.py
80 lines (66 loc) · 1.9 KB
/
conftest.py
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
69
70
71
72
73
74
75
76
77
78
79
80
import os
from contextlib import contextmanager
from distutils.version import LooseVersion
from pathlib import Path
import pyproj
from pyproj.datadir import get_data_dir, get_user_data_dir, set_data_dir
_NETWORK_ENABLED = pyproj.network.is_network_enabled()
PROJ_GTE_8 = LooseVersion(pyproj.__proj_version__) >= LooseVersion("8.0")
def unset_data_dir():
pyproj.datadir._USER_PROJ_DATA = None
pyproj.datadir._VALIDATED_PROJ_DATA = None
@contextmanager
def proj_network_env():
"""
Ensure global context network settings reset
"""
try:
yield
finally:
pyproj.network.set_network_enabled(_NETWORK_ENABLED)
@contextmanager
def proj_env():
"""
Ensure environment variable the same at the end of the test.
"""
unset_data_dir()
try:
yield
finally:
# make sure the data dir is cleared
unset_data_dir()
# reset back to the original path
set_data_dir(get_data_dir())
@contextmanager
def tmp_chdir(new_dir):
"""
This temporarily changes directories when running the tests.
Useful for when testing wheels in the pyproj directory
when pyproj has not been build and prevents conflicts.
"""
curdir = os.getcwd()
try:
os.chdir(new_dir)
yield
finally:
os.chdir(curdir)
def grids_available(*grid_names, check_network=True, check_all=False):
"""
Check if the grids are available
"""
if check_network and os.environ.get("PROJ_NETWORK") == "ON":
return True
available = [
(
Path(get_data_dir(), grid_name).exists()
or Path(get_user_data_dir(), grid_name).exists()
)
for grid_name in grid_names
]
if check_all:
return all(available)
return any(available)
def get_wgs84_datum_name():
if PROJ_GTE_8:
return "World Geodetic System 1984 ensemble"
return "World Geodetic System 1984"