Skip to content

Commit 099e16d

Browse files
committed
Add 2 more online JSON datasets for testing
1 parent b77d983 commit 099e16d

File tree

2 files changed

+75
-9
lines changed

2 files changed

+75
-9
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"""
2+
City Lots San Francisco dataset (https://github.com/zemirco/sf-city-lots-json)
3+
"""
4+
import json
5+
from datetime import datetime
6+
7+
try:
8+
from tqdm import tqdm
9+
except ImportError:
10+
tqdm = lambda x, **kwargs: x
11+
from json_to_models.generator import MetadataGenerator
12+
from json_to_models.models import compose_models
13+
from json_to_models.models.attr import AttrsModelCodeGenerator
14+
from json_to_models.models.base import generate_code
15+
from json_to_models.registry import ModelRegistry
16+
import requests
17+
18+
URL = "https://raw.githubusercontent.com/zemirco/sf-city-lots-json/master/citylots.json"
19+
20+
21+
def load_data() -> dict:
22+
r = requests.get(URL, stream=True)
23+
total_size = int(r.headers.get('content-length', 0))
24+
block_size = 1024 * 1024
25+
bytes_data = b""
26+
print(f"Start downloading data (total size {total_size / block_size:.2f}Mb)")
27+
for data in tqdm(r.iter_content(block_size), total=total_size // block_size, unit='Mb', unit_scale=True):
28+
bytes_data += data
29+
data = bytes_data.decode("utf-8")
30+
return json.loads(data)
31+
32+
33+
def main():
34+
data = load_data()
35+
36+
start_t = datetime.now()
37+
gen = MetadataGenerator()
38+
reg = ModelRegistry()
39+
print("Start generating metadata...")
40+
fields = gen.generate(data)
41+
print("Start generating models tree...")
42+
reg.process_meta_data(fields, model_name="Cities")
43+
print("Merging models...")
44+
reg.merge_models(generator=gen)
45+
print("Generating names...")
46+
reg.generate_names()
47+
48+
print("Generating structure...")
49+
structure = compose_models(reg.models_map)
50+
print("Generating final code...")
51+
code = generate_code(structure, AttrsModelCodeGenerator)
52+
print(code)
53+
print(f"{(datetime.now() - start_t).total_seconds():.4f} seconds")
54+
55+
56+
if __name__ == '__main__':
57+
main()

testing_tools/real_apis/randomapis.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
Example uses the following APIs:
33
- CHRONICLING API (https://chroniclingamerica.loc.gov/about/api/)
44
- Launch Library Reading API (https://launchlibrary.net/docs/1.3/api.html)
5+
- University Domains and Names Data List (https://github.com/Hipo/university-domains-list)
56
"""
67
import requests
78

89
from json_to_models.generator import MetadataGenerator
10+
from json_to_models.models import compose_models
11+
from json_to_models.models.attr import AttrsModelCodeGenerator
12+
from json_to_models.models.base import generate_code
913
from json_to_models.registry import ModelRegistry
10-
from testing_tools.pprint_meta_data import pretty_format_meta
1114
from testing_tools.real_apis import dump_response
1215

1316

@@ -19,24 +22,30 @@ def launchlibrary(mission_name="GPS"):
1922
return requests.get(f"https://launchlibrary.net/1.3/mission/{mission_name}").json()
2023

2124

25+
def university_domains():
26+
return requests.get("https://raw.githubusercontent.com/Hipo/university-domains-list/master/"
27+
"world_universities_and_domains.json").json()
28+
29+
2230
def main():
2331
chroniclingamerica_data = chroniclingamerica()
2432
dump_response("other", "chroniclingamerica", chroniclingamerica_data)
2533

2634
launchlibrary_data = launchlibrary()
2735
dump_response("other", "launchlibrary", launchlibrary_data)
2836

37+
university_domains_data = university_domains()
38+
dump_response("other", "university_domains", university_domains_data)
39+
2940
gen = MetadataGenerator()
3041
reg = ModelRegistry()
31-
for data in ([chroniclingamerica_data], [launchlibrary_data]):
42+
for data in ([chroniclingamerica_data], [launchlibrary_data], university_domains_data):
3243
fields = gen.generate(*data)
33-
34-
print(pretty_format_meta(fields))
35-
print('-' * 10)
36-
37-
model = reg.process_meta_data(fields)
38-
print(pretty_format_meta(model))
39-
print('-' * 10)
44+
reg.process_meta_data(fields)
45+
reg.merge_models(generator=gen)
46+
reg.generate_names()
47+
structure = compose_models(reg.models_map)
48+
print(generate_code(structure, AttrsModelCodeGenerator))
4049

4150

4251
if __name__ == '__main__':

0 commit comments

Comments
 (0)