text: """Utility functions to render Markdown text to HTML."""
  
  import markdown
  import six
  from markdown.extensions import codehilite
  
  from .imports import PygmentsHtmlFormatter
  
  
  def force_unicode(value, encoding='utf-8', errors='strict'):
      """Convert bytes or any other Python instance to string."""
      if isinstance(value, six.text_type):
          return value
      return value.decode(encoding, errors)
  
  
  def pygmented_markdown(text, flatpages=None):
      """Render Markdown text to HTML.
  
      Uses the `CodeHilite`_ extension only if `Pygments`_ is available. If
      `Pygments`_ is not available, "codehilite" is removed from list of
      extensions.
  
      If you need other extensions, set them up using the
      ``FLATPAGES_MARKDOWN_EXTENSIONS`` setting, which should be a sequence
      of strings or Markdown Extension objects.
      Extensions specified with entrypoint strings should be configured using
      ``FLATPAGES_EXTENSION_CONFIGS``.
  
      .. _CodeHilite:
         http://www.freewisdom.org/projects/python-markdown/CodeHilite
      .. _Pygments: http://pygments.org/
      """
      if flatpages:
          extensions = flatpages.config('markdown_extensions')
          extension_configs = flatpages.config('extension_configs')
      else:
          extensions = []
          extension_configs = {}
      if PygmentsHtmlFormatter is None:
          original_extensions = extensions
          original_config = extension_configs
          extensions = []
          extension_configs = {}
  
          for extension in original_extensions:
              if (
                  isinstance(extension, six.string_types) and
                  'codehilite' in extension
              ):
                  continue
              elif isinstance(
                  extension,
                  codehilite.CodeHiliteExtension
              ):
                  continue
              extensions.append(extension)
              if isinstance(extension, six.string_types):
                  if extension in original_config:
                      extension_configs[extension] = original_config[extension]
      elif not extensions:
          extensions = ['codehilite']
      return markdown.markdown(text, extensions=extensions,
                               extension_configs=extension_configs)
  
  
  def pygments_style_defs(style='default'):
      """:return: the CSS definitions for the `CodeHilite`_ Markdown plugin.
  
      :param style: The Pygments `style`_ to use.
  
      Only available if `Pygments`_ is.
  
      .. _CodeHilite:
         http://www.freewisdom.org/projects/python-markdown/CodeHilite
      .. _Pygments: http://pygments.org/
      .. _style: http://pygments.org/docs/styles/
      """
      formatter = PygmentsHtmlFormatter(style=style)
      return formatter.get_style_defs('.codehilite')
  