# -*- coding: utf-8 -*-

r"""
The :mod:`pygsp2` package is mainly organized around the following two modules:

* :mod:`.graphs` to create and manipulate various kinds of graphs,
* :mod:`.filters` to create and manipulate various graph filters.

Moreover, the following modules provide additional functionality:

* :mod:`.plotting` to plot,
* :mod:`.reduction` to reduce a graph while keeping its structure,
* :mod:`.features` to compute features on graphs,
* :mod:`.learning` to solve learning problems,
* :mod:`.optimization` to help solving convex optimization problems,
* :mod:`.utils` for various utilities.
* :mod:`.utils_examples` for metro applications.

"""

from . import graphs  # noqa: F401
from . import filters  # noqa: F401
from . import plotting  # noqa: F401
from . import reduction  # noqa: F401
from . import features  # noqa: F401
from . import learning  # noqa: F401
from . import optimization  # noqa: F401
from . import utils  # noqa: F401
from . import utils_examples # noqa: F401

# Users only call the plot methods from the objects.
# It's thus more convenient for them to have the doc there.
# But it's more convenient for developers to have the doc alongside the code.
try:
    filters.Filter.plot.__doc__ = plotting._plot_filter.__doc__
    graphs.Graph.plot.__doc__ = plotting._plot_graph.__doc__
    graphs.Graph.plot_spectrogram.__doc__ = plotting._plot_spectrogram.__doc__
except AttributeError:
    # For Python 2.7.
    filters.Filter.plot.__func__.__doc__ = plotting._plot_filter.__doc__
    graphs.Graph.plot.__func__.__doc__ = plotting._plot_graph.__doc__
    graphs.Graph.plot_spectrogram.__func__.__doc__ = plotting._plot_spectrogram.__doc__

__version__ = '0.5.1'
__release_date__ = '2017-12-15'


def test():  # pragma: no cover
    """Run the test suite."""
    import unittest
    # Lazy as it might be slow and require additional dependencies.
    from pygsp2.tests import suite
    unittest.TextTestRunner(verbosity=2).run(suite)
