# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config

# -- Path setup --------------------------------------------------------------

# 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

from recommonmark.transform import AutoStructify

sys.path.insert(0, os.path.abspath("../.."))

# -- Import project release information --------------------------------------

# Get version and release for this package
package_name = "dnac_pnp"
release_file = os.path.join("../..", "dnac_pnp/__version__.py")
release_info = {}
with open(release_file, "rb") as rf:
    exec(rf.read(), release_info)

# -- Project information -----------------------------------------------------

project = "dnac_pnp"
copyright = "2020, NTT Germany, Network Automation Development Team"
author = "Dalwar Hossain (dalwar.hossain@global.ntt)"

# The short X.Y version
version = release_info["__version__"]
# The full version, including alpha/beta/rc tags
release = release_info["__version__"]

# -- 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.
extensions = [
    "sphinx.ext.autodoc",
    "sphinx.ext.autosummary",
    "sphinx.ext.doctest",
    "sphinx.ext.napoleon",
    "recommonmark",
    "sphinx_copybutton",
]

# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates", "_modules"]

# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
source_suffix = [".rst", ".md"]

# The master toctree document.
master_doc = "index"

# 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 pattern also affects html_static_path and html_extra_path.
exclude_patterns = []

# The name of the Pygments (syntax highlighting) style to use.
# pygments_style = None
pygments_style = "sphinx"

# -- 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 = 'nature'
html_theme = "sphinx_rtd_theme"

# 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 = {
    "canonical_url": "",
    "analytics_id": "",
    "logo_only": False,
    "display_version": True,
    "prev_next_buttons_location": "bottom",
    "style_external_links": False,
    # Toc options
    "collapse_navigation": True,
    "sticky_navigation": True,
    "navigation_depth": 4,
    "includehidden": True,
    "titles_only": False,
}

# 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".
html_static_path = ["_static"]

# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself.  Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}


# -- Options for HTMLHelp output ---------------------------------------------

# Output file base name for HTML help builder.
htmlhelp_basename = "dnac_pnpdoc"

# -- Options for LaTeX output ------------------------------------------------
latex_engine = "xelatex"
latex_doc_class = "article"
latex_use_xindy = True
latex_elements = {
    "papersize": "a4paper",
    "figure_align": "htbp",
    "pointsize": "10pt",
    "printindex": r"\footnotesize\raggedright\printindex",
    "geometry": r"\usepackage{geometry}",
    "passoptionstopackages": r"\PassOptionsToPackage{svgnames}{xcolor}",
    "preamble": r"""
        \usepackage{sphinx}
        \sphinxsetup{
         verbatimwithframe=false,
         VerbatimColor={named}{Ivory},
         TitleColor={named}{NavyBlue},
         hintBorderColor={named}{LightCoral},
         attentionborder=2pt,
         attentionBorderColor={named}{Crimson},
         attentionBgColor={named}{FloralWhite},
         attentionborder=3pt,
         warningBorderColor={named}{Red},
         warningBgColor={named}{Seashell},
         noteborder=2pt,
         noteBorderColor={named}{DeepSkyBlue},
         cautionborder=2pt,
         cautionBorderColor={named}{Cyan},
         cautionBgColor={named}{LightCyan},
         dangerborder=3pt,
         dangerBorderColor={named}{Tomato},
         dangerBgColor={named}{LavenderBlush},
         }
        \setcounter{secnumdepth}{3}
        \setcounter{tocdepth}{2}
        \usepackage{amsmath,amsfonts,amssymb,amsthm}
        \usepackage{lmodern}
        \usepackage{graphicx}
        \usepackage[notlot,nottoc,notlof]{}
        \usepackage{color}
        \usepackage{transparent}
        \usepackage{eso-pic}
        \usepackage{lipsum}
        \usepackage{titlesec}
        \usepackage{setspace}
        \singlespacing
        \usepackage{datetime}

        \usepackage{fancyhdr}
        \pagestyle{fancy}
        \fancyhf{}

        %%% Alternating Header for oneside
        \fancyhead[L]{\ifthenelse{\isodd{\value{page}}}{ \small \nouppercase{\leftmark} }{}}
        \fancyhead[R]{\ifthenelse{\isodd{\value{page}}}{}{ \small \nouppercase{\rightmark} }}

        %%% Alternating Header for two side
        %\fancyhead[RO]{\small \nouppercase{\rightmark}}
        %\fancyhead[LE]{\small \nouppercase{\leftmark}}

        %% for oneside: change footer at right side. If you want to use Left and right then use same as header defined above.
        %%\fancyfoot[R]{\ifthenelse{\isodd{\value{page}}}{{\tiny NTT Germany} }{\href{http://pythondsp.readthedocs.io/en/latest/pythondsp/toc.html}{\tiny PythonDSP}}}

    

        %%% page number
        \fancyfoot[CO, CE]{\thepage}

        \renewcommand{\headrulewidth}{2pt}
        \renewcommand{\footrulewidth}{1pt}


        \RequirePackage{tocbibind} %%% comment this to remove page number for following
        \addto\captionsenglish{\renewcommand{\contentsname}{Table of contents}}

        \usepackage{enumitem}
        \setlist{nosep}
        \newcommand{\sectionbreak}{\clearpage}
        \usepackage{footnotebackref}
    """,
    "maketitle": r"""
        \pagenumbering{Roman} %%% to avoid page 1 conflict with actual page 1

        \begin{titlepage}
            \centering

            \vspace*{40mm} %%% * is used to give space from top
            \textbf{\Huge {DNA Center PnP Documentation}}

            \vspace{5mm}
            \begin{figure}[!h]
                \centering
                \includegraphics[scale=0.4]{../../source/_static/dnac_pnp.png}
            \end{figure}

            \vspace{0mm}
            \Large \textbf{{NTT Germany Network Automation Development Team}}

            \vspace*{0mm}
            \small  Last updated : {\today}


            %% \vfill adds at the bottom
            \vfill
        \end{titlepage}

        \clearpage
        \pagenumbering{roman}
        \tableofcontents
        %\listoffigures
        %\listoftables
        \clearpage
        \pagenumbering{arabic}

        """,
    "tableofcontents": " ",
}

# 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 = [
    (
        "index",
        "dnac_pnp.tex",
        "dnac_pnp Documentation",
        "NTT Germany Network Automation Development Team",
        "howto",
    )
]

latex_show_urls = "inline"

# -- Options for manual page output ------------------------------------------

# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
    (
        "index",
        "dnac_pnp",
        "dnac_pnp Documentation",
        ["NTT Germany Network Automation Development Team"],
        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,
        "dnac_pnp",
        "dnac_pnp Documentation",
        author,
        "dnac_pnp",
        "dnac_pnp",
        "Miscellaneous",
    )
]

# -- Options for Epub output -------------------------------------------------

# Bibliographic Dublin Core info.
epub_title = project

# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''

# A unique identification for the text.
#
# epub_uid = ''

# A list of files that should not be packed into the epub file.
epub_exclude_files = ["search.html"]

# -- Extension configuration -------------------------------------------------


# -- Custom configurations ---------------------------------------------------

html_show_sourcelink = False
html_show_sphinx = False
add_module_names = False
autodoc_warningiserror = False


# -- app setup hook ----------------------------------------------------------
def setup(app):
    app.add_config_value(
        "recommonmark_config",
        {
            "auto_toc_tree_section": "Contents",
            "enable_eval_rst": True,
            # 'enable_auto_doc_ref': True,
        },
        True,
    )
    app.add_transform(AutoStructify)


# -- Napoleon settings -------------------------------------------------------
napoleon_google_docstring = True
napoleon_numpy_docstring = True
napoleon_include_init_with_doc = False
napoleon_include_private_with_doc = False
napoleon_include_special_with_doc = True
napoleon_use_admonition_for_examples = False
napoleon_use_admonition_for_notes = False
napoleon_use_admonition_for_references = False
napoleon_use_ivar = False
napoleon_use_param = True
napoleon_use_rtype = True
