docs: def _prepare_deprecation_data(self):
          """
          Cycles through the list of AppSettingDeprecation instances set on
          ``self.deprecations`` and prepulates two new dictionary attributes:
  
          ``self._deprecated_settings``:
              Uses the deprecated setting names themselves as the keys. Used to
              check whether a request is for a deprecated setting.
  
          ``self._renamed_settings``:
              Uses the 'replacement setting' names as keys (where supplied).
              Used to allow the helper to temporarily support override settings
              defined using the old name, when the values for the new setting are
              requested.
          """
          if not isinstance(self.deprecations, (list, tuple)):
              raise IncorrectDeprecationsValueType(
                  "'deprecations' must be a list or tuple, not a {}."
                  .format(type(self.deprecations).__name__)
              )
  
          self._deprecated_settings = {}
          self._replacement_settings = defaultdict(list)
  
          for item in self.deprecations:
              item.prefix = self.get_prefix()
  
              if not self.in_defaults(item.setting_name):
                  raise InvalidDeprecationDefinition(
                      "There is an issue with one of your setting deprecation "
                      "definitions. '{setting_name}' could not be found in "
                      "{defaults_module_path}. Please ensure a default value "
                      "remains there until the end of the setting's deprecation "
                      "period.".format(
                          setting_name=item.setting_name,
                          defaults_module_path=self._defaults_module_path,
                      )
                  )
  
              if item.setting_name in self._deprecated_settings:
                  raise DuplicateDeprecationError(
                      "The setting name for each deprecation definition must be "
                      "unique, but '{setting_name}' has been used more than once "
                      "for {helper_class}.".format(
                          setting_name=item.setting_name,
                          helper_class=self.__class__.__name__,
                      )
                  )
  
              self._deprecated_settings[item.setting_name] = item
  
              if item.replacement_name:
  
                  if not self.in_defaults(item.replacement_name):
                      raise InvalidDeprecationDefinition(
                          "There is an issue with one of your settings "
                          "deprecation definitions. '{replacement_name}' is not "
                          "a valid replacement for '{setting_name}', as no such "
                          "value can be found in {defaults_module_path}."
                          .format(
                              replacement_name=item.replacement_name,
                              setting_name=item.setting_name,
                              defaults_module_path=self._defaults_module_path,
                          )
                      )
  
                  self._replacement_settings[item.replacement_name].append(item)