Repository: qiskit-community/qiskit-finance (language: python)

Issue:
Update docs to use new sphinx theme
<!--
⚠️ If you do not respect this template, your pull request will be closed.
⚠️ Your pull request title should be short detailed and understandable for all.
⚠️ Also, please add it in the CHANGELOG file under Unreleased section.
⚠️ If your pull request fixes an open issue, please link to the issue.

✅ I have added the tests to cover my changes.
✅ I have updated the documentation accordingly.
✅ I have read the CONTRIBUTING document.
-->

### Summary
Similar to Qiskit/qiskit-nature#979


### Details and comments



Update docs to use new sphinx theme
<!--
⚠️ If you do not respect this template, your pull request will be closed.
⚠️ Your pull request title should be short detailed and understandable for all.
⚠️ Also, please add it in the CHANGELOG file under Unreleased section.
⚠️ If your pull request fixes an open issue, please link to the issue.

✅ I have added the tests to cover my changes.
✅ I have updated the documentation accordingly.
✅ I have read the CONTRIBUTING document.
-->

### Summary
Similar to Qiskit/qiskit-nature#979


### Details and comments





Discussion / hints:
## Pull Request Test Coverage Report for [Build 3527035374](https://coveralls.io/builds/54477707)

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **75.708%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/54477707/badge)](https://coveralls.io/builds/54477707) |
| :-- | --: |
| Change from base [Build 3482376587](https://coveralls.io/builds/54293832): |  0.0% |
| Covered Lines: | 642 |
| Relevant Lines: | 848 |

---
##### 💛  - [Coveralls](https://coveralls.io)

## Pull Request Test Coverage Report for [Build 3527035374](https://coveralls.io/builds/54477707)

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **75.708%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/54477707/badge)](https://coveralls.io/builds/54477707) |
| :-- | --: |
| Change from base [Build 3482376587](https://coveralls.io/builds/54293832): |  0.0% |
| Covered Lines: | 642 |
| Relevant Lines: | 848 |

---
##### 💛  - [Coveralls](https://coveralls.io)


Fix patch:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 520cbd7..5bb31c3 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -195,6 +195,7 @@ jobs:
   Tutorials:
     runs-on: ${{ matrix.os }}
     strategy:
+      fail-fast: false
       matrix:
         os: [ubuntu-latest]
         python-version: [3.8, '3.10']
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
deleted file mode 100644
index 242acdf..0000000
--- a/docs/_templates/layout.html
+++ /dev/null
@@ -1,401 +0,0 @@
-{# TEMPLATE VAR SETTINGS #}
-{%- set url_root = pathto('', 1) %}
-{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
-{%- if not embedded and docstitle %}
-  {%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
-{%- else %}
-  {%- set titlesuffix = "" %}
-{%- endif %}
-{%- set lang_attr = 'en' if language == None else (language | replace('_', '-')) %}
-{% import 'theme_variables.jinja' as theme_variables %}
-
-<!DOCTYPE html>
-<!--[if IE 8]><html class="no-js lt-ie9" lang="{{ lang_attr }}" > <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="{{ lang_attr }}" > <!--<![endif]-->
-<head>
-  <meta charset="utf-8">
-  {{ metatags }}
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  {% block htmltitle %}
-  <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
-  {% endblock %}
-
-  {# FAVICON #}
-  {% if favicon %}
-    <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
-  {% endif %}
-  {# CANONICAL URL #}
-  {% if theme_canonical_url %}
-    <link rel="canonical" href="{{ theme_canonical_url }}{{ pagename }}.html"/>
-  {% endif %}
-
-  {# CSS #}
-
-  {# OPENSEARCH #}
-  {% if not embedded %}
-    {% if use_opensearch %}
-      <link rel="search" type="application/opensearchdescription+xml"
-            title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
-            href="{{ pathto('_static/opensearch.xml', 1) }}"/>
-    {% endif %}
-
-  {% endif %}
-
-  <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
-  <!-- <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" /> -->
-  {%- for css in css_files %}
-    {%- if css|attr("rel") %}
-  <link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
-    {%- else %}
-  <link rel="stylesheet" href="{{ pathto(css, 1) }}" type="text/css" />
-    {%- endif %}
-  {%- endfor %}
-  {%- for cssfile in extra_css_files %}
-    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
-  {%- endfor %}
-
-  {%- block linktags %}
-    {%- if hasdoc('about') %}
-    <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
-    {%- endif %}
-    {%- if hasdoc('genindex') %}
-    <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
-    {%- endif %}
-    {%- if hasdoc('search') %}
-    <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
-    {%- endif %}
-    {%- if hasdoc('copyright') %}
-    <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
-    {%- endif %}
-    {%- if next %}
-    <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
-    {%- endif %}
-    {%- if prev %}
-    <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
-    {%- endif %}
-  {%- endblock %}
-  {%- block extrahead %} {% endblock %}
-
-  {# Keep modernizr in head - http://modernizr.com/docs/#installing #}
-  <script src="{{ pathto('_static/js/modernizr.min.js', 1) }}"></script>
-
-</head>
-
-<div class="container-fluid header-holder tutorials-header" id="header-holder">
-  <div class="container">
-    <div class="header-container">
-      <a class="header-logo" href="{{ theme_variables.external_urls['home'] }}" aria-label="PyTorch"></a>
-
-      <div class="main-menu">
-        <ul>
-          <li {%- if pagename == 'getting_started' %} class="active"{% endif %}>
-            <a href="{{ pathto('getting_started') }}">Getting started</a>
-          </li>
-
-          <li {%- if pagename == 'tutorials' %} class="active"{% endif %}>
-            <a href="{{ theme_variables.external_urls['tutorials'] }}" target="_blank">Tutorials</a>
-          </li>
-
-          <li>
-            <a href="{{ theme_variables.external_urls['partners'] }}" target="_blank">Partners</a>
-          </li>
-
-          <li>
-            <div id="resourcesDropdownButton" data-toggle="resources-dropdown" class="resources-dropdown">
-              <a class="resource-option with-down-orange-arrow">
-                Applications
-              </a>
-              <div class="resources-dropdown-menu">
-                <a class="nav-dropdown-item" href="{{ theme_variables.external_urls['ml'] }}">
-                  <span class="dropdown-title">Machine learning</span>
-                  <p>QSVM, VQC (Variational Quantum Classifier), and QGAN (Quantum Generative
-                    Adversarial Network) algorithms.</p>
-                </a>
-                <a class="nav-dropdown-item" href="{{ theme_variables.external_urls['nature'] }}">
-                  <span class="dropdown-title">Nature</span>
-                  <p>Quantum applications in chemistry, physics, and biology.</p>
-                </a>
-                <a class="nav-dropdown-item" href="{{ theme_variables.external_urls['finance'] }}">
-                  <span class="dropdown-title">Finance</span>
-                  <p>Uncertainty components for stock/securities problems, Ising translators for
-                    portfolio optimizations and data providers to source real or random data.</p>
-                </a>
-                <a class="nav-dropdown-item" href="{{ theme_variables.external_urls['optim'] }}">
-                  <span class="dropdown-title">Optimization</span>
-                  <p>High-level optimization problems that are ready to
-                    run on simulators and real quantum devices</p>
-                </a>
-              </div>
-          </li>
-          <li>
-              <a href="{{ theme_variables.external_urls['experiments'] }}" target="_blank">Experiments</a>
-          </li>
-          <li>
-            <div id="resourcesDropdownButton" data-toggle="resources-dropdown" class="resources-dropdown">
-              <a class="resource-option with-down-orange-arrow">
-                Resources
-              </a>
-              <div class="resources-dropdown-menu">
-                <a class="doc-dropdown-option nav-dropdown-item" href="{{ theme_variables.external_urls['slack'] }}">
-                  <span class="dropdown-title">Slack support</span>
-                  <p></p>
-                </a>
-                <a class="doc-dropdown-option nav-dropdown-item" href="{{ theme_variables.external_urls['textbook'] }}">
-                  <span class="dropdown-title">Qiskit Textbook</span>
-                  <p></p>
-                </a>
-                <a class="doc-dropdown-option nav-dropdown-item" href="{{ theme_variables.external_urls['events'] }}">
-                  <span class="dropdown-title">Qiskit events</span>
-                  <p></p>
-                </a>
-            </div>
-          </li>
-          <li>
-            <a href="{{ theme_variables.external_urls['github'] }}" target="_blank">Github</a>
-          </li>
-        </ul>
-      </div>
-
-      <a class="main-menu-open-button" href="#" data-behavior="open-mobile-menu"></a>
-    </div>
-
-  </div>
-</div>
-
-
-<body class="pytorch-body">
-
-  {% block extrabody %} {% endblock %}
-
-    {# SIDE NAV, TOGGLES ON MOBILE #}
-
-    {% include "versions.html" %}
-
-    <div class="table-of-contents-link-wrapper">
-      <span>Table of Contents</span>
-      <a href="#" class="toggle-table-of-contents" data-behavior="toggle-table-of-contents"></a>
-    </div>
-
-    <nav data-toggle="wy-nav-shift" class="pytorch-left-menu" id="pytorch-left-menu">
-      <div class="pytorch-side-scroll">
-        <div class="pytorch-menu pytorch-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-          <div class="pytorch-left-menu-search">
-            {% block sidebartitle %}
-
-            {% if theme_display_version %}
-              {%- set nav_version = version %}
-              {% if READTHEDOCS and current_version %}
-                {%- set nav_version = current_version %}
-              {% endif %}
-              {% if nav_version %}
-                <div class="version">
-                  {{ nav_version }}
-                </div>
-              {% endif %}
-            {% endif %}
-
-            {% include "searchbox.html" %}
-
-            {% endblock %}
-          </div>
-
-          {% block menu %}
-            {#
-              The singlehtml builder doesn't handle this toctree call when the
-              toctree is empty. Skip building this for now.
-            #}
-            {% if 'singlehtml' not in builder %}
-              {% set global_toc = toctree(maxdepth=1,
-                                          collapse=theme_collapse_navigation|tobool,
-                                          includehidden=theme_includehidden|tobool,
-                                          titles_only=theme_titles_only|tobool) %}
-            {% endif %}
-            {% if global_toc %}
-              {{ global_toc }}
-            {% else %}
-              <!-- Local TOC -->
-              <div class="local-toc">{{ toc }}</div>
-            {% endif %}
-          {% endblock %}
-        </div>
-      </div>
-    </nav>
-
-    <div class="pytorch-container">
-      <div class="pytorch-page-level-bar" id="pytorch-page-level-bar">
-        <div class="pytorch-breadcrumbs-wrapper">
-          {% include "breadcrumbs.html" %}
-        </div>
-
-        <div class="pytorch-shortcuts-wrapper" id="pytorch-shortcuts-wrapper">
-          Shortcuts
-        </div>
-      </div>
-
-      <section data-toggle="wy-nav-shift" id="pytorch-content-wrap" class="pytorch-content-wrap">
-        <div class="pytorch-content-left">
-
-        {%- block content %}
-          {% if theme_style_external_links|tobool %}
-          <div class="rst-content style-external-links">
-          {% else %}
-          <div class="rst-content">
-          {% endif %}
-            <div role="main" class="main-content" itemscope="itemscope" itemtype="http://schema.org/Article">
-            {%- block document %}
-             <article itemprop="articleBody" id="pytorch-article" class="pytorch-article">
-              {% block body %}{% endblock %}
-             </article>
-             {% if self.comments()|trim %}
-             <div class="articleComments">
-              {% block comments %}{% endblock %}
-             </div>
-             {% endif%}
-            </div>
-            {%- endblock %}
-            {% include "footer.html" %}
-          </div>
-        {%- endblock %}
-        </div>
-
-        <div class="pytorch-content-right" id="pytorch-content-right">
-          <div class="pytorch-right-menu" id="pytorch-right-menu">
-            <div class="pytorch-side-scroll" id="pytorch-side-scroll-right">
-              {{ toc }}
-            </div>
-          </div>
-        </div>
-      </section>
-    </div>
-
-  {% if not embedded %}
-
-     {% if sphinx_version >= "1.8.0" %}
-       <script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
-       {%- for scriptfile in script_files %}
-         {{ js_tag(scriptfile) }}
-       {%- endfor %}
-     {% else %}
-       <script type="text/javascript">
-           var DOCUMENTATION_OPTIONS = {
-               URL_ROOT:'{{ url_root }}',
-               VERSION:'{{ release|e }}',
-               LANGUAGE:'{{ language }}',
-               COLLAPSE_INDEX:false,
-               FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
-               HAS_SOURCE:  {{ has_source|lower }},
-               SOURCELINK_SUFFIX: '{{ sourcelink_suffix }}'
-           };
-       </script>
-       {%- for scriptfile in script_files %}
-         <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
-       {%- endfor %}
-     {% endif %}
-
-  {% endif %}
-
-  <script type="text/javascript" src="{{ pathto('_static/js/vendor/popper.min.js', 1) }}"></script>
-  <script type="text/javascript" src="{{ pathto('_static/js/vendor/bootstrap.min.js', 1) }}"></script>
-  <script src="https://cdnjs.cloudflare.com/ajax/libs/list.js/1.5.0/list.min.js"></script>
-  <script type="text/javascript" src="{{ pathto('_static/js/theme.js', 1) }}"></script>
-
-  <script type="text/javascript">
-      jQuery(function () {
-          SphinxRtdTheme.Navigation.enable({{ 'true' if theme_sticky_navigation|tobool else 'false' }});
-      });
-  </script>
-
-{%- block footer %} {% endblock %}
-
-  <div>
-    <br>
-  </div>
-
-  <!-- Begin Mobile Menu -->
-
-  <div class="mobile-main-menu">
-    <div class="container-fluid">
-      <div class="container">
-        <div class="mobile-main-menu-header-container">
-          <a class="header-logo" href="{{ theme_variables.external_urls['home'] }}" aria-label="PyTorch"></a>
-          <a class="main-menu-close-button" href="#" data-behavior="close-mobile-menu"></a>
-        </div>
-      </div>
-    </div>
-
-    <div class="mobile-main-menu-links-container">
-      <div class="main-menu">
-        <ul>
-          <li>
-            <a href="{{ pathto('getting_started') }}">Getting Started</a>
-          </li>
-          <li>
-            <a href="{{ theme_variables.external_urls['tutorials'] }}" target="_blank">Tutorials</a>
-          </li>
-          <li>
-            <a href="{{ theme_variables.external_urls['partners'] }}">Partners</a>
-          </li>
-          <br>
-          <li class="resources-mobile-menu-title">
-            Applications
-          </li>
-          <ul class="resources-mobile-menu-items">
-            <li>
-              <a href="{{ theme_variables.external_urls['ml'] }}">Machine learning</a>
-            </li>
-
-            <li>
-              <a href="{{ theme_variables.external_urls['nature'] }}">Nature</a>
-            </li>
-
-            <li>
-              <a href="{{ theme_variables.external_urls['finance'] }}">Finance</a>
-            </li>
-
-            <li>
-              <a href="{{ theme_variables.external_urls['optim'] }}">Optimization</a>
-            </li>
-          </ul>
-          <br>
-          <li>
-            <a href="{{ theme_variables.external_urls['experiments'] }}">Experiments</a>
-          </li>
-          <br>
-          <li class="resources-mobile-menu-title">
-            Resources
-          </li>
-
-          <ul class="resources-mobile-menu-items">
-            <li>
-              <a href="{{ theme_variables.external_urls['slack'] }}">Slack support</a>
-            </li>
-          </ul>
-          <br>
-        </ul>
-      </div>
-    </div>
-  </div>
-
-  <!-- End Mobile Menu -->
-
-  <script type="text/javascript" src="{{ pathto('_static/js/vendor/anchor.min.js', 1) }}"></script>
-
-  <script type="text/javascript">
-    $(document).ready(function() {
-      mobileMenu.bind();
-      mobileTOC.bind();
-      pytorchAnchors.bind();
-      sideMenus.bind();
-      scrollToAnchor.bind();
-      highlightNavigation.bind();
-      mainMenuDropdown.bind();
-      filterTags.bind();
-
-      // Add class to links that have code blocks, since we cannot create links in code blocks
-      $("article.pytorch-article a span.pre").each(function(e) {
-        $(this).closest("a").addClass("has-code");
-      });
-    })
-  </script>
-</body>
-</html>
diff --git a/docs/conf.py b/docs/conf.py
index 8dae0da..11027b9 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -115,7 +115,6 @@
 nbsphinx_timeout = 360
 nbsphinx_execute = os.getenv("QISKIT_DOCS_BUILD_TUTORIALS", "never")
 nbsphinx_widgets_path = ""
-exclude_patterns = ["_build", "**.ipynb_checkpoints"]
 nbsphinx_thumbnails = {}
 
 spelling_word_list_filename = "../.pylintdict"
@@ -215,6 +214,7 @@
     "qiskit": ("https://qiskit.org/documentation", None),
 }
 
+html_context = {"analytics_enabled": True}
 # -- Extension configuration -------------------------------------------------
 
 
diff --git a/requirements-dev.txt b/requirements-dev.txt
index c690f5d..392d7af 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -17,6 +17,6 @@ qiskit-aer
 mypy>=0.780
 mypy-extensions>=0.4.3
 nbsphinx
-qiskit_sphinx_theme
+qiskit_sphinx_theme>=1.10.*
 networkx>=2.2,<2.6
 types-certifi


Test patch:
diff --git a/test/data_providers/test_data_providers.py b/test/data_providers/test_data_providers.py
index cce9caa..59c5f28 100644
--- a/test/data_providers/test_data_providers.py
+++ b/test/data_providers/test_data_providers.py
@@ -200,16 +200,16 @@ def test_exchangedata(self):
             self.fail(f"Test of ExchangeDataProvider failed: {str(ex)}")
 
     @data(
-        [["AEO", "AEP"], [[7.0, 1.0], [1.0, 15.0]], [[1.0e00, 9.2e-05], [9.2e-05, 1.0e00]]],
-        ["AEO", 7.0, [[1.0]]],
+        [["MSFT", "AAPL"], [[1367.0, 481.0], [481.0, 213.0]], [[1.0, 2.99e-05], [2.99e-05, 1.0]]],
+        ["MSFT", 1367.0, [[1.0]]],
     )
     @unpack
     def test_yahoo(self, tickers, covariance, similarity):
         """Yahoo data test"""
         yahoo = YahooDataProvider(
             tickers=tickers,
-            start=datetime.datetime(2018, 1, 1),
-            end=datetime.datetime(2018, 12, 31),
+            start=datetime.datetime(2021, 1, 1),
+            end=datetime.datetime(2021, 12, 31),
         )
         try:
             yahoo.run()
@@ -219,7 +219,7 @@ def test_yahoo(self, tickers, covariance, similarity):
                 )
             with self.subTest("test YahooDataProvider get_similarity_matrix"):
                 np.testing.assert_array_almost_equal(
-                    yahoo.get_similarity_matrix(), np.array(similarity), decimal=1
+                    yahoo.get_similarity_matrix(), np.array(similarity), decimal=6
                 )
         except QiskitFinanceError as ex:
             self.fail(f"Test of YahooDataProvider failed: {str(ex)}")