class_docstr: Interface for all readers.
  
  This class contains a mapping of file extensions / Reader classes, to know
  which Reader class must be used to read a file (based on its extension).
  This is customizable both with the 'READERS' setting, and with the
  'readers_init' signall for plugins.
class_docstr_tok: ["Interface","for","all","readers",".","This","class","contains","a","mapping","of","file","extensions","\/","Reader","classes",",","to","know","which","Reader","class","must","be","used","to","read","a","file","(","based","on","its","extension",")",".","This","is","customizable","both","with","the","'READERS","'","setting",",","and","with","the","'readers_init","'","signall","for","plugins","."]
code: def __init__(self, settings=None, cache_name=""):
      self.settings = settings or {}
      self.readers = {}
      self.reader_classes = {}
  
      for cls in [BaseReader] + BaseReader.__subclasses__():
          if not cls.enabled:
              logger.debug(
                  "Missing dependencies for %s",
                  ", ".join(cls.file_extensions),
              )
              continue
  
          for ext in cls.file_extensions:
              self.reader_classes[ext] = cls
  
      if self.settings["READERS"]:
          self.reader_classes.update(self.settings["READERS"])
  
      signals.readers_init.send(self)
  
      for fmt, reader_class in self.reader_classes.items():
          if not reader_class:
              continue
  
          self.readers[fmt] = reader_class(self.settings)
  
      # set up caching
      cache_this_level = (
          cache_name != ""
          and self.settings["CONTENT_CACHING_LAYER"] == "reader"
      )
      caching_policy = (
          cache_this_level and self.settings["CACHE_CONTENT"]
      )
      load_policy = (
          cache_this_level and self.settings["LOAD_CONTENT_CACHE"]
      )
      super().__init__(
          settings, cache_name, caching_policy, load_policy
      )
  
imports: import datetime
  import logging
  import os
  import re
  from collections import OrderedDict
  from html import escape
  from html.parser import HTMLParser
  from io import StringIO
  import docutils
  import docutils.core
  import docutils.io
  from docutils.parsers.rst.languages import get_language
  from docutils.writers.html4css1 import HTMLTranslator, Writer
  from pelican import rstdirectives
  from pelican.cache import FileStampDataCacher
  from pelican.contents import Author, Category, Page, Tag
  from pelican.plugins import signals
  from pelican.utils import get_date, pelican_open, posixize_path
label_desc: Use image node_id 1 to create a new Readers object from inherited base classes: FileStampDataCacher with example: obj = Readers(settings, cache_name)