Skip to content

Commit eb8909d

Browse files
committed
new _generate_file_path
1 parent fdf7f8a commit eb8909d

1 file changed

Lines changed: 46 additions & 42 deletions

File tree

src/openfoodfacts/taxonomy.py

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -21,49 +21,53 @@
2121
DEFAULT_CACHE_DIR = Path("~/.cache/openfoodfacts/taxonomy").expanduser()
2222

2323

24-
TAXONOMY_URLS = {
25-
Flavor.off: {
26-
TaxonomyType.category: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.category.dataset_path}",
27-
TaxonomyType.ingredient: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.ingredient.dataset_path}",
28-
TaxonomyType.label: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.label.dataset_path}",
29-
TaxonomyType.brand: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.brand.dataset_path}",
30-
TaxonomyType.packaging_shape: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.packaging_shape.dataset_path}",
31-
TaxonomyType.packaging_material: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.packaging_material.dataset_path}",
32-
TaxonomyType.packaging_recycling: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.packaging_recycling.dataset_path}",
33-
TaxonomyType.country: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.country.dataset_path}",
34-
TaxonomyType.store: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.store.dataset_path}",
35-
TaxonomyType.nova_group: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.nova_group.dataset_path}",
36-
TaxonomyType.additive: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.additive.dataset_path}",
37-
TaxonomyType.vitamin: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.vitamin.dataset_path}",
38-
TaxonomyType.mineral: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.mineral.dataset_path}",
39-
TaxonomyType.amino_acid: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.amino_acid.dataset_path}",
40-
TaxonomyType.nucleotide: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.nucleotide.dataset_path}",
41-
TaxonomyType.allergen: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.allergen.dataset_path}",
42-
TaxonomyType.state: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.state.dataset_path}",
43-
TaxonomyType.data_quality: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.data_quality.dataset_path}",
44-
TaxonomyType.origin: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.origin.dataset_path}",
45-
TaxonomyType.language: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.language.dataset_path}",
46-
TaxonomyType.other_nutritional_substance: f"{URLBuilder.static(Flavor.off, Environment.org)}/{TaxonomyType.other_nutritional_substance.dataset_path}",
47-
},
48-
Flavor.obf: {
49-
TaxonomyType.category: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.category.dataset_path}",
50-
TaxonomyType.ingredient: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.ingredient.dataset_path}",
51-
TaxonomyType.label: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.label.dataset_path}",
52-
TaxonomyType.brand: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.brand.dataset_path}",
53-
TaxonomyType.allergen: f"{URLBuilder.static(Flavor.obf, Environment.org)}/{TaxonomyType.allergen.dataset_path}",
54-
},
55-
Flavor.opff: {
56-
TaxonomyType.category: f"{URLBuilder.static(Flavor.opff, Environment.org)}/{TaxonomyType.category.dataset_path}",
57-
TaxonomyType.ingredient: f"{URLBuilder.static(Flavor.opff, Environment.org)}/{TaxonomyType.ingredient.dataset_path}",
58-
},
59-
Flavor.opf: {
60-
TaxonomyType.category: f"{URLBuilder.static(Flavor.opf, Environment.org)}/{TaxonomyType.category.dataset_path}",
61-
TaxonomyType.label: f"{URLBuilder.static(Flavor.opf, Environment.org)}/{TaxonomyType.label.dataset_path}",
62-
TaxonomyType.brand: f"{URLBuilder.static(Flavor.opf, Environment.org)}/{TaxonomyType.brand.dataset_path}",
63-
},
24+
TAXONOMY_MAPPING = {
25+
Flavor.off: (
26+
TaxonomyType.category,
27+
TaxonomyType.ingredient,
28+
TaxonomyType.label,
29+
TaxonomyType.brand,
30+
TaxonomyType.packaging_shape,
31+
TaxonomyType.packaging_material,
32+
TaxonomyType.packaging_recycling,
33+
TaxonomyType.country,
34+
TaxonomyType.store,
35+
TaxonomyType.nova_group,
36+
TaxonomyType.additive,
37+
TaxonomyType.vitamin,
38+
TaxonomyType.mineral,
39+
TaxonomyType.amino_acid,
40+
TaxonomyType.nucleotide,
41+
TaxonomyType.allergen,
42+
TaxonomyType.state,
43+
TaxonomyType.data_quality,
44+
TaxonomyType.origin,
45+
TaxonomyType.language,
46+
TaxonomyType.other_nutritional_substance,
47+
),
48+
Flavor.obf: (
49+
TaxonomyType.category,
50+
TaxonomyType.ingredient,
51+
TaxonomyType.label,
52+
TaxonomyType.brand,
53+
TaxonomyType.allergen,
54+
),
55+
Flavor.opff: (
56+
TaxonomyType.category,
57+
TaxonomyType.ingredient,
58+
),
59+
Flavor.opf: (
60+
TaxonomyType.category,
61+
TaxonomyType.label,
62+
TaxonomyType.brand,
63+
),
6464
}
6565

6666

67+
def _generate_file_path(taxonomy_type: TaxonomyType, flavor: Flavor):
68+
return f"{URLBuilder.static(flavor, Environment.org)}/{taxonomy_type.dataset_path}"
69+
70+
6771
class TaxonomyNode:
6872
"""A taxonomy element.
6973
@@ -433,7 +437,7 @@ def from_type(
433437
:param flavor: The data source, defaults to Flavor.off
434438
:return: a Taxonomy
435439
"""
436-
url = TAXONOMY_URLS[flavor][TaxonomyType[taxonomy_type]]
440+
url = _generate_file_path(taxonomy_type, flavor)
437441
return cls.from_url(url)
438442

439443

@@ -468,7 +472,7 @@ def get_taxonomy(
468472

469473
cache_dir = DEFAULT_CACHE_DIR if cache_dir is None else cache_dir
470474
taxonomy_path = cache_dir / filename
471-
url = TAXONOMY_URLS[flavor][taxonomy_type]
475+
url = _generate_file_path(taxonomy_type, flavor)
472476

473477
if not should_download_file(url, taxonomy_path, force_download, download_newer):
474478
return Taxonomy.from_path(taxonomy_path)

0 commit comments

Comments
 (0)