Source code for statsmodels.tools.web

"""
Provides a function to open the system browser to either search or go directly
to a function's reference
"""
import webbrowser

from statsmodels.compat.python import urlencode
from statsmodels.version import release

BASE_URL = 'http://statsmodels.sourceforge.net/'


def _generate_url(arg, stable):
    """
    Parse inputs and return a correctly formatted URL or an error if the input
    is not understandable
    """
    url = BASE_URL
    if stable:
        url += 'stable/'
    else:
        url += 'devel/'

    if arg is None:
        return url
    elif type(arg) is str:
        url += 'search.html?'
        url += urlencode({'q': arg})
        url += '&check_keywords=yes&area=default'
    else:
        try:
            func = arg
            func_name = func.__name__
            func_module = func.__module__
            if not func_module.startswith('statsmodels.'):
                return ValueError('Function must be from statsmodels')
            url += 'generated/'
            url += func_module + '.' + func_name + '.html'
        except:
            return ValueError('Input not understood')
    return url


[docs]def webdoc(arg=None, stable=None): """ Opens a browser and displays online documentation Parameters ---------- arg, optional : string or statsmodels function Either a string to search the documentation or a function stable, optional : bool Flag indicating whether to use the stable documentation (True) or the development documentation (False). If not provided, opens the stable documentation if the current version of statsmodels is a release Examples -------- >>> import statsmodels.api as sm >>> sm.webdoc() # Documention site >>> sm.webdoc('glm') # Search for glm in docs >>> sm.webdoc(sm.OLS, stable=False) # Go to generated help for OLS, devel Notes ----- By default, open stable documentation if the current version of statsmodels is a release. Otherwise opens the development documentation. Uses the default system browser. """ stable = release if stable is None else stable url_or_error = _generate_url(arg, stable) if isinstance(url_or_error, ValueError): raise url_or_error webbrowser.open(url_or_error) return None