text: from __future__ import unicode_literals
  
  from mkdocs import utils
  from mkdocs.config import config_options
  
  # NOTE: The order here is important. During validation some config options
  # depend on others. So, if config option A depends on B, then A should be
  # listed higher in the schema.
  
  # Once we drop Python 2.6 support, this could be an OrderedDict, however, it
  # isn't really needed either as we always sequentially process the schema other
  # than at initialisation when we grab the full set of keys for convenience.
  
  DEFAULT_SCHEMA = (
  
      # Reserved for internal use, stores the mkdocs.yml config file.
      ('config_file_path', config_options.Type(utils.string_types)),
  
      # The title to use for the documentation
      ('site_name', config_options.Type(utils.string_types, required=True)),
  
      # Defines the structure of the navigation and which markdown files are
      # included in the build.
      ('pages', config_options.Pages()),
  
      # The full URL to where the documentation will be hosted
      ('site_url', config_options.URL()),
  
      # A description for the documentation project that will be added to the
      # HTML meta tags.
      ('site_description', config_options.Type(utils.string_types)),
      # The name of the author to add to the HTML meta tags
      ('site_author', config_options.Type(utils.string_types)),
  
      # The MkDocs theme for the documentation.
      ('theme', config_options.Theme(default='mkdocs')),
  
      # The directory containing the documentation markdown.
      ('docs_dir', config_options.Dir(default='docs', exists=True)),
  
      # The directory where the site will be built to
      ('site_dir', config_options.SiteDir(default='site')),
  
      # The directory of a theme to use if not using one of the builtin MkDocs
      # themes.
      ('theme_dir', config_options.ThemeDir(exists=True)),
  
      # A copyright notice to add to the footer of documentation.
      ('copyright', config_options.Type(utils.string_types)),
  
      # set of values for Google analytics containing the account IO and domain,
      # this should look like, ['UA-27795084-5', 'mkdocs.org']
      ('google_analytics', config_options.Type(list, length=2)),
  
      # The address on which to serve the live reloading docs server.
      ('dev_addr', config_options.IpAddress(default='127.0.0.1:8000')),
  
      # If `True`, use `<page_name>/index.hmtl` style files with hyperlinks to
      # the directory.If `False`, use `<page_name>.html style file with
      # hyperlinks to the file.
      # True generates nicer URLs, but False is useful if browsing the output on
      # a filesystem.
      ('use_directory_urls', config_options.Type(bool, default=True)),
  
      # Specify a link to the project source repo to be included
      # in the documentation pages.
      ('repo_url', config_options.RepoURL()),
  
      # A name to use for the link to the project source repo.
      # Default, If repo_url is unset then None, otherwise
      # "GitHub", "Bitbucket" or "GitLab" for known url or Hostname
      # for unknown urls.
      ('repo_name', config_options.Type(utils.string_types)),
  
      # Specify a URI to the docs dir in the project source repo, relative to the
      # repo_url. When set, a link directly to the page in the source repo will
      # be added to the generated HTML. If repo_url is not set also, this option
      # is ignored.
      ('edit_uri', config_options.Type(utils.string_types)),
  
      # Specify which css or javascript files from the docs directory should be
      # additionally included in the site.
      ('extra_css', config_options.Extras(file_match=utils.is_css_file, default=[])),
      ('extra_javascript', config_options.Extras(
          file_match=utils.is_javascript_file, default=[])),
  
      # Similar to the above, but each template (HTML or XML) will be build with
      # Jinja2 and the global context.
      ('extra_templates', config_options.Type(list, default=[])),
  
      # PyMarkdown extension names.
      ('markdown_extensions', config_options.MarkdownExtensions(
          builtins=['toc', 'tables', 'fenced_code'],
          configkey='mdx_configs', default=[])),
  
      # PyMarkdown Extension Configs. For internal use only.
      ('mdx_configs', config_options.Private()),
  
      # enabling strict mode causes MkDocs to stop the build when a problem is
      # encountered rather than display an error.
      ('strict', config_options.Type(bool, default=False)),
  
      # the remote branch to commit to when using gh-deploy
      ('remote_branch', config_options.Type(
          utils.string_types, default='gh-pages')),
  
      # the remote name to push to when using gh-deploy
      ('remote_name', config_options.Type(utils.string_types, default='origin')),
  
      # extra is a mapping/dictionary of data that is passed to the template.
      # This allows template authors to require extra configuration that not
      # relevant to all themes and doesn't need to be explicitly supported by
      # MkDocs itself. A good example here would be including the current
      # project version.
      ('extra', config_options.SubConfig()),
  
      # a list of plugins. Each item may contain a string name or a key value pair.
      # A key value pair should be the string name (as the key) and a dict of config
      # options (as the value).
      ('plugins', config_options.Plugins(default=['search'])),
  )
  