1r"""Collection of quadrature methods."""
2import logging
3from functools import wraps
4
5from .frontend import generate_quadrature
6from .sparse_grid import sparse_grid
7from .utils import combine
8
9from .chebyshev import chebyshev_1, chebyshev_2
10from .clenshaw_curtis import clenshaw_curtis
11from .discrete import discrete
12from .fejer_1 import fejer_1
13from .fejer_2 import fejer_2
14from .gaussian import gaussian
15from .genz_keister import (
16    genz_keister_16, genz_keister_18, genz_keister_22, genz_keister_24)
17from .gegenbauer import gegenbauer
18from .grid import grid
19from .hermite import hermite
20from .jacobi import jacobi
21from .kronrod import kronrod, kronrod_jacobi
22from .laguerre import laguerre
23from .legendre import legendre, legendre_proxy
24from .leja import leja
25from .lobatto import lobatto
26from .newton_cotes import newton_cotes
27from .patterson import patterson
28from .radau import radau
29
30__all__ = ["generate_quadrature", "sparse_grid", "combine"]
31
32
33INTEGRATION_COLLECTION = {
34    "clenshaw_curtis": clenshaw_curtis,
35    "discrete": discrete,
36    "fejer_1": fejer_1,
37    "fejer_2": fejer_2,
38    "gaussian": gaussian,
39    "genz_keister_16": genz_keister_16,
40    "genz_keister_18": genz_keister_18,
41    "genz_keister_22": genz_keister_22,
42    "genz_keister_24": genz_keister_24,
43    "grid": grid,
44    "kronrod": kronrod,
45    "legendre": legendre_proxy,
46    "leja": leja,
47    "lobatto": lobatto,
48    "newton_cotes": newton_cotes,
49    "patterson": patterson,
50    "radau": radau,
51}
52
53
54def quadrature_deprecation_warning(name, func):
55    """Announce deprecation warning for quad-func."""
56    quad_name = "quad_%s" % name
57
58    @wraps(func)
59    def wrapped(*args, **kwargs):
60        """Function wrapper adds warnings."""
61        logger = logging.getLogger(__name__)
62        logger.warning("chaospy.%s name is to be deprecated; "
63                       "Use chaospy.quadrature.%s instead",
64                       quad_name, func.__name__)
65        return func(*args, **kwargs)
66
67    globals()[quad_name] = wrapped
68    __all__.append(quad_name)
69
70quadrature_deprecation_warning("clenshaw_curtis", clenshaw_curtis)
71quadrature_deprecation_warning("discrete", discrete)
72quadrature_deprecation_warning("fejer", fejer_2)
73quadrature_deprecation_warning("grid", grid)
74quadrature_deprecation_warning("gaussian", gaussian)
75quadrature_deprecation_warning("newton_cotes", newton_cotes)
76quadrature_deprecation_warning("leja", leja)
77quadrature_deprecation_warning("gauss_legendre", legendre_proxy)
78quadrature_deprecation_warning("gauss_kronrod", kronrod)
79quadrature_deprecation_warning("gauss_lobatto", lobatto)
80quadrature_deprecation_warning("gauss_patterson", patterson)
81quadrature_deprecation_warning("gauss_radau", radau)
82quadrature_deprecation_warning("genz_keister", genz_keister_24)
83