Skip to content

Commit f75ade3

Browse files
authored
Merge pull request #410 from sjsrey/remote
Do not poll remotes on init.
2 parents 06b57db + 8d8580e commit f75ade3

File tree

3 files changed

+41
-21
lines changed

3 files changed

+41
-21
lines changed

libpysal/cg/ops/tests/test_tabular.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,15 @@ def test_dissolve(self):
5757
self.assertEqual(out[0].area, 2.0)
5858
self.assertEqual(out[1].area, 2.0)
5959

60-
answer_vertices0 = [(0, 0), (0, 1), (0, 2), (1, 2), (1, 1), (1, 0), (0, 0)]
61-
answer_vertices1 = [(2, 1), (2, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 1)]
60+
answer_vertices0 = set([(0, 0), (0, 1), (0, 2), (1, 2), (1, 1), (1, 0), (0, 0)])
61+
answer_vertices1 = set([(2, 1), (2, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 1)])
62+
63+
s0 = set([tuple(map(int,t)) for t in out[0].vertices])
64+
s1 = set([tuple(map(int,t)) for t in out[1].vertices])
65+
66+
self.assertTrue(s0==answer_vertices0)
67+
self.assertTrue(s1==answer_vertices1)
6268

63-
np.testing.assert_allclose(out[0].vertices, answer_vertices0)
64-
np.testing.assert_allclose(out[1].vertices, answer_vertices1)
6569

6670
def test_clip(self):
6771
pass

libpysal/examples/__init__.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,34 @@
44

55
from .base import example_manager
66
from .remotes import datasets as remote_datasets
7-
from .remotes import download as fetch_all
87
from .builtin import datasets as builtin_datasets
98

109

1110
from typing import Union
1211

1312
__all__ = ["get_path", "available", "explain", "fetch_all"]
1413

15-
example_manager.add_examples(remote_datasets)
1614
example_manager.add_examples(builtin_datasets)
1715

16+
def fetch_all():
17+
"""Fetch and install all remote datasets
18+
"""
19+
datasets = remote_datasets.datasets
20+
names = list(datasets.keys())
21+
names.sort()
22+
for name in names:
23+
print(name)
24+
example = datasets[name]
25+
try:
26+
example.download()
27+
except:
28+
print("Example not downloaded: {}".format(name))
29+
example_manager.add_examples(datasets)
30+
1831

1932
def available() -> str:
2033
"""List available datasets."""
34+
fetch_all()
2135

2236
return example_manager.available()
2337

@@ -30,8 +44,13 @@ def explain(name: str) -> str:
3044

3145
def load_example(example_name: str) -> Union[base.Example, builtin.LocalExample]:
3246
"""Load example dataset instance."""
47+
example = example_manager.load(example_name)
48+
49+
if example is None:
50+
fetch_all() # refresh remotes
51+
example = example_manager.load(example_name)
3352

34-
return example_manager.load(example_name)
53+
return example
3554

3655

3756
def get_path(file_name: str) -> str:

libpysal/examples/remotes.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,20 +95,17 @@ def poll_remotes():
9595
return datasets
9696

9797

98-
datasets = poll_remotes()
98+
#datasets = poll_remotes()
9999

100+
class Remotes:
101+
def __init__(self):
102+
self._datasets = None
100103

101-
def download(datasets=datasets):
102-
"""
103-
Download all known remotes
104-
"""
104+
@property
105+
def datasets(self):
106+
if self._datasets is None:
107+
self._datasets = poll_remotes()
108+
return self._datasets
109+
110+
datasets = Remotes()
105111

106-
names = list(datasets.keys())
107-
names.sort()
108-
for name in names:
109-
print(name)
110-
example = datasets[name]
111-
try:
112-
example.download()
113-
except:
114-
print("Example not downloaded: {}".format(name))

0 commit comments

Comments
 (0)