docs: def get_currencies(self):
          """Downloads xml currency data or if not available tries to use cached file copy"""
          try:
              resp = get(self.endpoint)
              resp.raise_for_status()
          except exceptions.RequestException as e:
              self.log(logging.ERROR, "%s: Problem whilst contacting endpoint:\n%s", self.name, e)
          else:
              with open(self._cached_currency_file, 'wb') as fd:
                  fd.write(resp.content)
  
          try:
              root = ET.parse(self._cached_currency_file).getroot()
          except FileNotFoundError as e:
              raise RuntimeError("%s: XML not found at endpoint or as cached file:\n%s" % (self.name, e))
  
          return root