Commit a6f9746a authored by Ondřej Nový's avatar Ondřej Nový

New upstream version 3.2.2

parent c4e0718b
......@@ -12,7 +12,7 @@ __pycache__
/.cache
/.venv
/.eggs
/.pytest_cache
# auto-generated by setuptools_scm
/pytestqt/_version.py
repos:
- repo: https://github.com/ambv/black
rev: 18.6b4
hooks:
- id: black
args: [--safe, --quiet]
language_version: python3
- repo: https://github.com/asottile/blacken-docs
rev: v0.2.0
hooks:
- id: blacken-docs
additional_dependencies: [black==18.6b4]
language_version: python3
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v1.3.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: debug-statements
- id: flake8
- repo: https://github.com/asottile/pyupgrade
rev: v1.2.0
hooks:
- id: pyupgrade
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.0.0
hooks:
- id: rst-backticks
- repo: local
hooks:
- id: rst
name: rst
entry: rst-lint --encoding utf-8
files: ^(CHANGELOG.rst|HOWTORELEASE.rst|README.rst)$
language: python
additional_dependencies: [pygments, restructuredtext_lint]
language: generic
language: python
python: "3.6"
sudo: required
dist: trusty
env:
global:
# used by ci-helpers
- CONDA_CHANNELS=conda-forge SETUP_XVFB=true DEPS="pytest tox coveralls six"
- DEPS="pytest tox coveralls six"
- MINICONDA_VERSION=latest
- DISPLAY=":99.0"
matrix:
- LINTING=1
- PYTEST_QT_API=pyqt4 PYQT_PACKAGE="pyqt=4.*" PYTHON_VERSION=2.7
- PYTEST_QT_API=pyqt4v2 PYQT_PACKAGE="pyqt=4.*" PYTHON_VERSION=2.7
- PYTEST_QT_API=pyside PYQT_PACKAGE="pyside=1.*" PYTHON_VERSION=2.7
......@@ -22,28 +26,46 @@ env:
- PYTEST_QT_API=pyqt5 PYQT_PACKAGE="pyqt=5.*" PYTHON_VERSION=3.6
- PYTEST_QT_API=pyside2 PYQT_PACKAGE="pyside2=2.*" PYTHON_VERSION=3.6
install:
- sudo apt-get update
matrix:
# PySide2 crashes: #202
allow_failures:
- env: PYTEST_QT_API=pyside2 PYQT_PACKAGE="pyside2=2.*" PYTHON_VERSION=3.5
- env: PYTEST_QT_API=pyside2 PYQT_PACKAGE="pyside2=2.*" PYTHON_VERSION=3.6
# Xvfb / window manager
- sudo apt-get install -y xvfb herbstluftwm
install:
- |
if [ $LINTING == "1" ]; then
pip install -U pip
pip install tox
else
# Xvfb / window manager
sudo apt-get update
sudo apt-get install -y xvfb herbstluftwm
# Setup miniconda
- git clone --depth 1 git://github.com/astropy/ci-helpers.git
- CONDA_DEPENDENCIES="${DEPS} ${PYQT_PACKAGE}" source ci-helpers/travis/setup_conda.sh
- source activate test && pip install -e .
# courtesy of https://github.com/astropy/ci-helpers/blob/master/travis/setup_conda_linux.sh
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX +render -noreset
# Setup miniconda
wget https://repo.continuum.io/miniconda/Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda
export PATH="$HOME/miniconda/bin:$PATH"
conda config --add channels conda-forge
conda config --set always_yes yes --set changeps1 no
conda create -n test --quiet python=${PYTHON_VERSION} ${DEPS} ${PYQT_PACKAGE}
source activate test && pip install -e .
fi
before_script:
- "herbstluftwm &"
- sleep 1
script:
- source activate test && catchsegv coverage run --source=pytestqt -m pytest -v tests
# for some reason tox doesn't get installed with a u+x flag
- |
chmod u+x /home/travis/miniconda/envs/test/bin/tox
/home/travis/miniconda/envs/test/bin/tox -e lint
- |
if [ $LINTING == "1" ]; then
tox -e linting
else
source activate test && catchsegv coverage run --source=pytestqt -m pytest -v tests
fi
after_success:
- coveralls
......@@ -59,4 +81,3 @@ deploy:
tags: true
repo: pytest-dev/pytest-qt
condition: $PYTEST_QT_API = pyqt5
3.2.2 (2018-12-13)
------------------
- Fix Off-by-one error in ``modeltester`` (`#249`_). Thanks `@ext-jmmugnes`_ for the PR.
.. _#249: https://github.com/pytest-dev/pytest-qt/pull/249
3.2.1 (2018-10-01)
------------------
- Fixed compatibility with PyQt5 5.11.3
3.2.0 (2018-09-26)
------------------
- The ``CallbackBlocker`` returned by ``qtbot.waitCallback()`` now has a new
``assert_called_with(...)`` convenience method.
3.1.0 (2018-09-23)
------------------
- If Qt's model tester implemented in C++ is available (PyQt5 5.11 or newer),
the ``qtmodeltester`` fixture now uses that instead of the Python
implementation. This can be turned off by passing ``force_py=True`` to
``qtmodeltester.check()``.
- The Python code used by ``qtmodeltester`` is now based on the latest Qt
modeltester. This also means that the ``data_display_may_return_none``
attribute for ``qtmodeltester`` isn't used anymore.
- New ``qtbot.waitCallback()`` method that returns a ``CallbackBlocker``, which
can be used to wait for a callback to be called.
- ``qtbot.assertNotEmitted`` now has a new ``wait`` parameter which can be used
to make sure asynchronous signals aren't emitted by waiting after the code in
the ``with`` block finished.
- The ``qt_wait_signal_raising`` option was renamed to ``qt_default_raising``.
The old name continues to work, but is deprecated.
- The docs still referred to ``SignalTimeoutError`` in some places, despite it
being renamed to ``TimeoutError`` in the 2.1 release. This is now corrected.
- Improve debugging output when no Qt wrapper was found.
- When no context is available for warnings on Qt 5, no ``None:None:0`` line is
shown anymore.
- The ``no_qt_log`` marker is now registered with pytest so ``--strict`` can be
used.
- ``qtbot.waitSignal`` with timeout ``0`` now expects the signal to arrive
directly in the code enclosed by it.
Thanks `@The-Compiler`_ for the PRs.
3.0.2 (2018-08-31)
------------------
- Another fix related to ``QtInfoMsg`` objects during logging (`#225`_).
3.0.1 (2018-08-30)
------------------
- Fix handling of ``QtInfoMsg`` objects during logging (`#225`_).
Thanks `@willsALMANJ`_ for the report.
.. _#225: https://github.com/pytest-dev/pytest-qt/issues/225
3.0.0 (2018-07-12)
------------------
- Removed ``qtbot.mouseEvent`` proxy, it was an internal Qt function which has
now been removed in PyQt 5.11 (`#219`_). Thanks `@mitya57`_ for the PR.
- Fix memory leak when tests raised an exception inside Qt virtual methods (`#187`_).
Thanks `@fabioz`_ for the report and PR.
.. _#187: https://github.com/pytest-dev/pytest-qt/issues/187
.. _#219: https://github.com/pytest-dev/pytest-qt/pull/219
2.4.1 (2018-06-14)
------------------
- Properly handle chained exceptions when capturing them inside
virtual methods (`#215`_). Thanks `@fabioz`_ for the report and sample
code with the fix.
.. _#215: https://github.com/pytest-dev/pytest-qt/pull/215
2.4.0
-----
- Use new pytest 3.6 marker API when possible (`#212`_). Thanks `@The-Compiler`_ for the PR.
.. _#212: https://github.com/pytest-dev/pytest-qt/pull/212
2.3.2
-----
- Fix ``QStringListModel`` import when using ``PySide2`` (`#209`_). Thanks `@rth`_ for the PR.
.. _#209: https://github.com/pytest-dev/pytest-qt/pull/209
2.3.1
-----
- ``PYTEST_QT_API`` environment variable correctly wins over ``qt_api``
ini variable if both are set at the same time (`#196`_). Thanks `@mochick` for the PR.
ini variable if both are set at the same time (`#196`_). Thanks `@mochick`_ for the PR.
.. _#196: https://github.com/pytest-dev/pytest-qt/pull/196
.. _@mochick: https://github.com/mochick
2.3.0
-----
......@@ -21,7 +131,7 @@
Thanks `@p0las`_ for the PR.
.. _#189: https://github.com/pytest-dev/pytest-qt/issues/189
.. _@p0las: https://github.com/p0las
2.2.0
......@@ -30,7 +140,7 @@
- ``pytest-qt`` now supports `PySide2`_ thanks to `@rth`_!
.. _PySide2: https://wiki.qt.io/PySide2
.. _@rth: https://github.com/rth
2.1.2
-----
......@@ -193,7 +303,7 @@ Other Changes
`@The-Compiler`_ for the PR (closes `107`_)!
- raise ``RuntimeError`` instead of ``ImportError`` when failing to import
any Qt binding: raising the latter causes `pluggy` in `pytest-2.8` to
any Qt binding: raising the latter causes ``pluggy`` in ``pytest-2.8`` to
generate a subtle warning instead of a full blown error.
Thanks `@Sheeo`_ for bringing this problem to attention (closes `109`_).
......@@ -445,12 +555,18 @@ First working version.
.. _@baudren: https://github.com/baudren
.. _@billyshambrook: https://github.com/billyshambrook
.. _@datalyze-solutions: https://github.com/datalyze-solutions
.. _@ext-jmmugnes: https://github.com/ext-jmmugnes
.. _@fabioz: https://github.com/fabioz
.. _@fogo: https://github.com/fogo
.. _@gqmelo: https://github.com/gqmelo
.. _@itghisi: https://github.com/itghisi
.. _@jdreaver: https://github.com/jdreaver
.. _@mitya57: https://github.com/mitya57
.. _@mochick: https://github.com/mochick
.. _@montefra: https://github.com/montefra
.. _@MShekow: https://github.com/MShekow
.. _@p0las: https://github.com/p0las
.. _@rth: https://github.com/rth
.. _@Sheeo: https://github.com/Sheeo
.. _@The-Compiler: https://github.com/The-Compiler
.. _@willsALMANJ: https://github.com/willsALMANJ
Here are the steps on how to make a new release.
1. Create a ``release-VERSION`` branch from ``upstream/master``.
2. Update ``CHANGELOG.rst``.
3. Push a branch with the changes.
4. Once all builds pass, push a tag named ``VERSION`` to ``upstream``.
5. After the deployment is complete, merge the PR.
Metadata-Version: 1.1
Metadata-Version: 2.1
Name: pytest-qt
Version: 2.3.1
Version: 3.2.2
Summary: pytest support for PyQt and PySide applications
Home-page: http://github.com/pytest-dev/pytest-qt
Author: Bruno Oliveira
Author-email: nicoddemus@gmail.com
License: MIT
Description-Content-Type: UNKNOWN
Description: =========
pytest-qt
=========
pytest-qt is a `pytest`_ plugin that allows programmers to write tests
for `PySide`_, `PySide2` and `PyQt`_ applications.
for `PySide`_, ``PySide2`` and `PyQt`_ applications.
The main usage is to use the `qtbot` fixture, responsible for handling `qApp`
creation as needed and provides methods to simulate user interaction,
The main usage is to use the ``qtbot`` fixture, responsible for handling ``qApp``
creation as needed and provides methods to simulate user interaction,
like key presses and mouse clicks:
......@@ -24,11 +23,11 @@ Description: =========
def test_hello(qtbot):
widget = HelloWidget()
qtbot.addWidget(widget)
# click in the Greet button and make sure it updates the appropriate label
qtbot.mouseClick(widget.button_greet, QtCore.Qt.LeftButton)
assert widget.greet_label.text() == 'Hello!'
assert widget.greet_label.text() == "Hello!"
.. _PySide: https://pypi.python.org/pypi/PySide
......@@ -40,10 +39,10 @@ Description: =========
.. |version| image:: http://img.shields.io/pypi/v/pytest-qt.svg
:target: https://pypi.python.org/pypi/pytest-qt
.. |anaconda| image:: https://anaconda.org/conda-forge/pytest-qt/badges/version.svg
.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/pytest-qt.svg
:target: https://anaconda.org/conda-forge/pytest-qt
.. |travis| image:: https://img.shields.io/travis/pytest-dev/pytest-qt/master.svg
:target: https://travis-ci.org/pytest-dev/pytest-qt
......@@ -53,14 +52,17 @@ Description: =========
.. |docs| image:: https://readthedocs.org/projects/pytest-qt/badge/?version=latest
:target: https://pytest-qt.readthedocs.io
.. |appveyor| image:: https://img.shields.io/appveyor/ci/pytest-dev/pytest-qt/master.svg
.. |appveyor| image:: https://img.shields.io/appveyor/ci/nicoddemus/pytest-qt/master.svg
:target: https://ci.appveyor.com/project/nicoddemus/pytest-qt
.. |python| image:: https://img.shields.io/pypi/pyversions/pytest-qt.svg
:target: https://pypi.python.org/pypi/pytest-qt/
:alt: Supported Python versions
|python| |version| |anaconda| |travis| |appveyor| |coverage| |docs|
.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/ambv/black
|python| |version| |conda-forge| |travis| |appveyor| |coverage| |docs| |black|
Features
......@@ -142,15 +144,18 @@ Description: =========
Running tests
-------------
Tests are run using `tox`_. The simplest way to test is with `PySide`_, as it
is available on pip and can be installed by ``tox`` automatically::
Tests are run using `tox`_. It is recommended to develop locally on Python 3 because
``PyQt5`` and ``PySide2`` are easily installable using ``pip``::
$ tox -e py34-pyside,py27-pyside,docs
$ tox -e py37-pyside2,py37-pyqt5
``pytest-qt`` is formatted using `black <https://github.com/ambv/black>`_ and uses
`pre-commit <https://github.com/pre-commit/pre-commit>`_ for linting checks before commits. You
can install ``pre-commit`` locally with::
$ pip install pre-commit
$ pre-commit install
If you want to test against `PyQt`_, install it into your global python
installation and use the ``py27-pyqt4``, ``py34-pyqt4`` or ``py34-pyqt5``
testing environments, and ``tox`` will copy the appropriate files into
its virtual environments to ensure isolation.
Contributors
------------
......@@ -172,13 +177,13 @@ Description: =========
.. |pycharm| image:: https://www.jetbrains.com/pycharm/docs/logo_pycharm.png
:target: https://www.jetbrains.com/pycharm
.. |pydev| image:: http://www.pydev.org/images/pydev_banner3.png
:target: https://www.pydev.org
|pycharm|
|pydev|
|pycharm|
|pydev|
.. _tox: https://tox.readthedocs.io
......@@ -194,7 +199,10 @@ Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Desktop Environment :: Window Managers
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
Provides-Extra: doc
......@@ -3,10 +3,10 @@ pytest-qt
=========
pytest-qt is a `pytest`_ plugin that allows programmers to write tests
for `PySide`_, `PySide2` and `PyQt`_ applications.
for `PySide`_, ``PySide2`` and `PyQt`_ applications.
The main usage is to use the `qtbot` fixture, responsible for handling `qApp`
creation as needed and provides methods to simulate user interaction,
The main usage is to use the ``qtbot`` fixture, responsible for handling ``qApp``
creation as needed and provides methods to simulate user interaction,
like key presses and mouse clicks:
......@@ -15,11 +15,11 @@ like key presses and mouse clicks:
def test_hello(qtbot):
widget = HelloWidget()
qtbot.addWidget(widget)
# click in the Greet button and make sure it updates the appropriate label
qtbot.mouseClick(widget.button_greet, QtCore.Qt.LeftButton)
assert widget.greet_label.text() == 'Hello!'
assert widget.greet_label.text() == "Hello!"
.. _PySide: https://pypi.python.org/pypi/PySide
......@@ -31,10 +31,10 @@ This allows you to test and make sure your view layer is behaving the way you ex
.. |version| image:: http://img.shields.io/pypi/v/pytest-qt.svg
:target: https://pypi.python.org/pypi/pytest-qt
.. |anaconda| image:: https://anaconda.org/conda-forge/pytest-qt/badges/version.svg
.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/pytest-qt.svg
:target: https://anaconda.org/conda-forge/pytest-qt
.. |travis| image:: https://img.shields.io/travis/pytest-dev/pytest-qt/master.svg
:target: https://travis-ci.org/pytest-dev/pytest-qt
......@@ -44,14 +44,17 @@ This allows you to test and make sure your view layer is behaving the way you ex
.. |docs| image:: https://readthedocs.org/projects/pytest-qt/badge/?version=latest
:target: https://pytest-qt.readthedocs.io
.. |appveyor| image:: https://img.shields.io/appveyor/ci/pytest-dev/pytest-qt/master.svg
.. |appveyor| image:: https://img.shields.io/appveyor/ci/nicoddemus/pytest-qt/master.svg
:target: https://ci.appveyor.com/project/nicoddemus/pytest-qt
.. |python| image:: https://img.shields.io/pypi/pyversions/pytest-qt.svg
:target: https://pypi.python.org/pypi/pytest-qt/
:alt: Supported Python versions
|python| |version| |anaconda| |travis| |appveyor| |coverage| |docs|
.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/ambv/black
|python| |version| |conda-forge| |travis| |appveyor| |coverage| |docs| |black|
Features
......@@ -133,15 +136,18 @@ fixed, and make sure to include yourself in the contributors list. :)
Running tests
-------------
Tests are run using `tox`_. The simplest way to test is with `PySide`_, as it
is available on pip and can be installed by ``tox`` automatically::
Tests are run using `tox`_. It is recommended to develop locally on Python 3 because
``PyQt5`` and ``PySide2`` are easily installable using ``pip``::
$ tox -e py34-pyside,py27-pyside,docs
$ tox -e py37-pyside2,py37-pyqt5
``pytest-qt`` is formatted using `black <https://github.com/ambv/black>`_ and uses
`pre-commit <https://github.com/pre-commit/pre-commit>`_ for linting checks before commits. You
can install ``pre-commit`` locally with::
$ pip install pre-commit
$ pre-commit install
If you want to test against `PyQt`_, install it into your global python
installation and use the ``py27-pyqt4``, ``py34-pyqt4`` or ``py34-pyqt5``
testing environments, and ``tox`` will copy the appropriate files into
its virtual environments to ensure isolation.
Contributors
------------
......@@ -163,12 +169,12 @@ Many thanks to:
.. |pycharm| image:: https://www.jetbrains.com/pycharm/docs/logo_pycharm.png
:target: https://www.jetbrains.com/pycharm
.. |pydev| image:: http://www.pydev.org/images/pydev_banner3.png
:target: https://www.pydev.org
|pycharm|
|pydev|
|pycharm|
|pydev|
.. _tox: https://tox.readthedocs.io
......@@ -20,7 +20,7 @@ environment:
- PYTHON_VERSION: "2.7"
PYTEST_QT_API: "pyside"
CONDA_DEPENDENCIES: "pytest pyside=1.*"
- PYTHON_VERSION: "3.4"
PYTEST_QT_API: "pyqt4"
CONDA_DEPENDENCIES: "pytest pyqt=4.*"
......@@ -45,6 +45,11 @@ environment:
PYTEST_QT_API: "pyside2"
CONDA_DEPENDENCIES: "pytest pyside2=2.*"
matrix:
exclude:
# PySide2 crashes: #202
- PYTEST_QT_API: "pyside2"
platform:
-x64
......@@ -69,3 +74,5 @@ build: false
test_script:
- "%CMD_IN_ENV% python -m pytest -v tests/"
skip_tags: true
......@@ -17,7 +17,7 @@ For example:
def test_exit_button(qtbot, monkeypatch):
exit_calls = []
monkeypatch.setattr(QApplication, 'exit', lambda: exit_calls.append(1))
monkeypatch.setattr(QApplication, "exit", lambda: exit_calls.append(1))
button = get_app_exit_button()
qtbot.click(button)
assert exit_calls == [1]
......@@ -28,8 +28,7 @@ Or using the ``mock`` package:
.. code-block:: python
def test_exit_button(qtbot):
with mock.patch.object(QApplication, 'exit'):
with mock.patch.object(QApplication, "exit"):
button = get_app_exit_button()
qtbot.click(button)
assert QApplication.exit.call_count == 1
......@@ -11,213 +11,207 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
import sys
import os
# 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.
sys.path.insert(0, os.path.abspath('..'))
sys.path.insert(0, os.path.abspath(".."))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# 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.coverage', 'sphinx.ext.viewcode']
extensions = ["sphinx.ext.autodoc", "sphinx.ext.coverage", "sphinx.ext.viewcode"]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
templates_path = ["_templates"]
# The suffix of source filenames.
source_suffix = '.rst'
source_suffix = ".rst"
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
master_doc = "index"
# General information about the project.
project = u'pytest-qt'
copyright = u'2013, Bruno Oliveira'
project = u"pytest-qt"
copyright = u"2013, Bruno Oliveira"
# 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.
from pytestqt import version
# The short X.Y version.
# The full version, including alpha/beta/rc tags.
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
exclude_patterns = ["_build"]
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
pygments_style = "sphinx"
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# modindex_common_prefix = []
# -- 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 = 'sphinx_rtd_theme'
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 = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# html_favicon = None
# 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']
html_static_path = ["_static"]
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# html_file_suffix = None
# Output file base name for HTML help builder.