text: #!/usr/bin/env python3
  # -*- coding: utf-8 -*-
  #
  # PyDLT documentation build configuration file, created by
  # sphinx-quickstart on Mon Jan  8 16:59:57 2018.
  #
  # This file is execfile()d with the current directory set to its
  # containing dir.
  #
  # Note that not all possible configuration values are present in this
  # autogenerated file.
  #
  # All configuration values have a default; values that are commented out
  # serve to show the default.
  
  # If extensions (or modules to document with autodoc) are in another directory,
  # add these directories to sys.path here. If the directory is relative to the
  # documentation root, use os.path.abspath to make it absolute, like shown here.
  #
  # import os
  # import sys
  # sys.path.insert(0, os.path.abspath('../..'))
  
  
  # -- General configuration ------------------------------------------------
  
  # If your documentation needs a minimal Sphinx version, state it here.
  #
  # needs_sphinx = '1.0'
  
  # Add any Sphinx extension module names here, as strings. They can be
  # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
  # ones.
  
  import sys
  from unittest.mock import MagicMock
  
  class Mock(MagicMock):
      @classmethod
      def __getattr__(cls, name):
              return MagicMock()
  
  MOCK_MODULES = [
      'torch',
      'torch.optim',
      'torch.autograd',
      'torch.optim.lr_scheduler',
      'numpy',
      'numpy.ma',
      'matplotlib',
      'matplotlib.pyplot',
      'matplotlib.animation',
      'pandas', 
      'cv2']
  sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
  sys.modules.update([('torch.utils.data', Mock(Dataset=object))])
  
  import dlt
  import sphinx_rtd_theme
  
  extensions = [
      'sphinx.ext.autodoc',
      'sphinx.ext.autosummary',
      'sphinx.ext.doctest',
      'sphinx.ext.intersphinx',
      'sphinx.ext.todo',
      'sphinx.ext.coverage',
      'sphinx.ext.mathjax',
      'sphinx.ext.napoleon',
      'sphinx.ext.viewcode',
      'sphinx.ext.githubpages']
  
  napoleon_use_ivar = True
  napoleon_include_special_with_doc = True
  autodoc_docstring_signature = True
  
  
  # Add any paths that contain templates here, relative to this directory.
  templates_path = ['_templates']
  
  # The suffix(es) of source filenames.
  # You can specify multiple suffix as a list of string:
  #
  # source_suffix = ['.rst', '.md']
  source_suffix = '.rst'
  
  # The master toctree document.
  master_doc = 'index'
  
  # General information about the project.
  project = 'PyDLT'
  copyright = '2018, Demetris Marnerides'
  author = 'Demetris Marnerides'
  
  # The version info for the project you're documenting, acts as replacement for
  # |version| and |release|, also used in various other places throughout the
  # built documents.
  #
  # The short X.Y version.
  version = dlt.__version__.split('+')[0]
  # The full version, including alpha/beta/rc tags.
  release = dlt.__version__
  
  # The language for content autogenerated by Sphinx. Refer to documentation
  # for a list of supported languages.
  #
  # This is also used if you do content translation via gettext catalogs.
  # Usually you set "language" from the command line for these cases.
  language = None
  
  # List of patterns, relative to source directory, that match files and
  # directories to ignore when looking for source files.
  # This patterns also effect to html_static_path and html_extra_path
  exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
  
  # The name of the Pygments (syntax highlighting) style to use.
  pygments_style = 'sphinx'
  
  # If true, `todo` and `todoList` produce output, else they produce nothing.
  todo_include_todos = True
  
  
  # -- Options for HTML output ----------------------------------------------
  
  # The theme to use for HTML and HTML Help pages.  See the documentation for
  # a list of builtin themes.
  #
  # html_theme = 'alabaster'
  html_theme = 'sphinx_rtd_theme'
  html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
  
  # Theme options are theme-specific and customize the look and feel of a theme
  # further.  For a list of options available for each theme, see the
  # documentation.
  #
  # html_theme_options = {}
  html_theme_options = {
      'collapse_navigation': False,
      'display_version': True,
      'logo_only': True,
  }
  
  html_logo = '_static/img/new_logo.png'
  
  # Add any paths that contain custom static files (such as style sheets) here,
  # relative to this directory. They are copied after the builtin static files,
  # so a file named "default.css" will overwrite the builtin "default.css".
  
  
  def setup(app):
      app.add_stylesheet('https://fonts.googleapis.com/css?family=Lato',)
      app.add_stylesheet('_static/css/modified_pytorch_theme.css')
  
  # html_static_path = ['_static']
  
  # html_context = {
  #     'css_files': [
  #         'https://fonts.googleapis.com/css?family=Lato',
  #         '_static/css/modified_pytorch_theme.css'
  #     ],
  # }
  
  # Custom sidebar templates, must be a dictionary that maps document names
  # to template names.
  #
  # This is required for the alabaster theme
  # refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
  # html_sidebars = {
  #     '**': [
  #         'about.html',
  #         'navigation.html',
  #         'relations.html',  # needs 'show_related': True theme option to display
  #         'searchbox.html',
  #         'donate.html',
  #     ]
  # }
  
  
  # -- Options for HTMLHelp output ------------------------------------------
  
  # Output file base name for HTML help builder.
  htmlhelp_basename = 'PyDLTdoc'
  
  
  # -- Options for LaTeX output ---------------------------------------------
  
  latex_elements = {
      # The paper size ('letterpaper' or 'a4paper').
      #
      # 'papersize': 'letterpaper',
  
      # The font size ('10pt', '11pt' or '12pt').
      #
      # 'pointsize': '10pt',
  
      # Additional stuff for the LaTeX preamble.
      #
      # 'preamble': '',
  
      # Latex figure (float) alignment
      #
      # 'figure_align': 'htbp',
  }
  
  # Grouping the document tree into LaTeX files. List of tuples
  # (source start file, target name, title,
  #  author, documentclass [howto, manual, or own class]).
  latex_documents = [
      (master_doc, 'PyDLT.tex', 'PyDLT Documentation',
       'Demetris Marnerides', 'manual'),
  ]
  
  
  # -- Options for manual page output ---------------------------------------
  
  # One entry per manual page. List of tuples
  # (source start file, name, description, authors, manual section).
  man_pages = [
      (master_doc, 'pydlt', 'PyDLT Documentation',
       [author], 1)
  ]
  
  
  # -- Options for Texinfo output -------------------------------------------
  
  # Grouping the document tree into Texinfo files. List of tuples
  # (source start file, target name, title, author,
  #  dir menu entry, description, category)
  texinfo_documents = [
      (master_doc, 'PyDLT', 'PyDLT Documentation',
       author, 'PyDLT', 'One line description of project.',
       'Miscellaneous'),
  ]
  
  
  
  # -- A patch that prevents Sphinx from cross-referencing ivar tags -------
  # See http://stackoverflow.com/a/41184353/3343043
  
  from docutils import nodes
  from sphinx.util.docfields import TypedField
  from sphinx import addnodes
  
  
  def patched_make_field(self, types, domain, items, **kw):
      # `kw` catches `env=None` needed for newer sphinx while maintaining
      #  backwards compatibility when passed along further down!
  
      # type: (List, unicode, Tuple) -> nodes.field
      def handle_item(fieldarg, content):
          par = nodes.paragraph()
          par += addnodes.literal_strong('', fieldarg)  # Patch: this line added
          # par.extend(self.make_xrefs(self.rolename, domain, fieldarg,
          #                           addnodes.literal_strong))
          if fieldarg in types:
              par += nodes.Text(' (')
              # NOTE: using .pop() here to prevent a single type node to be
              # inserted twice into the doctree, which leads to
              # inconsistencies later when references are resolved
              fieldtype = types.pop(fieldarg)
              if len(fieldtype) == 1 and isinstance(fieldtype[0], nodes.Text):
                  typename = u''.join(n.astext() for n in fieldtype)
                  typename = typename.replace('int', 'python:int')
                  typename = typename.replace('long', 'python:long')
                  typename = typename.replace('float', 'python:float')
                  typename = typename.replace('type', 'python:type')
                  par.extend(self.make_xrefs(self.typerolename, domain, typename,
                                             addnodes.literal_emphasis, **kw))
              else:
                  par += fieldtype
              par += nodes.Text(')')
          par += nodes.Text(' -- ')
          par += content
          return par
  
      fieldname = nodes.field_name('', self.label)
      if len(items) == 1 and self.can_collapse:
          fieldarg, content = items[0]
          bodynode = handle_item(fieldarg, content)
      else:
          bodynode = self.list_type()
          for fieldarg, content in items:
              bodynode += nodes.list_item('', handle_item(fieldarg, content))
      fieldbody = nodes.field_body('', bodynode)
      return nodes.field('', fieldname, fieldbody)
  
  TypedField.make_field = patched_make_field