Skip to content

Commit 8e25e76

Browse files
authored
Fix download data for examples (#155)
1 parent e7798e3 commit 8e25e76

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

.github/workflows/test.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ jobs:
130130
pixi run -e ${{ matrix.environment }} test-unit $COV
131131
- name: Test Examples
132132
if: needs.setup.outputs.code_change == 'true'
133+
env:
134+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For download data
133135
run: |
134136
pixi run -e ${{ matrix.environment }} test-example
135137
- uses: codecov/codecov-action@v4

examples/download.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,54 @@
1+
import os
2+
from shutil import rmtree
3+
14
try:
25
import requests
36
from platformdirs import user_cache_path
47
except ImportError:
5-
raise ImportError("requests and platformdirs are needed to download data")
8+
raise ImportError("requests and platformdirs are needed to download data") from None
9+
10+
11+
if os.environ.get("GITHUB_TOKEN"):
12+
HEADERS = {"Authorization": f"token {os.environ['GITHUB_TOKEN']}"}
13+
else:
14+
HEADERS = None
615

716

817
def download_map(dataset):
918
if dataset not in ("naturalearth_lowres", "naturalearth_cities"):
10-
raise ValueError(f"Unknown dataset: {dataset}, supported datasets are 'naturalearth_lowres' and 'naturalearth_cities'")
19+
raise ValueError(
20+
f"Unknown dataset: {dataset}, supported datasets are 'naturalearth_lowres' and 'naturalearth_cities'"
21+
)
1122
url = f"https://api.github.com/repos/geopandas/geopandas/contents/geopandas/datasets/{dataset}?ref=v0.14.4"
1223
local_dir = user_cache_path() / "spatialpandas" / dataset
1324

1425
if local_dir.exists():
1526
return local_dir
1627

17-
response = requests.get(url)
18-
if response.status_code == 200:
28+
response = requests.get(url, headers=HEADERS)
29+
if response.ok:
1930
files = response.json()
2031
else:
21-
print(f"Failed to retrieve contents: {response.status_code}")
22-
return None
32+
raise ValueError(
33+
f"Failed to retrieve contents ({response.status_code}): \n {response.text}"
34+
)
2335

2436
if not local_dir.exists():
2537
local_dir.mkdir(parents=True)
2638

2739
for file in files:
2840
file_url = file["download_url"]
2941
file_name = file["name"]
30-
file_response = requests.get(file_url)
42+
file_response = requests.get(file_url, headers=HEADERS)
43+
if not file_response.ok:
44+
rmtree(local_dir)
45+
raise ValueError(f"Failed to download file: {file_name}, \n{file_response.text}")
3146
with open(local_dir / file_name, "wb") as f:
3247
f.write(file_response.content)
3348

3449
return local_dir
50+
51+
52+
if __name__ == "__main__":
53+
download_map("naturalearth_lowres")
54+
download_map("naturalearth_cities")

0 commit comments

Comments
 (0)