diff options
| author | 2021-08-27 22:26:58 -0400 | |
|---|---|---|
| committer | 2021-08-27 22:26:58 -0400 | |
| commit | c99409545b1f04e49cd2d7170f165ef233103dcd (patch) | |
| tree | c218ce05a300d152ca1555bae60b699d122a7d3d | |
| parent | Make icon dict a constant; add project ideas icon. (diff) | |
Use MappingProxyType to freeze non-private dictionaries.
This is intended to make those mappings safer.
Diffstat (limited to '')
| -rw-r--r-- | pydis_site/apps/resources/utils.py | 17 | 
1 files changed, 13 insertions, 4 deletions
| diff --git a/pydis_site/apps/resources/utils.py b/pydis_site/apps/resources/utils.py index 623dd7b6..8454451a 100644 --- a/pydis_site/apps/resources/utils.py +++ b/pydis_site/apps/resources/utils.py @@ -3,6 +3,7 @@ from collections import defaultdict  from functools import reduce  from operator import and_, or_  from pathlib import Path +from types import MappingProxyType  import yaml  from django.conf import settings @@ -16,10 +17,12 @@ Resource = dict[str, t.Union[str, list[dict[str, str]], dict[str, list[str]]]]  RESOURCES_PATH = Path(settings.BASE_DIR, "pydis_site", "apps", "resources", "resources") -RESOURCES: dict[str, Resource] = {path.stem: yaml.safe_load(path.read_text()) for path -                                  in RESOURCES_PATH.rglob("*.yaml")} +RESOURCES: MappingProxyType[str, Resource] = MappingProxyType({ +    path.stem: yaml.safe_load(path.read_text()) +    for path in RESOURCES_PATH.rglob("*.yaml") +}) -RESOURCE_TABLE = {category: defaultdict(set) for category in ( +_resource_table = {category: defaultdict(set) for category in (      "topics",      "payment_tiers",      "complexity", @@ -29,7 +32,13 @@ RESOURCE_TABLE = {category: defaultdict(set) for category in (  for name, resource in RESOURCES.items():      for category, tags in resource['tags'].items():          for tag in tags: -            RESOURCE_TABLE[category][_transform_name(tag)].add(name) +            _resource_table[category][_transform_name(tag)].add(name) + +# Freeze the resources table +RESOURCE_TABLE = MappingProxyType({ +    category: MappingProxyType(d) +    for category, d in _resource_table.items() +})  def get_resources_from_search(search_categories: dict[str, set[str]]) -> list[Resource]: | 
