code: def read_tags(filename):
      
      with open(filename) as f:
          ast_tree = ast.parse(f.read(), filename)
  
      res = {}
      for node in ast.walk(ast_tree):
          if type(node) is not ast.Assign:
              continue
  
          target = node.targets[0]
          if type(target) is not ast.Name:
              continue
          if not (target.id.startswith('__') and target.id.endswith('__')):
              continue
  
          name = target.id[2:-2]
          res[name] = ast.literal_eval(node.value)
  
      return res
docs: Reads values of "magic tags" defined in the given Python file.
  
      :param filename: Python filename to read the tags from
      :return: Dictionary of tags