arviz 0.17.1__py3-none-any.whl → 0.19.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. arviz/__init__.py +4 -2
  2. arviz/data/__init__.py +5 -2
  3. arviz/data/base.py +102 -11
  4. arviz/data/converters.py +5 -0
  5. arviz/data/datasets.py +1 -0
  6. arviz/data/example_data/data_remote.json +10 -3
  7. arviz/data/inference_data.py +20 -22
  8. arviz/data/io_cmdstan.py +5 -3
  9. arviz/data/io_datatree.py +1 -0
  10. arviz/data/io_dict.py +5 -3
  11. arviz/data/io_emcee.py +1 -0
  12. arviz/data/io_numpyro.py +2 -1
  13. arviz/data/io_pyjags.py +1 -0
  14. arviz/data/io_pyro.py +1 -0
  15. arviz/data/utils.py +1 -0
  16. arviz/plots/__init__.py +1 -0
  17. arviz/plots/autocorrplot.py +1 -0
  18. arviz/plots/backends/bokeh/autocorrplot.py +1 -0
  19. arviz/plots/backends/bokeh/bpvplot.py +1 -0
  20. arviz/plots/backends/bokeh/compareplot.py +1 -0
  21. arviz/plots/backends/bokeh/densityplot.py +1 -0
  22. arviz/plots/backends/bokeh/distplot.py +1 -0
  23. arviz/plots/backends/bokeh/dotplot.py +1 -0
  24. arviz/plots/backends/bokeh/ecdfplot.py +2 -2
  25. arviz/plots/backends/bokeh/elpdplot.py +1 -0
  26. arviz/plots/backends/bokeh/energyplot.py +1 -0
  27. arviz/plots/backends/bokeh/hdiplot.py +1 -0
  28. arviz/plots/backends/bokeh/kdeplot.py +3 -3
  29. arviz/plots/backends/bokeh/khatplot.py +9 -3
  30. arviz/plots/backends/bokeh/lmplot.py +1 -0
  31. arviz/plots/backends/bokeh/loopitplot.py +1 -0
  32. arviz/plots/backends/bokeh/mcseplot.py +1 -0
  33. arviz/plots/backends/bokeh/pairplot.py +3 -6
  34. arviz/plots/backends/bokeh/parallelplot.py +1 -0
  35. arviz/plots/backends/bokeh/posteriorplot.py +1 -0
  36. arviz/plots/backends/bokeh/ppcplot.py +1 -0
  37. arviz/plots/backends/bokeh/rankplot.py +1 -0
  38. arviz/plots/backends/bokeh/separationplot.py +1 -0
  39. arviz/plots/backends/bokeh/traceplot.py +1 -0
  40. arviz/plots/backends/bokeh/violinplot.py +1 -0
  41. arviz/plots/backends/matplotlib/autocorrplot.py +1 -0
  42. arviz/plots/backends/matplotlib/bpvplot.py +1 -0
  43. arviz/plots/backends/matplotlib/compareplot.py +1 -0
  44. arviz/plots/backends/matplotlib/densityplot.py +1 -0
  45. arviz/plots/backends/matplotlib/distcomparisonplot.py +2 -3
  46. arviz/plots/backends/matplotlib/distplot.py +1 -0
  47. arviz/plots/backends/matplotlib/dotplot.py +1 -0
  48. arviz/plots/backends/matplotlib/ecdfplot.py +2 -2
  49. arviz/plots/backends/matplotlib/elpdplot.py +1 -0
  50. arviz/plots/backends/matplotlib/energyplot.py +1 -0
  51. arviz/plots/backends/matplotlib/essplot.py +6 -5
  52. arviz/plots/backends/matplotlib/forestplot.py +1 -0
  53. arviz/plots/backends/matplotlib/hdiplot.py +1 -0
  54. arviz/plots/backends/matplotlib/kdeplot.py +5 -3
  55. arviz/plots/backends/matplotlib/khatplot.py +8 -3
  56. arviz/plots/backends/matplotlib/lmplot.py +1 -0
  57. arviz/plots/backends/matplotlib/loopitplot.py +1 -0
  58. arviz/plots/backends/matplotlib/mcseplot.py +11 -10
  59. arviz/plots/backends/matplotlib/pairplot.py +2 -1
  60. arviz/plots/backends/matplotlib/parallelplot.py +1 -0
  61. arviz/plots/backends/matplotlib/posteriorplot.py +1 -0
  62. arviz/plots/backends/matplotlib/ppcplot.py +1 -0
  63. arviz/plots/backends/matplotlib/rankplot.py +1 -0
  64. arviz/plots/backends/matplotlib/separationplot.py +1 -0
  65. arviz/plots/backends/matplotlib/traceplot.py +2 -1
  66. arviz/plots/backends/matplotlib/tsplot.py +1 -0
  67. arviz/plots/backends/matplotlib/violinplot.py +2 -1
  68. arviz/plots/bpvplot.py +3 -2
  69. arviz/plots/compareplot.py +1 -0
  70. arviz/plots/densityplot.py +2 -1
  71. arviz/plots/distcomparisonplot.py +1 -0
  72. arviz/plots/dotplot.py +3 -2
  73. arviz/plots/ecdfplot.py +206 -89
  74. arviz/plots/elpdplot.py +1 -0
  75. arviz/plots/energyplot.py +1 -0
  76. arviz/plots/essplot.py +3 -2
  77. arviz/plots/forestplot.py +2 -1
  78. arviz/plots/hdiplot.py +3 -2
  79. arviz/plots/khatplot.py +24 -6
  80. arviz/plots/lmplot.py +1 -0
  81. arviz/plots/loopitplot.py +3 -2
  82. arviz/plots/mcseplot.py +4 -1
  83. arviz/plots/pairplot.py +1 -0
  84. arviz/plots/parallelplot.py +1 -0
  85. arviz/plots/plot_utils.py +3 -4
  86. arviz/plots/posteriorplot.py +2 -1
  87. arviz/plots/ppcplot.py +1 -0
  88. arviz/plots/rankplot.py +3 -2
  89. arviz/plots/separationplot.py +1 -0
  90. arviz/plots/traceplot.py +1 -0
  91. arviz/plots/tsplot.py +1 -0
  92. arviz/plots/violinplot.py +2 -1
  93. arviz/preview.py +17 -0
  94. arviz/rcparams.py +28 -2
  95. arviz/sel_utils.py +1 -0
  96. arviz/static/css/style.css +2 -1
  97. arviz/stats/density_utils.py +2 -1
  98. arviz/stats/diagnostics.py +15 -11
  99. arviz/stats/ecdf_utils.py +12 -8
  100. arviz/stats/stats.py +31 -16
  101. arviz/stats/stats_refitting.py +1 -0
  102. arviz/stats/stats_utils.py +13 -7
  103. arviz/tests/base_tests/test_data.py +15 -2
  104. arviz/tests/base_tests/test_data_zarr.py +0 -1
  105. arviz/tests/base_tests/test_diagnostics.py +1 -0
  106. arviz/tests/base_tests/test_diagnostics_numba.py +2 -6
  107. arviz/tests/base_tests/test_helpers.py +2 -2
  108. arviz/tests/base_tests/test_labels.py +1 -0
  109. arviz/tests/base_tests/test_plot_utils.py +5 -13
  110. arviz/tests/base_tests/test_plots_matplotlib.py +98 -7
  111. arviz/tests/base_tests/test_rcparams.py +12 -0
  112. arviz/tests/base_tests/test_stats.py +5 -5
  113. arviz/tests/base_tests/test_stats_numba.py +2 -7
  114. arviz/tests/base_tests/test_stats_utils.py +1 -0
  115. arviz/tests/base_tests/test_utils.py +3 -2
  116. arviz/tests/base_tests/test_utils_numba.py +2 -5
  117. arviz/tests/external_tests/test_data_pystan.py +5 -5
  118. arviz/tests/helpers.py +18 -10
  119. arviz/utils.py +4 -0
  120. arviz/wrappers/__init__.py +1 -0
  121. {arviz-0.17.1.dist-info → arviz-0.19.0.dist-info}/METADATA +13 -9
  122. arviz-0.19.0.dist-info/RECORD +183 -0
  123. arviz-0.17.1.dist-info/RECORD +0 -182
  124. {arviz-0.17.1.dist-info → arviz-0.19.0.dist-info}/LICENSE +0 -0
  125. {arviz-0.17.1.dist-info → arviz-0.19.0.dist-info}/WHEEL +0 -0
  126. {arviz-0.17.1.dist-info → arviz-0.19.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
1
1
  """Tests use the default backend."""
2
+
2
3
  # pylint: disable=redefined-outer-name,too-many-lines
3
4
  import os
4
5
  from copy import deepcopy
@@ -45,16 +46,17 @@ from ...plots import (
45
46
  from ...rcparams import rc_context, rcParams
46
47
  from ...stats import compare, hdi, loo, waic
47
48
  from ...stats.density_utils import kde as _kde
48
- from ...utils import _cov
49
+ from ...utils import _cov, BehaviourChangeWarning
49
50
  from ...plots.plot_utils import plot_point_interval
50
51
  from ...plots.dotplot import wilkinson_algorithm
51
52
  from ..helpers import ( # pylint: disable=unused-import
52
53
  create_model,
53
54
  create_multidimensional_model,
55
+ does_not_warn,
54
56
  eight_schools_params,
55
57
  models,
56
58
  multidim_models,
57
- TestRandomVariable,
59
+ RandomVariableTestClass,
58
60
  )
59
61
 
60
62
  rcParams["data.load"] = "eager"
@@ -168,9 +170,9 @@ def test_plot_density_no_subset():
168
170
 
169
171
  def test_plot_density_nonstring_varnames():
170
172
  """Test plot_density works when variables are not strings."""
171
- rv1 = TestRandomVariable("a")
172
- rv2 = TestRandomVariable("b")
173
- rv3 = TestRandomVariable("c")
173
+ rv1 = RandomVariableTestClass("a")
174
+ rv2 = RandomVariableTestClass("b")
175
+ rv3 = RandomVariableTestClass("c")
174
176
  model_ab = from_dict(
175
177
  {
176
178
  rv1: np.random.normal(size=200),
@@ -260,7 +262,7 @@ def test_plot_trace_legend(compact, combined):
260
262
  axes = plot_trace(
261
263
  idata, var_names=["home", "atts_star"], compact=compact, combined=combined, legend=True
262
264
  )
263
- assert axes[0, 0].get_legend()
265
+ assert axes[0, 1].get_legend()
264
266
  compact_legend = axes[1, 0].get_legend()
265
267
  if compact:
266
268
  assert axes.shape == (2, 2)
@@ -752,7 +754,7 @@ def test_plot_ppc_transposed():
752
754
  )
753
755
  x, y = ax.get_lines()[2].get_data()
754
756
  assert not np.isclose(y[0], 0)
755
- assert np.all(np.array([40, 43, 10, 9]) == x)
757
+ assert np.all(np.array([47, 44, 15, 11]) == x)
756
758
 
757
759
 
758
760
  @pytest.mark.parametrize("kind", ["kde", "cumulative", "scatter"])
@@ -1271,6 +1273,26 @@ def test_plot_ecdf_basic():
1271
1273
  assert axes is not None
1272
1274
 
1273
1275
 
1276
+ def test_plot_ecdf_eval_points():
1277
+ """Check that BehaviourChangeWarning is raised if eval_points is not specified."""
1278
+ data = np.random.randn(4, 1000)
1279
+ eval_points = np.linspace(-3, 3, 100)
1280
+ with pytest.warns(BehaviourChangeWarning):
1281
+ axes = plot_ecdf(data)
1282
+ assert axes is not None
1283
+ with does_not_warn(BehaviourChangeWarning):
1284
+ axes = plot_ecdf(data, eval_points=eval_points)
1285
+ assert axes is not None
1286
+
1287
+
1288
+ @pytest.mark.parametrize("confidence_bands", [True, "pointwise", "simulated"])
1289
+ def test_plot_ecdf_confidence_bands(confidence_bands):
1290
+ """Check that all confidence_bands values correctly accepted"""
1291
+ data = np.random.randn(4, 1000)
1292
+ axes = plot_ecdf(data, confidence_bands=confidence_bands, cdf=norm(0, 1).cdf)
1293
+ assert axes is not None
1294
+
1295
+
1274
1296
  def test_plot_ecdf_values2():
1275
1297
  data = np.random.randn(4, 1000)
1276
1298
  data2 = np.random.randn(4, 1000)
@@ -1285,6 +1307,75 @@ def test_plot_ecdf_cdf():
1285
1307
  assert axes is not None
1286
1308
 
1287
1309
 
1310
+ def test_plot_ecdf_error():
1311
+ """Check that all error conditions are correctly raised."""
1312
+ dist = norm(0, 1)
1313
+ data = dist.rvs(1000)
1314
+
1315
+ # cdf not specified
1316
+ with pytest.raises(ValueError):
1317
+ plot_ecdf(data, confidence_bands=True)
1318
+ plot_ecdf(data, confidence_bands=True, cdf=dist.cdf)
1319
+ with pytest.raises(ValueError):
1320
+ plot_ecdf(data, difference=True)
1321
+ plot_ecdf(data, difference=True, cdf=dist.cdf)
1322
+ with pytest.raises(ValueError):
1323
+ plot_ecdf(data, pit=True)
1324
+ plot_ecdf(data, pit=True, cdf=dist.cdf)
1325
+
1326
+ # contradictory confidence band types
1327
+ with pytest.raises(ValueError):
1328
+ plot_ecdf(data, cdf=dist.cdf, confidence_bands="simulated", pointwise=True)
1329
+ plot_ecdf(data, cdf=dist.cdf, confidence_bands=True, pointwise=True)
1330
+ plot_ecdf(data, cdf=dist.cdf, confidence_bands="pointwise")
1331
+
1332
+ # contradictory band probabilities
1333
+ with pytest.raises(ValueError):
1334
+ plot_ecdf(data, cdf=dist.cdf, confidence_bands=True, ci_prob=0.9, fpr=0.1)
1335
+ plot_ecdf(data, cdf=dist.cdf, confidence_bands=True, ci_prob=0.9)
1336
+ plot_ecdf(data, cdf=dist.cdf, confidence_bands=True, fpr=0.1)
1337
+
1338
+ # contradictory reference
1339
+ data2 = dist.rvs(200)
1340
+ with pytest.raises(ValueError):
1341
+ plot_ecdf(data, data2, cdf=dist.cdf, difference=True)
1342
+ plot_ecdf(data, data2, difference=True)
1343
+ plot_ecdf(data, cdf=dist.cdf, difference=True)
1344
+
1345
+
1346
+ def test_plot_ecdf_deprecations():
1347
+ """Check that deprecations are raised correctly."""
1348
+ dist = norm(0, 1)
1349
+ data = dist.rvs(1000)
1350
+ # base case, no deprecations
1351
+ with does_not_warn(FutureWarning):
1352
+ axes = plot_ecdf(data, cdf=dist.cdf, confidence_bands=True)
1353
+ assert axes is not None
1354
+
1355
+ # values2 is deprecated
1356
+ data2 = dist.rvs(200)
1357
+ with pytest.warns(FutureWarning):
1358
+ axes = plot_ecdf(data, values2=data2, difference=True)
1359
+
1360
+ # pit is deprecated
1361
+ with pytest.warns(FutureWarning):
1362
+ axes = plot_ecdf(data, cdf=dist.cdf, pit=True)
1363
+ assert axes is not None
1364
+
1365
+ # fpr is deprecated
1366
+ with does_not_warn(FutureWarning):
1367
+ axes = plot_ecdf(data, cdf=dist.cdf, ci_prob=0.9)
1368
+ with pytest.warns(FutureWarning):
1369
+ axes = plot_ecdf(data, cdf=dist.cdf, confidence_bands=True, fpr=0.1)
1370
+ assert axes is not None
1371
+
1372
+ # pointwise is deprecated
1373
+ with does_not_warn(FutureWarning):
1374
+ axes = plot_ecdf(data, cdf=dist.cdf, confidence_bands="pointwise")
1375
+ with pytest.warns(FutureWarning):
1376
+ axes = plot_ecdf(data, cdf=dist.cdf, confidence_bands=True, pointwise=True)
1377
+
1378
+
1288
1379
  @pytest.mark.parametrize(
1289
1380
  "kwargs",
1290
1381
  [
@@ -127,6 +127,18 @@ def test_choice_bad_values(param):
127
127
  rcParams[param] = "bad_value"
128
128
 
129
129
 
130
+ @pytest.mark.parametrize("args", [("stats.hdi_prob", "stats.ci_prob", 0.7, 0.7)])
131
+ def test_deprecated_param(args):
132
+ """Test value and warning message correctly set for deprecated rcparams."""
133
+ param_old, param_new, val_old, val_new = args
134
+ assert param_new in rcParams
135
+ assert not np.isclose(rcParams[param_new], val_new)
136
+ msg = f"{param_old} is deprecated since .*, use {param_new} instead"
137
+ with pytest.warns(FutureWarning, match=msg):
138
+ with rc_context(rc={param_old: val_old}):
139
+ assert np.isclose(rcParams[param_new], val_new)
140
+
141
+
130
142
  @pytest.mark.parametrize("allow_none", (True, False))
131
143
  @pytest.mark.parametrize("typeof", (str, int))
132
144
  @pytest.mark.parametrize("args", [("not one", 10), (False, None), (False, 4)])
@@ -89,25 +89,25 @@ def test_hdi_idata(centered_eight):
89
89
  data = centered_eight.posterior
90
90
  result = hdi(data)
91
91
  assert isinstance(result, Dataset)
92
- assert dict(result.dims) == {"school": 8, "hdi": 2}
92
+ assert dict(result.sizes) == {"school": 8, "hdi": 2}
93
93
 
94
94
  result = hdi(data, input_core_dims=[["chain"]])
95
95
  assert isinstance(result, Dataset)
96
- assert result.dims == {"draw": 500, "hdi": 2, "school": 8}
96
+ assert result.sizes == {"draw": 500, "hdi": 2, "school": 8}
97
97
 
98
98
 
99
99
  def test_hdi_idata_varnames(centered_eight):
100
100
  data = centered_eight.posterior
101
101
  result = hdi(data, var_names=["mu", "theta"])
102
102
  assert isinstance(result, Dataset)
103
- assert result.dims == {"hdi": 2, "school": 8}
103
+ assert result.sizes == {"hdi": 2, "school": 8}
104
104
  assert list(result.data_vars.keys()) == ["mu", "theta"]
105
105
 
106
106
 
107
107
  def test_hdi_idata_group(centered_eight):
108
108
  result_posterior = hdi(centered_eight, group="posterior", var_names="mu")
109
109
  result_prior = hdi(centered_eight, group="prior", var_names="mu")
110
- assert result_prior.dims == {"hdi": 2}
110
+ assert result_prior.sizes == {"hdi": 2}
111
111
  range_posterior = result_posterior.mu.values[1] - result_posterior.mu.values[0]
112
112
  range_prior = result_prior.mu.values[1] - result_prior.mu.values[0]
113
113
  assert range_posterior < range_prior
@@ -179,7 +179,7 @@ def test_compare_same(centered_eight, multidim_models, method, multidim):
179
179
  else:
180
180
  data_dict = {"first": centered_eight, "second": centered_eight}
181
181
 
182
- weight = compare(data_dict, method=method)["weight"]
182
+ weight = compare(data_dict, method=method)["weight"].to_numpy()
183
183
  assert_allclose(weight[0], weight[1])
184
184
  assert_allclose(np.sum(weight), 1.0)
185
185
 
@@ -1,6 +1,4 @@
1
1
  # pylint: disable=redefined-outer-name, no-member
2
- import importlib
3
-
4
2
  import numpy as np
5
3
  import pytest
6
4
 
@@ -9,15 +7,12 @@ from ...stats import r2_score, summary
9
7
  from ...utils import Numba
10
8
  from ..helpers import ( # pylint: disable=unused-import
11
9
  check_multiple_attrs,
10
+ importorskip,
12
11
  multidim_models,
13
- running_on_ci,
14
12
  )
15
13
  from .test_stats import centered_eight, non_centered_eight # pylint: disable=unused-import
16
14
 
17
- pytestmark = pytest.mark.skipif( # pylint: disable=invalid-name
18
- (importlib.util.find_spec("numba") is None) and not running_on_ci(),
19
- reason="test requires numba which is not installed",
20
- )
15
+ numba = importorskip("numba")
21
16
 
22
17
  rcParams["data.load"] = "eager"
23
18
 
@@ -1,4 +1,5 @@
1
1
  """Tests for stats_utils."""
2
+
2
3
  # pylint: disable=no-member
3
4
  import numpy as np
4
5
  import pytest
@@ -1,4 +1,5 @@
1
1
  """Tests for arviz.utils."""
2
+
2
3
  # pylint: disable=redefined-outer-name, no-member
3
4
  from unittest.mock import Mock
4
5
 
@@ -17,7 +18,7 @@ from ...utils import (
17
18
  one_de,
18
19
  two_de,
19
20
  )
20
- from ..helpers import TestRandomVariable
21
+ from ..helpers import RandomVariableTestClass
21
22
 
22
23
 
23
24
  @pytest.fixture(scope="session")
@@ -123,7 +124,7 @@ def test_var_names_filter(var_args):
123
124
 
124
125
  def test_nonstring_var_names():
125
126
  """Check that non-string variables are preserved"""
126
- mu = TestRandomVariable("mu")
127
+ mu = RandomVariableTestClass("mu")
127
128
  samples = np.random.randn(10)
128
129
  data = dict_to_dataset({mu: samples})
129
130
  assert _var_names([mu], data) == [mu]
@@ -8,13 +8,10 @@ import pytest
8
8
 
9
9
  from ...stats.stats_utils import stats_variance_2d as svar
10
10
  from ...utils import Numba, _numba_var, numba_check
11
- from ..helpers import running_on_ci
11
+ from ..helpers import importorskip
12
12
  from .test_utils import utils_with_numba_import_fail # pylint: disable=unused-import
13
13
 
14
- pytestmark = pytest.mark.skipif( # pylint: disable=invalid-name
15
- (importlib.util.find_spec("numba") is None) and not running_on_ci(),
16
- reason="test requires numba which is not installed",
17
- )
14
+ importorskip("numba")
18
15
 
19
16
 
20
17
  def test_utils_fixture(utils_with_numba_import_fail):
@@ -1,6 +1,7 @@
1
1
  # pylint: disable=no-member, invalid-name, redefined-outer-name, too-many-function-args
2
2
  import importlib
3
3
  from collections import OrderedDict
4
+ import os
4
5
 
5
6
  import numpy as np
6
7
  import pytest
@@ -16,19 +17,18 @@ from ..helpers import ( # pylint: disable=unused-import
16
17
  importorskip,
17
18
  load_cached_models,
18
19
  pystan_version,
19
- running_on_ci,
20
20
  )
21
21
 
22
22
  # Check if either pystan or pystan3 is installed
23
23
  pystan_installed = (importlib.util.find_spec("pystan") is not None) or (
24
24
  importlib.util.find_spec("stan") is not None
25
25
  )
26
- pytestmark = pytest.mark.skipif(
27
- not (pystan_installed | running_on_ci()),
28
- reason="test requires pystan/pystan3 which is not installed",
29
- )
30
26
 
31
27
 
28
+ @pytest.mark.skipif(
29
+ not (pystan_installed or "ARVIZ_REQUIRE_ALL_DEPS" in os.environ),
30
+ reason="test requires pystan/pystan3 which is not installed",
31
+ )
32
32
  class TestDataPyStan:
33
33
  @pytest.fixture(scope="class")
34
34
  def data(self, eight_schools_params, draws, chains):
arviz/tests/helpers.py CHANGED
@@ -6,6 +6,8 @@ import logging
6
6
  import os
7
7
  import sys
8
8
  from typing import Any, Dict, List, Optional, Tuple, Union
9
+ import warnings
10
+ from contextlib import contextmanager
9
11
 
10
12
  import cloudpickle
11
13
  import numpy as np
@@ -18,7 +20,7 @@ from ..data import InferenceData, from_dict
18
20
  _log = logging.getLogger(__name__)
19
21
 
20
22
 
21
- class TestRandomVariable:
23
+ class RandomVariableTestClass:
22
24
  """Example class for random variables."""
23
25
 
24
26
  def __init__(self, name):
@@ -29,6 +31,18 @@ class TestRandomVariable:
29
31
  return self.name
30
32
 
31
33
 
34
+ @contextmanager
35
+ def does_not_warn(warning=Warning):
36
+ with warnings.catch_warnings(record=True) as caught_warnings:
37
+ warnings.simplefilter("always")
38
+ yield
39
+ for w in caught_warnings:
40
+ if issubclass(w.category, warning):
41
+ raise AssertionError(
42
+ f"Expected no {warning.__name__} but caught warning with message: {w.message}"
43
+ )
44
+
45
+
32
46
  @pytest.fixture(scope="module")
33
47
  def eight_schools_params():
34
48
  """Share setup for eight schools."""
@@ -620,11 +634,6 @@ def test_precompile_models(eight_schools_params, draws, chains):
620
634
  load_cached_models(eight_schools_params, draws, chains)
621
635
 
622
636
 
623
- def running_on_ci() -> bool:
624
- """Return True if running on CI machine."""
625
- return os.environ.get("ARVIZ_CI_MACHINE") is not None
626
-
627
-
628
637
  def importorskip(
629
638
  modname: str, minversion: Optional[str] = None, reason: Optional[str] = None
630
639
  ) -> Any:
@@ -643,11 +652,10 @@ def importorskip(
643
652
  Example::
644
653
  docutils = pytest.importorskip("docutils")
645
654
  """
646
- # ARVIZ_CI_MACHINE is True if tests run on CI, where ARVIZ_CI_MACHINE env variable exists
647
- ARVIZ_CI_MACHINE = running_on_ci()
648
- if not ARVIZ_CI_MACHINE:
655
+ # Unless ARVIZ_REQUIRE_ALL_DEPS is defined, tests that require a missing dependency are skipped
656
+ # if set, missing optional dependencies trigger failed tests.
657
+ if "ARVIZ_REQUIRE_ALL_DEPS" not in os.environ:
649
658
  return pytest.importorskip(modname=modname, minversion=minversion, reason=reason)
650
- import warnings
651
659
 
652
660
  compile(modname, "", "eval") # to catch syntaxerrors
653
661
 
arviz/utils.py CHANGED
@@ -17,6 +17,10 @@ from .rcparams import rcParams
17
17
  STATIC_FILES = ("static/html/icons-svg-inline.html", "static/css/style.css")
18
18
 
19
19
 
20
+ class BehaviourChangeWarning(Warning):
21
+ """Custom warning to ease filtering it."""
22
+
23
+
20
24
  def _check_tilde_start(x):
21
25
  return bool(isinstance(x, str) and x.startswith("~"))
22
26
 
@@ -1,4 +1,5 @@
1
1
  """Sampling wrappers."""
2
+
2
3
  from .base import SamplingWrapper
3
4
  from .wrap_stan import PyStan2SamplingWrapper, PyStanSamplingWrapper, CmdStanPySamplingWrapper
4
5
  from .wrap_pymc import PyMCSamplingWrapper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arviz
3
- Version: 0.17.1
3
+ Version: 0.19.0
4
4
  Summary: Exploratory analysis of Bayesian models
5
5
  Home-page: http://github.com/arviz-devs/arviz
6
6
  Author: ArviZ Developers
@@ -12,35 +12,39 @@ Classifier: Intended Audience :: Education
12
12
  Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Topic :: Scientific/Engineering
20
19
  Classifier: Topic :: Scientific/Engineering :: Visualization
21
20
  Classifier: Topic :: Scientific/Engineering :: Mathematics
22
- Requires-Python: >=3.9
21
+ Requires-Python: >=3.10
23
22
  Description-Content-Type: text/markdown
24
23
  License-File: LICENSE
25
24
  Requires-Dist: setuptools >=60.0.0
26
25
  Requires-Dist: matplotlib >=3.5
27
- Requires-Dist: numpy <2.0,>=1.22.0
28
- Requires-Dist: scipy >=1.8.0
26
+ Requires-Dist: numpy >=1.23.0
27
+ Requires-Dist: scipy >=1.9.0
29
28
  Requires-Dist: packaging
30
- Requires-Dist: pandas >=1.4.0
31
- Requires-Dist: xarray >=0.21.0
29
+ Requires-Dist: pandas >=1.5.0
30
+ Requires-Dist: dm-tree >=0.1.8
31
+ Requires-Dist: xarray >=2022.6.0
32
32
  Requires-Dist: h5netcdf >=1.0.2
33
33
  Requires-Dist: typing-extensions >=4.1.0
34
34
  Requires-Dist: xarray-einstats >=0.3
35
35
  Provides-Extra: all
36
36
  Requires-Dist: numba ; extra == 'all'
37
37
  Requires-Dist: netcdf4 ; extra == 'all'
38
- Requires-Dist: bokeh <3.0,>=1.4.0 ; extra == 'all'
38
+ Requires-Dist: bokeh >=3 ; extra == 'all'
39
39
  Requires-Dist: contourpy ; extra == 'all'
40
40
  Requires-Dist: ujson ; extra == 'all'
41
41
  Requires-Dist: dask[distributed] ; extra == 'all'
42
- Requires-Dist: zarr >=2.5.0 ; extra == 'all'
42
+ Requires-Dist: zarr <3,>=2.5.0 ; extra == 'all'
43
43
  Requires-Dist: xarray-datatree ; extra == 'all'
44
+ Provides-Extra: preview
45
+ Requires-Dist: arviz-base[h5netcdf] ; extra == 'preview'
46
+ Requires-Dist: arviz-stats[xarray] ; extra == 'preview'
47
+ Requires-Dist: arviz-plots ; extra == 'preview'
44
48
 
45
49
  <img src="https://raw.githubusercontent.com/arviz-devs/arviz-project/main/arviz_logos/ArviZ.png#gh-light-mode-only" width=200></img>
46
50
  <img src="https://raw.githubusercontent.com/arviz-devs/arviz-project/main/arviz_logos/ArviZ_white.png#gh-dark-mode-only" width=200></img>
@@ -0,0 +1,183 @@
1
+ arviz/__init__.py,sha256=kcqBQn8wiV7gkzQvnJTezqtgI1IqPWYylkiz6Uvg9YQ,10397
2
+ arviz/labels.py,sha256=w4-t0qdJzjKrqRyhzbtk6ucoMIAxle1HpHYlH7up06Q,6828
3
+ arviz/preview.py,sha256=5HwHycvbSAkWsAEYHBfd3Crwmeq8T06ysSgB528iQnA,375
4
+ arviz/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ arviz/rcparams.py,sha256=lQnBprbDihEcsP5FujoJetGna4T8nc20JnuVf1Wn-1k,21031
6
+ arviz/sel_utils.py,sha256=xvAYENhGXDTrhaT4Itlk1SJQUUGZ6BGcR04fPFgvzdM,6951
7
+ arviz/utils.py,sha256=sOUIkqmWtwY3PM-rQpN6arW9MsPt-MfvzdwAe78rT8U,26425
8
+ arviz/data/__init__.py,sha256=SG2umdZ8uVNYKVBoVYPy5tNxJnzLdyw0spPMjMTae5k,1558
9
+ arviz/data/base.py,sha256=7GhA20dlU2t4J2VfAPavfHT_ZyF_fU8gQMsvHnWed6g,21026
10
+ arviz/data/converters.py,sha256=vyzQWlEnuBiCRQNiLe7sXWfE6po1USnMNChtJ0VG48A,7831
11
+ arviz/data/datasets.py,sha256=wPi23KZI-w4HrhjmY1LUg0Rj0aJobSJ4WO3LBrjfZQc,5392
12
+ arviz/data/inference_data.py,sha256=ZUR-GgxWJ-mGPr9PvhS2mKT5j0U6ZkhxsUIkJTJ4loY,92455
13
+ arviz/data/io_beanmachine.py,sha256=QQVBD6rftvs6_kLIb4Vm1QzQ6BsS0J9DTrzw2Jj4ob8,3745
14
+ arviz/data/io_cmdstan.py,sha256=8YX9Nfkx4LqjfKms4s4GTOkOjZNelb6SukvRZRHY6iM,38994
15
+ arviz/data/io_cmdstanpy.py,sha256=iSr8ciKBFoIa1tJGHEX-2JKkUJRyaTXzRXf-5mu8q5U,42991
16
+ arviz/data/io_datatree.py,sha256=Ag_7LHAejqt0Zxbu350u8WBY44nGsFY7eyhKa0Wi7FE,502
17
+ arviz/data/io_dict.py,sha256=HM4ke-NuopsPnIdU-UGMtppAnj3vcbkBti8eROpMRTs,17698
18
+ arviz/data/io_emcee.py,sha256=zsJJqwlyXLN_TfI6hgKz97p4N30NYTVvQSrIIpiLmB0,11844
19
+ arviz/data/io_json.py,sha256=lrSP_9abfUW_5E8TwnG4hsS5HNHzAHZQCJTynl_tXKY,1256
20
+ arviz/data/io_netcdf.py,sha256=cCxVnXSCTzWP3SU7cM4SqBiRRK9txFOsm-MchzNUzM4,2336
21
+ arviz/data/io_numpyro.py,sha256=_U6owmsY5hrQU7C5NPw43s76Swmy_YqXw4UZYfZwzU4,14241
22
+ arviz/data/io_pyjags.py,sha256=AG2ckAuygSxbjULVFQCJQSM72GnUoTMi3T94aQRJYKQ,13271
23
+ arviz/data/io_pyro.py,sha256=JYywUGUU1Qil_ahLuDYhYFafQAKB-y1kIipXdfH_vnQ,12740
24
+ arviz/data/io_pystan.py,sha256=nRTU6yujilQCKERxzN7LIVwZplfvFNb-Y9Jk9YVJQLk,41700
25
+ arviz/data/io_zarr.py,sha256=PeSBz-zHDzmwJq3sWzxASnjrfbd-hULJsl8FjK46YQQ,1163
26
+ arviz/data/utils.py,sha256=gw1AtkCgdPA9bJsI1UTRi1h5xxFxv8erKlU_S48Nff8,4770
27
+ arviz/data/example_data/data_local.json,sha256=8WwyEWriDDfcVT79GNQ412QDkSoOZF6FYJ7cbyGpONI,1088
28
+ arviz/data/example_data/data_remote.json,sha256=UNI3hyjcICG_MtpLxAicY04Y4mQf3M-kESxRWGl9kgw,5340
29
+ arviz/data/example_data/code/radon/radon.json,sha256=XwpiyGRrqkBP02zWz00s6z-d00Vv_vSqfx7ZLlb4lz0,24382
30
+ arviz/data/example_data/data/centered_eight.nc,sha256=jvw6uv4MeW65rqe2lJDU4kAKM8V1BO9JMuHHEFhJF28,654694
31
+ arviz/data/example_data/data/non_centered_eight.nc,sha256=r7kyd10HyJTTRQs4OlSCXPVt3T-nLsPd3g-bcPYnPmA,836647
32
+ arviz/plots/__init__.py,sha256=atWhfLXHAD6zaTjbdWdTaJrPTNBl3XpcSCY4etgw_cY,1514
33
+ arviz/plots/autocorrplot.py,sha256=f-rYtnZtxgOns5sIT6pdw-EdU74lAVmAeV9b6rKLsgw,5666
34
+ arviz/plots/bfplot.py,sha256=s8bizLCkF5uZnz66UKmuUJs_AXuMVrgGObTa2ofUF-Q,5124
35
+ arviz/plots/bpvplot.py,sha256=QR4znezjiSLMyMagvnJLb9Y1SIlT99gJ52o4FnX5tZg,12098
36
+ arviz/plots/compareplot.py,sha256=DQ1ebXSHGnP9A5y5iABq6PB8hO7Pn_ZlUH0ujNY_dc8,6074
37
+ arviz/plots/densityplot.py,sha256=6477ZljpBCcZRw0SUwcTO4FYjxqw_qYsJupWNo-jCok,10895
38
+ arviz/plots/distcomparisonplot.py,sha256=gVNQUN0VX7hC527fcUk1oxtQRdIl5mrltU95c0Nra9k,7184
39
+ arviz/plots/distplot.py,sha256=xWXOsN-pPBwhHrEjC6lbIJdn-17DtpMueSnj6YzWlX4,8472
40
+ arviz/plots/dotplot.py,sha256=9HTMeT1ZuZ4Vauxvg4TjsvvNnwORG8WWO2HistJwHiU,7736
41
+ arviz/plots/ecdfplot.py,sha256=BkukbyDUGMCW72b9ZFBCK9zrkavgGHwkcxRv76kQrzk,12734
42
+ arviz/plots/elpdplot.py,sha256=NKqPkwTj9BWDzwMnG0cPeLmYBGMX_meP9F6bqvTwLKY,6433
43
+ arviz/plots/energyplot.py,sha256=znEDPYpWaTIX0XpdVoyhXOITJ4A8BYkI9t1TVhJq4Qo,4797
44
+ arviz/plots/essplot.py,sha256=ch0DjUQDILk4ohpSUR-9VHejGFb6Xmelly-qa-fKb9E,11741
45
+ arviz/plots/forestplot.py,sha256=WRgW6pg1kO4xrd412qKgbY8QAaFyALfJsNzmQIXMwTc,11896
46
+ arviz/plots/hdiplot.py,sha256=cNj2r0dPxtquZNoChgjFO-wmqgU-W-dq_ed1kWJ2vHI,7589
47
+ arviz/plots/kdeplot.py,sha256=eQze22vHcZdjJT_Z6P8IJweNMWJMXRM6Ei5S4vx0m54,11749
48
+ arviz/plots/khatplot.py,sha256=u03gmBG1xwxG07ASLZEJB-GsRhRHtUCtbglpC1N0aIg,8086
49
+ arviz/plots/lmplot.py,sha256=LxR7RXkaAi5J8076isebVrtdk6UwbcTRekEymM9S6cY,11726
50
+ arviz/plots/loopitplot.py,sha256=bFUO_Fy4z6u6E39GdaF4rIvc-COWNwF4A0n2kcmZBfA,8321
51
+ arviz/plots/mcseplot.py,sha256=rsiz4E9M9p58YetAaF75gbenGIj4M0hapWnh9UJOXzY,6829
52
+ arviz/plots/pairplot.py,sha256=yVxyLC7ms0SKpTunifacUyOblH8BW9CsQqE2Hv0ARP4,10407
53
+ arviz/plots/parallelplot.py,sha256=ZBEsHvnlmSXLRpSwP-KUwzgWBC2S4siKXFGJnLf7uAE,7125
54
+ arviz/plots/plot_utils.py,sha256=mawuYnwb9AfdLQ9HAerTOGT9iKNjXrQraXvtDd9tFco,18243
55
+ arviz/plots/posteriorplot.py,sha256=pC-5SQZOGq1F4opM_sQLxn4ZG2we4Y9ULV8yhxjGVdo,10952
56
+ arviz/plots/ppcplot.py,sha256=UPTtXDWHf3wFAb-apNPGcz8qw9CQwINGml_2YkYI-iM,13967
57
+ arviz/plots/rankplot.py,sha256=lz0swHs6EBe-gXn4udP1Um3RS-EatsOAmguYqGMlIjU,8648
58
+ arviz/plots/separationplot.py,sha256=Fx_QVeFUcF45fm7nn06pt0qubOzvH8QMU1cw5RLyaik,5491
59
+ arviz/plots/traceplot.py,sha256=dwcF7rsjMAIxZ_LPv7Z8os01uQZHXTkDFWEBtsbzI9k,10216
60
+ arviz/plots/tsplot.py,sha256=haTyvfGX5fA8Zle9bzllybG5n307BUJIxGywNAnOsU0,15925
61
+ arviz/plots/violinplot.py,sha256=yxoEMGTIt4CDinZaNHPYI5MqFvXB2J2gyKdKJ47PKdk,7129
62
+ arviz/plots/backends/__init__.py,sha256=LZxXo7ogt7ZVrdUea0xkxpx5YV0wpV20MHwdItgk3oU,7752
63
+ arviz/plots/backends/bokeh/__init__.py,sha256=e2wfZNdGTFU5GjsLokCLpknweaNgjZ5v3k7NB0gry6g,4877
64
+ arviz/plots/backends/bokeh/autocorrplot.py,sha256=9CruVndfMnqsi4waav7Gcr7pn0nmUB0mkJxkzOjtGtw,2463
65
+ arviz/plots/backends/bokeh/bfplot.py,sha256=ydjomuA5iTw9LE2_eq9_u6Ox3MCy0ulE_DU4qgH0MO8,406
66
+ arviz/plots/backends/bokeh/bpvplot.py,sha256=btwA4qbO8iCtZ-vriscqNlwn0zEooObh7DD6-fsyM44,6642
67
+ arviz/plots/backends/bokeh/compareplot.py,sha256=52jOjhrRqB-Dgdw8odKfM4aPXk9med6MopCiHxKNgJM,4736
68
+ arviz/plots/backends/bokeh/densityplot.py,sha256=TQ5OkHHnihT1NBa4vtt6wJUsll_K3xaeEFzDtqrmcVU,6286
69
+ arviz/plots/backends/bokeh/distcomparisonplot.py,sha256=o8FHMb1ZzKPpt7fXhwBr6HGhqpclO1Qk9o6aTGypgv0,431
70
+ arviz/plots/backends/bokeh/distplot.py,sha256=a2yY4waIPdwGhDpUtYi87Ra-TJiAA67oQumIiU-nXiA,4851
71
+ arviz/plots/backends/bokeh/dotplot.py,sha256=qy8B4QL6B_ZfoVtDDA6c7HcsQofQLlE1tTnkcJO1mPA,2828
72
+ arviz/plots/backends/bokeh/ecdfplot.py,sha256=Zrinhu6ViG3BbClxnRFZ_zIZm7S1nARiydHi-l1_i-g,1680
73
+ arviz/plots/backends/bokeh/elpdplot.py,sha256=5bn_rH1Aixm0--BArAP4m4kuZMjWxR8ox-8T-xK_GMY,6487
74
+ arviz/plots/backends/bokeh/energyplot.py,sha256=FKPYRaWwM32Vw0AHE0MIWBn9wZQeoYdP_YpYZGijIq0,4571
75
+ arviz/plots/backends/bokeh/essplot.py,sha256=zghMEYUH3bAljqNt72-dRa8IFom27F7dMklHNQOrzBM,5494
76
+ arviz/plots/backends/bokeh/forestplot.py,sha256=DIoGzSIAMA9vmKwpoNxVoNKFpDBwpfjdGd6KTl9u_OY,27219
77
+ arviz/plots/backends/bokeh/hdiplot.py,sha256=bAhTPi9D7cw2ytSvjSIRD3g-PqpB9OFwusrQAnmKCYY,1538
78
+ arviz/plots/backends/bokeh/kdeplot.py,sha256=nKEgJfnP7NK2Y2cipF_RglEC6GpowaagH5wZP3iZq-U,9329
79
+ arviz/plots/backends/bokeh/khatplot.py,sha256=J5m9vugSzpi9sE-T_2PRzI8pA100Hf8rUMhpmkTP8n4,4599
80
+ arviz/plots/backends/bokeh/lmplot.py,sha256=kqfkQ1HAahi_XwkWxrub73zPM_4dXEFvKAd0TFKsoXQ,5392
81
+ arviz/plots/backends/bokeh/loopitplot.py,sha256=FWjcsSWGJNy4wM63_N2qpg5oECb3Cq-uLy3xDS5x6j4,7172
82
+ arviz/plots/backends/bokeh/mcseplot.py,sha256=teyAG-A4vIHor_Qr4iB3l5nLJ--EzvPvw1x44hUOVSI,5924
83
+ arviz/plots/backends/bokeh/pairplot.py,sha256=2sByGaDuDT_ebyhPLIP3jRO1i43DLVDTPKWCpjd9MXc,13146
84
+ arviz/plots/backends/bokeh/parallelplot.py,sha256=SNChOLWvcKxXuuJsIfWs9CNj7qDuVb95UZyp4CP1BQE,2230
85
+ arviz/plots/backends/bokeh/posteriorplot.py,sha256=yBAlGo3lQpFBVro724eZtKnOHgVkY7LXupa-8_VtE7c,9380
86
+ arviz/plots/backends/bokeh/ppcplot.py,sha256=mfDzTXxJU26CcK8ZKno3Y_yK_y3VYeUT3vaJqUoGEq4,13269
87
+ arviz/plots/backends/bokeh/rankplot.py,sha256=UvzzzhOEnHTX4BkO30JO7iKyU0dwbq7kqo0rV6LlXEU,4474
88
+ arviz/plots/backends/bokeh/separationplot.py,sha256=_VhJUnPW03xVpy2y4h8npLyPPD49H76WQMmj3hOq2Hc,2416
89
+ arviz/plots/backends/bokeh/traceplot.py,sha256=mHyJQqj0IzwKzSsK0eJ7u05V-WObZCJKuLbJ9EpdPtM,14208
90
+ arviz/plots/backends/bokeh/violinplot.py,sha256=_GaLDsq6muqnDr1BQCFClCGqy7hyEk7moYpMd0MNwNA,4359
91
+ arviz/plots/backends/matplotlib/__init__.py,sha256=LBEWakXN4QFoIXp_aPXPMTzXnA8VJt24k5RaowPCQoY,3629
92
+ arviz/plots/backends/matplotlib/autocorrplot.py,sha256=ahyNnwyNrLubZTsxNvTi5hAZ5gV9dmo_wecrTYyMMDI,1807
93
+ arviz/plots/backends/matplotlib/bfplot.py,sha256=00-xGO_VpmTxCkYiC1cGGsAW0HNO3bhQJkFxA6ssMh0,1828
94
+ arviz/plots/backends/matplotlib/bpvplot.py,sha256=SeAGSOxhUFMIlQcluVnGEF5SnW2qjg1HGx4St-aiFz8,6262
95
+ arviz/plots/backends/matplotlib/compareplot.py,sha256=qvjSkNDBTZh3vxIw4pNEyRnaAM8qFG9vWw0X23hscsI,3695
96
+ arviz/plots/backends/matplotlib/densityplot.py,sha256=zlqzYvH3VXWPiiIvL--fxtMp3hIGrcttKkQxKPV1U2s,5479
97
+ arviz/plots/backends/matplotlib/distcomparisonplot.py,sha256=XZY2jITNKtcIMsg5tl_lzuwI-2DcdUdCWqrK7bsdvWE,3568
98
+ arviz/plots/backends/matplotlib/distplot.py,sha256=V0CeyAPah5RzHXW9I5tssVXlZgj2NHPkg-k15ayEdVw,4581
99
+ arviz/plots/backends/matplotlib/dotplot.py,sha256=WHrf_lpEKaJlTPKKZzkQrXzIy_ngxjOGUulInIQBI_M,2934
100
+ arviz/plots/backends/matplotlib/ecdfplot.py,sha256=yX46D9bjhBTX-XFH2QVUZoHpSHcs_Pb9Mm6P4jwVEB8,1734
101
+ arviz/plots/backends/matplotlib/elpdplot.py,sha256=LAB3PqxbWgvnyr-CIOFSO6egosCtYZmKsmCelFaNywY,6682
102
+ arviz/plots/backends/matplotlib/energyplot.py,sha256=VDM8aZQ-SZzcZB9cv4EU0zQFk1L2JEJXL246mVALIwo,3317
103
+ arviz/plots/backends/matplotlib/essplot.py,sha256=C5RH8MNIOGpCPKHUsGfZ03aQ3CaXI8xOLw6vDv6fSbE,6448
104
+ arviz/plots/backends/matplotlib/forestplot.py,sha256=TWmJqmoH8Rn2bc-g3Tx1QTb_RIfNUKN5PxPFRnF3flA,23228
105
+ arviz/plots/backends/matplotlib/hdiplot.py,sha256=7KawWKFahxILp0dxodkhRni9oJMCkulLhLhRD9qoH60,1521
106
+ arviz/plots/backends/matplotlib/kdeplot.py,sha256=wsTBABG3MLkMAoAzu22otJdXCVzUnUu3McIt9_Hjldc,5323
107
+ arviz/plots/backends/matplotlib/khatplot.py,sha256=JajJXlDXJce1DvB0Eh7ueB4N6ZkqKHgLaGhck8EsaXs,7437
108
+ arviz/plots/backends/matplotlib/lmplot.py,sha256=EeXiqQhfQBaKAhmzRMLLV5gNGELo_QPZ24MkGnDWUfM,5288
109
+ arviz/plots/backends/matplotlib/loopitplot.py,sha256=glK-BP4NftmdZEK5sB7kM8SzoGWsDnBdDVDzV-fDdCg,4632
110
+ arviz/plots/backends/matplotlib/mcseplot.py,sha256=kGuRHRnyQKZPxoiHp8S30RzK7qbL83AaFGbn7BNVOZo,5810
111
+ arviz/plots/backends/matplotlib/pairplot.py,sha256=82MfXs8Gxt40pGqsj48hvyM0Xvc44Eskj2fQC-0AasM,13793
112
+ arviz/plots/backends/matplotlib/parallelplot.py,sha256=zxtO6CNsK_HSl7E2sH40x8OYoO9a5bPNJ6VPJTuDQbk,1450
113
+ arviz/plots/backends/matplotlib/posteriorplot.py,sha256=dUJfGYWYv5Lzlbz9Tr5d9virVfJb7JsnGiSYU7CdmsI,10092
114
+ arviz/plots/backends/matplotlib/ppcplot.py,sha256=3kPTVEUsGpMyr_P5OKgfAu_NHZNmdJWXvCmfhIlNieE,16134
115
+ arviz/plots/backends/matplotlib/rankplot.py,sha256=KU2EakKNv2oOr5zuNsM0dHLazyzBEbf_D95SBQhfnUA,3610
116
+ arviz/plots/backends/matplotlib/separationplot.py,sha256=Yfc-9cgEif-Tb4piGuzJavDYu63x8HvdnZ4dYEzeqxQ,2352
117
+ arviz/plots/backends/matplotlib/traceplot.py,sha256=ajAu1NSXZ7YX34cZkkTs3clMGzjs3AxKJywSnXvGTds,18882
118
+ arviz/plots/backends/matplotlib/tsplot.py,sha256=1iD5xcV3pAskAQz2ulLgYKFb6PdGpPKCAnLN_FPwO-8,4033
119
+ arviz/plots/backends/matplotlib/violinplot.py,sha256=Cm2jCLbrHOIV0mu1_v2on8Qt7HhN8w2CMgus4qEpErU,4253
120
+ arviz/plots/styles/arviz-bluish.mplstyle,sha256=v4b3UX15ufQCWbAW3aflE9jE0w1T_PbYmc-f8QRJsKQ,95
121
+ arviz/plots/styles/arviz-brownish.mplstyle,sha256=VqYcOVlcIQVGMk4smdAZg-ui9nI5xtY4vaNAbeQbhas,94
122
+ arviz/plots/styles/arviz-colors.mplstyle,sha256=0mqf46lb2-fujgLOJzlAbGLaubznA2ZZOUSoht6eoEc,218
123
+ arviz/plots/styles/arviz-cyanish.mplstyle,sha256=3LGyDCXD9MrUrCT40ncmkjuW2qVhpw1DbaYGKzBqsXw,93
124
+ arviz/plots/styles/arviz-darkgrid.mplstyle,sha256=E6OmaFLN4w1gzjtxCryihdHnx5pWeCZZOKvO5e-DEcQ,1078
125
+ arviz/plots/styles/arviz-doc.mplstyle,sha256=b1924an0wQ20mnQYnNlR3JIjPa5YPBw6cQ688MPKzjc,3392
126
+ arviz/plots/styles/arviz-docgrid.mplstyle,sha256=xGW8i9hsoJw1rkL0GbZjLBexoEmRhDXOROQf5pC0FX8,3384
127
+ arviz/plots/styles/arviz-grayscale.mplstyle,sha256=Bm9sLS1H9OqT6vQ2iOs6hZ_Jtjzqvsyho2zcgmCyzaE,1176
128
+ arviz/plots/styles/arviz-greenish.mplstyle,sha256=OszR3ik_s25COWfD_J6h03J72C-idq2xaB5KrCOxqTM,93
129
+ arviz/plots/styles/arviz-orangish.mplstyle,sha256=mgGSbJAqqCXeTeh9CmKPrDFyygeV3_SpcDOwPuN5P98,93
130
+ arviz/plots/styles/arviz-plasmish.mplstyle,sha256=zstAfMInqSWOake-8w2DOKYFZgRNjYq_XIl8Ky7HoU8,85
131
+ arviz/plots/styles/arviz-purplish.mplstyle,sha256=1S3QtqH3y3aExQl3eru_MfesG7y6-TS54yFF0srEBYc,93
132
+ arviz/plots/styles/arviz-redish.mplstyle,sha256=c39qCsdQR48CHTzUKm3ga8ZBxQxxYOANNEgw5yv1hE0,93
133
+ arviz/plots/styles/arviz-royish.mplstyle,sha256=1monU3L95dHMqL5SKGFzIKE3WjNbDf3cRrHNQJ8oq54,87
134
+ arviz/plots/styles/arviz-viridish.mplstyle,sha256=kuaaxoLou_BPiGKNXzu-Fw_ST0eVuRwdluyvKDoXaCM,85
135
+ arviz/plots/styles/arviz-white.mplstyle,sha256=p3dbvWzOKhA-u8r3BmTF-bR5bhKh87iIkkVLD_V6EdI,1083
136
+ arviz/plots/styles/arviz-whitegrid.mplstyle,sha256=IMjjlfG3wg7heUjcVrkez1SNoiMI6BLztGPmsUp1iws,1072
137
+ arviz/static/css/style.css,sha256=wcC7rvCT4E6TycEiw7YqxwyaaZ4tTRDGqMkYYjAqrao,5910
138
+ arviz/static/html/icons-svg-inline.html,sha256=t-ChbtS1Gv8uZxc31DCJS8SuXDsLGUHoKgwv8zu6j2M,1343
139
+ arviz/stats/__init__.py,sha256=jWXBXngHmYFy8m_3QJKYRvLszI4L5Q1aIBS79PC9Gms,700
140
+ arviz/stats/density_utils.py,sha256=WCEkXCQsaycY_usA6xkorhIqr3_5ru7wgwE9eJJgdH8,32216
141
+ arviz/stats/diagnostics.py,sha256=qGIrq258E0vl_tJwZSCvmp0dbQxvysrdJ8zzIsaK50A,32501
142
+ arviz/stats/ecdf_utils.py,sha256=nQJAhX8BgAsY4c3aKBC1Et3mspXoei9Pc0hKblVfmgk,6252
143
+ arviz/stats/stats.py,sha256=aatvU_KqAwXTlZVCW0-JiJGf17OurkYqUrFjOmwk4Fw,86478
144
+ arviz/stats/stats_refitting.py,sha256=trbPC7LCnsb-n5D6g7J0bzXJCPfcDukJDniB4ud1z9E,5415
145
+ arviz/stats/stats_utils.py,sha256=XG8ILPVs8Jbh_v7jzLfwMkm2HraT2j2-Hxe_kEYlLjQ,20076
146
+ arviz/tests/__init__.py,sha256=TiS6C1IzwAXmNa8u36Y2xzL1CTTZm2PwzAtmZgoqepE,18
147
+ arviz/tests/conftest.py,sha256=6U9WpKmYf38EVRoFZNBpV0CunQvESBFJG2SJ8IBEkL4,1270
148
+ arviz/tests/helpers.py,sha256=qhsOhLtfyz-dC2yuT6ug0frYZlbims06BljJuEVDP6E,23593
149
+ arviz/tests/base_tests/__init__.py,sha256=zg7V5_0DZrCz7ozETqET6bUpAvUUmmkSoLpJLwaIj2E,23
150
+ arviz/tests/base_tests/test_data.py,sha256=EZN1W81LH7GrbtYxulSVxFfKoE7Rfl0BxYD_PWnVJEg,63041
151
+ arviz/tests/base_tests/test_data_zarr.py,sha256=sPWnIQ7vPhN5Ql3Dq4JENuSwQV5IeignQjy9BAYe1_A,5441
152
+ arviz/tests/base_tests/test_diagnostics.py,sha256=w8yT2WxelnxH-ynAN9lvspQTRR_UlDmnXIRMe7fus1c,20219
153
+ arviz/tests/base_tests/test_diagnostics_numba.py,sha256=2G5O-7Hz66DSaHIZtjs2XL45RezYnXQZH6Dg2Ow-p4Q,2847
154
+ arviz/tests/base_tests/test_helpers.py,sha256=PogHpWCMBEtkuzKt9jGQ8uIPg0cLDwztXxOnPSPNyVE,669
155
+ arviz/tests/base_tests/test_labels.py,sha256=X08vTMmcgXkYGbE2Qnu_UUDSTAIvSNKdnyqoWwmj008,1686
156
+ arviz/tests/base_tests/test_plot_utils.py,sha256=lwDZYDNrlEOKP-asJv6qu3sH_4y-FiHcFlqnMTpZyhw,11771
157
+ arviz/tests/base_tests/test_plots_bokeh.py,sha256=1JqUqLKUb1g4c4w41K3j_LCT4eqb3u1qGnYbUuJMHPE,39148
158
+ arviz/tests/base_tests/test_plots_matplotlib.py,sha256=CNIuR8wkz19MwDKJFnVSv0q7ljVNXGFb6zpHSXUeqy8,65620
159
+ arviz/tests/base_tests/test_rcparams.py,sha256=b9ueOXd9C0xiUIqgS0qnzvalHFgTFK7sUqL8UAzgJNs,10851
160
+ arviz/tests/base_tests/test_stats.py,sha256=uBrlHdwLQ9w9bP4Cq454qoZ754Xll1kYOpxEr2AwZF4,32385
161
+ arviz/tests/base_tests/test_stats_ecdf_utils.py,sha256=_JIV1mJpG_VwQbRuorTN2nqBE4M8aiE8SIM65i9wTJk,5712
162
+ arviz/tests/base_tests/test_stats_numba.py,sha256=wGXgNuSO_gwJajoYtXSgpIe88PcBRyIkRihxC8paR-o,1582
163
+ arviz/tests/base_tests/test_stats_utils.py,sha256=Udkw8tODs8mLt3_hO3HgNczrU0n09IJrML2agXF-upQ,13864
164
+ arviz/tests/base_tests/test_utils.py,sha256=Auggtvwv3Y9STS8Tbram-IQe5IhewkwFN14CTcjRd5M,12533
165
+ arviz/tests/base_tests/test_utils_numba.py,sha256=phV5engLS9Qe680UWfCn-5hzrh2PReiRrXwYKjMWt6U,2843
166
+ arviz/tests/external_tests/__init__.py,sha256=W-G7ubGjIx9U2mudENOmdTrPiZ9XGrl5bge5rTbfAB4,26
167
+ arviz/tests/external_tests/test_data_beanmachine.py,sha256=nwOJNJLrk5rY4M5YW-LT6gKsz1sFV-SMebXigMFHjhM,2647
168
+ arviz/tests/external_tests/test_data_cmdstan.py,sha256=jHy-dZrY4M7F4uYWf71fOxVwfPxgRpM9E3JAvpk03qA,16829
169
+ arviz/tests/external_tests/test_data_cmdstanpy.py,sha256=uCSOJVowKXccCPLpAwCiihghx_WxnUVyR8r801Xhw_0,18753
170
+ arviz/tests/external_tests/test_data_emcee.py,sha256=w-tsP74-n688C9-v_KIf0YxZg7S1WrhOdJUvaHS9e6I,6270
171
+ arviz/tests/external_tests/test_data_numpyro.py,sha256=TB5IkxlU3pMsjIgnxyhQaCkRkPWaK_d_YHEcs7XaWNo,11366
172
+ arviz/tests/external_tests/test_data_pyjags.py,sha256=kqZfV8QRnAngO9obnAq5lKPIuJdVJ82sbkIfSr2tpqY,4547
173
+ arviz/tests/external_tests/test_data_pyro.py,sha256=EaD_hZGALaSKQKK4OFgmuJ_1SsIYKessHQ7Jl9AKbw0,10771
174
+ arviz/tests/external_tests/test_data_pystan.py,sha256=ebg_JXkmAhXRllP0otjyourGF_fUaKMkwRfrQO6Glwk,11792
175
+ arviz/wrappers/__init__.py,sha256=d8GTUuBW_30LyDyk6qn2MAnvg-GZCeUw_i5SUPqaa1w,354
176
+ arviz/wrappers/base.py,sha256=Vvh330pdzIvBEaikHsDP1ej6L2jCZZ0Dqj5TvUbYesI,9134
177
+ arviz/wrappers/wrap_pymc.py,sha256=ltKv55aG0WTWXVDJuff5TXkgJJ_ESLvlT-JPlh3yHAg,1143
178
+ arviz/wrappers/wrap_stan.py,sha256=c40brlajoPcc3xk00xI9Hqc-y0xcbAmFAIZOtfXWeqo,5525
179
+ arviz-0.19.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
180
+ arviz-0.19.0.dist-info/METADATA,sha256=RlTHf-9M8LbhsQmURXX457_quT83XS_2LN7kCW95-28,8855
181
+ arviz-0.19.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
182
+ arviz-0.19.0.dist-info/top_level.txt,sha256=5MFvqrTtYRWsIx-SjKuFIUHtrnVJq0Ngd0Nc2_etQhE,6
183
+ arviz-0.19.0.dist-info/RECORD,,