drippy-eda 0.1.0__tar.gz

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.
@@ -0,0 +1,16 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025, Michiel Dubbelman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
6
+ documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
7
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
8
+ persons to whom the Software is furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
11
+ Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
14
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.4
2
+ Name: drippy-eda
3
+ Version: 0.1.0
4
+ Summary: Discover, Refine, Inspect, Present in Python, using EDA principles outlined by NIST/SEMATECH e-Handbook of Statistical Methods, http://www.itl.nist.gov/div898/handbook/eda/eda.htm to analyse data.
5
+ Keywords: EDA,data analysis,data,exploratory data analysis,regression,fitting
6
+ Author: Michiel Dubbelman
7
+ Author-email: Michiel Dubbelman <m.p.dubbelman@tudelft.nl>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Natural Language :: English
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Requires-Dist: matplotlib>=3.10.7,<4.0.0
19
+ Requires-Dist: numpy>=2.3.4,<3.0.0
20
+ Requires-Dist: scipy>=1.16.3,<2.0.0
21
+ Requires-Dist: astropy>=7.1.1,<8.0.0
22
+ Requires-Dist: lmfit>=1.3.4,<2.0.0
23
+ Requires-Python: >=3.11, <4
24
+ Project-URL: Repository, https://github.com/Pjieter/drippy
25
+ Project-URL: Issues, https://github.com/Pjieter/drippy/issues
26
+ Project-URL: Changelog, https://github.com/Pjieter/drippy/blob/main/CHANGELOG.md
27
+ Project-URL: ReadTheDocs, https://drippy.readthedocs.io
28
+ Description-Content-Type: text/markdown
29
+
30
+ # DRIPPY
31
+
32
+ Discover, Refine, Inspect, Present in Python, using EDA principles outlined by NIST/SEMATECH e-Handbook of Statistical Methods, ([this link](http://www.itl.nist.gov/div898/handbook/eda/eda.htm)), to analyse data.
33
+
34
+ [![github repo badge](https://img.shields.io/badge/github-repo-000.svg?logo=github&labelColor=gray&color=blue)](https://github.com/Pjieter/drippy)
35
+ [![Documentation Status](https://readthedocs.org/projects/drippy/badge/?version=latest)](https://drippy.readthedocs.io/en/latest/?badge=latest)
36
+ [![workflow scq badge](https://sonarcloud.io/api/project_badges/measure?project=Pjieter_drippy&metric=alert_status)](https://sonarcloud.io/dashboard?id=Pjieter_drippy)
37
+ [![workflow scc badge](https://sonarcloud.io/api/project_badges/measure?project=Pjieter_drippy&metric=coverage)](https://sonarcloud.io/dashboard?id=Pjieter_drippy)
38
+ [![build](https://github.com/Pjieter/drippy/actions/workflows/build.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/build.yml)
39
+ [![cffconvert](https://github.com/Pjieter/drippy/actions/workflows/cffconvert.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/cffconvert.yml)
40
+ [![sonarcloud](https://github.com/Pjieter/drippy/actions/workflows/sonarcloud.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/sonarcloud.yml)
41
+ [![link-check](https://github.com/Pjieter/drippy/actions/workflows/link-check.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/link-check.yml)
42
+
43
+ ## How to use drippy
44
+
45
+ drippy revolves around `EDAData`, a validated container for your data that
46
+ exposes every plot as a fluent method. The same plots are also available as
47
+ standalone functions that accept an `EDAData` instance as their first
48
+ argument.
49
+
50
+ ```python
51
+ import numpy as np
52
+
53
+ from drippy import EDAData
54
+ from drippy import histogram
55
+
56
+ rng = np.random.default_rng(42)
57
+ y = rng.normal(loc=688.0, scale=65.0, size=200)
58
+ data = EDAData(y=y)
59
+
60
+ # Fluent API: NIST's recommended first stop for any EDA, the 4-plot
61
+ fig, axes = data.four_plot()
62
+
63
+ # Standalone function: same result, explicit function call
64
+ fig, ax = histogram(data, bins=20)
65
+ ```
66
+
67
+ `EDAData` accepts optional `t` (time series), `x` (one-factor), or `factors`
68
+ (multi-factor/DOE) arguments to unlock the corresponding plot families:
69
+
70
+ - **Univariate** (`y = c + e`): four-plot, histogram, run-sequence plot, lag
71
+ plot, bootstrap plot, box-cox normality/linearity plots, normal probability
72
+ plot, probability plot, PPCC plot, QQ plot, Weibull plot
73
+ - **Time series** (`y = f(t) + e`): autocorrelation, spectral, and complex
74
+ demodulation plots
75
+ - **One-factor** (`y = f(x) + e`): box plot, scatter plot, mean/sd plots,
76
+ bihistogram
77
+ - **Multi-factor / DOE**: DOE mean/sd/scatter plots, contour plot
78
+ - **Regression**: six-plot, linear slope/intercept/correlation/residual-sd
79
+ plots
80
+ - **Comparative**: block plot, star plot, Youden plot
81
+
82
+ ## Installation
83
+
84
+ Install drippy from PyPI (distribution name `drippy-eda`; the import name is `drippy`):
85
+
86
+ ```console
87
+ pip install drippy-eda
88
+ ```
89
+
90
+ ### Development installation
91
+
92
+ To work on drippy itself, clone the repository and install it with
93
+ [uv](https://docs.astral.sh/uv/):
94
+
95
+ ```console
96
+ git clone git@github.com:Pjieter/drippy.git && cd drippy && uv sync --all-groups
97
+ ```
98
+
99
+ ## Documentation
100
+
101
+ The documentation can be found here: [https://drippy.readthedocs.io/en/latest/](https://drippy.readthedocs.io/en/latest/)
102
+ ## Contributing
103
+
104
+ If you want to contribute to the development of drippy,
105
+ have a look at the [contribution guidelines](CONTRIBUTING.md).
106
+
107
+ ## Credits
108
+
109
+ This package was created with [Copier](https://github.com/copier-org/copier) and the [NLeSC/python-template](https://github.com/NLeSC/python-template).
110
+
111
+
@@ -0,0 +1,82 @@
1
+ # DRIPPY
2
+
3
+ Discover, Refine, Inspect, Present in Python, using EDA principles outlined by NIST/SEMATECH e-Handbook of Statistical Methods, ([this link](http://www.itl.nist.gov/div898/handbook/eda/eda.htm)), to analyse data.
4
+
5
+ [![github repo badge](https://img.shields.io/badge/github-repo-000.svg?logo=github&labelColor=gray&color=blue)](https://github.com/Pjieter/drippy)
6
+ [![Documentation Status](https://readthedocs.org/projects/drippy/badge/?version=latest)](https://drippy.readthedocs.io/en/latest/?badge=latest)
7
+ [![workflow scq badge](https://sonarcloud.io/api/project_badges/measure?project=Pjieter_drippy&metric=alert_status)](https://sonarcloud.io/dashboard?id=Pjieter_drippy)
8
+ [![workflow scc badge](https://sonarcloud.io/api/project_badges/measure?project=Pjieter_drippy&metric=coverage)](https://sonarcloud.io/dashboard?id=Pjieter_drippy)
9
+ [![build](https://github.com/Pjieter/drippy/actions/workflows/build.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/build.yml)
10
+ [![cffconvert](https://github.com/Pjieter/drippy/actions/workflows/cffconvert.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/cffconvert.yml)
11
+ [![sonarcloud](https://github.com/Pjieter/drippy/actions/workflows/sonarcloud.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/sonarcloud.yml)
12
+ [![link-check](https://github.com/Pjieter/drippy/actions/workflows/link-check.yml/badge.svg)](https://github.com/Pjieter/drippy/actions/workflows/link-check.yml)
13
+
14
+ ## How to use drippy
15
+
16
+ drippy revolves around `EDAData`, a validated container for your data that
17
+ exposes every plot as a fluent method. The same plots are also available as
18
+ standalone functions that accept an `EDAData` instance as their first
19
+ argument.
20
+
21
+ ```python
22
+ import numpy as np
23
+
24
+ from drippy import EDAData
25
+ from drippy import histogram
26
+
27
+ rng = np.random.default_rng(42)
28
+ y = rng.normal(loc=688.0, scale=65.0, size=200)
29
+ data = EDAData(y=y)
30
+
31
+ # Fluent API: NIST's recommended first stop for any EDA, the 4-plot
32
+ fig, axes = data.four_plot()
33
+
34
+ # Standalone function: same result, explicit function call
35
+ fig, ax = histogram(data, bins=20)
36
+ ```
37
+
38
+ `EDAData` accepts optional `t` (time series), `x` (one-factor), or `factors`
39
+ (multi-factor/DOE) arguments to unlock the corresponding plot families:
40
+
41
+ - **Univariate** (`y = c + e`): four-plot, histogram, run-sequence plot, lag
42
+ plot, bootstrap plot, box-cox normality/linearity plots, normal probability
43
+ plot, probability plot, PPCC plot, QQ plot, Weibull plot
44
+ - **Time series** (`y = f(t) + e`): autocorrelation, spectral, and complex
45
+ demodulation plots
46
+ - **One-factor** (`y = f(x) + e`): box plot, scatter plot, mean/sd plots,
47
+ bihistogram
48
+ - **Multi-factor / DOE**: DOE mean/sd/scatter plots, contour plot
49
+ - **Regression**: six-plot, linear slope/intercept/correlation/residual-sd
50
+ plots
51
+ - **Comparative**: block plot, star plot, Youden plot
52
+
53
+ ## Installation
54
+
55
+ Install drippy from PyPI (distribution name `drippy-eda`; the import name is `drippy`):
56
+
57
+ ```console
58
+ pip install drippy-eda
59
+ ```
60
+
61
+ ### Development installation
62
+
63
+ To work on drippy itself, clone the repository and install it with
64
+ [uv](https://docs.astral.sh/uv/):
65
+
66
+ ```console
67
+ git clone git@github.com:Pjieter/drippy.git && cd drippy && uv sync --all-groups
68
+ ```
69
+
70
+ ## Documentation
71
+
72
+ The documentation can be found here: [https://drippy.readthedocs.io/en/latest/](https://drippy.readthedocs.io/en/latest/)
73
+ ## Contributing
74
+
75
+ If you want to contribute to the development of drippy,
76
+ have a look at the [contribution guidelines](CONTRIBUTING.md).
77
+
78
+ ## Credits
79
+
80
+ This package was created with [Copier](https://github.com/copier-org/copier) and the [NLeSC/python-template](https://github.com/NLeSC/python-template).
81
+
82
+
@@ -0,0 +1,163 @@
1
+ [build-system]
2
+ requires = ["uv_build>=0.9,<1"]
3
+ build-backend = "uv_build"
4
+
5
+ [project]
6
+ classifiers = [
7
+ "Development Status :: 4 - Beta",
8
+ "Intended Audience :: Developers",
9
+ "Intended Audience :: Science/Research",
10
+ "Natural Language :: English",
11
+ "Programming Language :: Python :: 3",
12
+ "Programming Language :: Python :: 3.11",
13
+ "Programming Language :: Python :: 3.12",
14
+ "Programming Language :: Python :: 3.13",
15
+ ]
16
+ dependencies = [
17
+ "matplotlib (>=3.10.7,<4.0.0)",
18
+ "numpy (>=2.3.4,<3.0.0)",
19
+ "scipy (>=1.16.3,<2.0.0)",
20
+ "astropy (>=7.1.1,<8.0.0)",
21
+ "lmfit (>=1.3.4,<2.0.0)",
22
+ ]
23
+ description = "Discover, Refine, Inspect, Present in Python, using EDA principles outlined by NIST/SEMATECH e-Handbook of Statistical Methods, http://www.itl.nist.gov/div898/handbook/eda/eda.htm to analyse data."
24
+ keywords = [
25
+ "EDA",
26
+ "data analysis",
27
+ "data",
28
+ "exploratory data analysis",
29
+ "regression",
30
+ "fitting",
31
+ ]
32
+ license = "MIT"
33
+ license-files = ["LICENSE"]
34
+ name = "drippy-eda"
35
+ requires-python = ">=3.11,<4"
36
+ version = "0.1.0"
37
+
38
+ [[project.authors]]
39
+ name = "Michiel Dubbelman"
40
+ email = "m.p.dubbelman@tudelft.nl"
41
+
42
+ [project.readme]
43
+ file = "README.md"
44
+ content-type = "text/markdown"
45
+
46
+ [project.urls]
47
+ Repository = "https://github.com/Pjieter/drippy"
48
+ Issues = "https://github.com/Pjieter/drippy/issues"
49
+ Changelog = "https://github.com/Pjieter/drippy/blob/main/CHANGELOG.md"
50
+ ReadTheDocs = "https://drippy.readthedocs.io"
51
+
52
+ [dependency-groups]
53
+ docs = [
54
+ "sphinx (>=8.2.3,<9.0.0)",
55
+ "sphinx-rtd-theme (>=3.0.2,<4.0.0)",
56
+ "sphinx-autoapi (>=3.6.0,<4.0.0)",
57
+ "myst-nb (>=1.2.0,<2.0.0)",
58
+ "ipykernel (>=6.29.0,<7.0.0)",
59
+ ]
60
+ dev = [
61
+ { include-group = "docs" },
62
+ "bump-my-version (>=1.2.2,<2.0.0)",
63
+ "coverage (>=7.10.6,<8.0.0)",
64
+ "pytest (>=9.0.3,<10.0.0)",
65
+ "pytest-cov (>=7.0.0,<8.0.0)",
66
+ "ruff (>=0.13.0,<0.14.0)",
67
+ "tox (>=4.30.2,<5.0.0)",
68
+ "pytest-xdist[psutil] (>=3.8.0,<4.0.0)",
69
+ ]
70
+
71
+ [tool.uv.build-backend]
72
+ module-name = "drippy"
73
+
74
+ [tool.pytest.ini_options]
75
+ testpaths = ["tests"]
76
+ filterwarnings = ["ignore:invalid value encountered in scalar power:RuntimeWarning"]
77
+
78
+ [tool.coverage.run]
79
+ branch = true
80
+ source = ["src/drippy"]
81
+ command_line = "-m pytest"
82
+
83
+ [tool.tox]
84
+ legacy_tox_ini = """
85
+ [tox]
86
+ envlist = py311,py312,py313
87
+ skip_missing_interpreters = true
88
+ [testenv]
89
+ commands = pytest
90
+ dependency_groups = dev
91
+ """
92
+
93
+ [tool.ruff]
94
+ line-length = 79
95
+ output-format = "concise"
96
+ extend-exclude = ["docs"]
97
+
98
+ [tool.ruff.format]
99
+ docstring-code-format = true
100
+ docstring-code-line-length = 72
101
+
102
+ [tool.ruff.lint]
103
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
104
+ select = ["ALL"]
105
+ ignore = [
106
+ "ANN204",
107
+ "FBT",
108
+ "TD",
109
+ "FIX001",
110
+ "FIX002",
111
+ "B028",
112
+ "D100",
113
+ "D104",
114
+ "D105",
115
+ "D107",
116
+ "COM812",
117
+ "TRY003",
118
+ ]
119
+
120
+ [tool.ruff.lint.pydocstyle]
121
+ convention = "google"
122
+
123
+ [tool.ruff.lint.per-file-ignores]
124
+ "tests/**.py" = [
125
+ "ANN201",
126
+ "PT011",
127
+ "S101",
128
+ "ANN001",
129
+ "D101",
130
+ "D102",
131
+ "D103",
132
+ "PLR2004",
133
+ ]
134
+ "src/drippy/data.py" = [
135
+ "ANN401",
136
+ "PLC0415",
137
+ ]
138
+
139
+ [tool.ruff.lint.isort]
140
+ known-first-party = ["drippy"]
141
+ force-single-line = true
142
+ no-lines-before = [
143
+ "future",
144
+ "standard-library",
145
+ "third-party",
146
+ "first-party",
147
+ "local-folder",
148
+ ]
149
+
150
+ [tool.bumpversion]
151
+ current_version = "0.1.0"
152
+
153
+ [[tool.bumpversion.files]]
154
+ filename = "src/drippy/__init__.py"
155
+
156
+ [[tool.bumpversion.files]]
157
+ filename = "pyproject.toml"
158
+
159
+ [[tool.bumpversion.files]]
160
+ filename = "CITATION.cff"
161
+
162
+ [[tool.bumpversion.files]]
163
+ filename = "docs/conf.py"
@@ -0,0 +1,161 @@
1
+ # see documentation, e.g.
2
+ # - https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#declaring-project-metadata
3
+ # - https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
4
+ # - https://www.python.org/dev/peps/pep-0621/
5
+
6
+ [build-system]
7
+ requires = ["uv_build>=0.9,<1"]
8
+ build-backend = "uv_build"
9
+
10
+ [project]
11
+ authors = [
12
+ { name = "Michiel Dubbelman", email = "m.p.dubbelman@tudelft.nl" }
13
+ ]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Developers",
17
+ "Intended Audience :: Science/Research",
18
+ "Natural Language :: English",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ ]
24
+ dependencies = [
25
+ "matplotlib (>=3.10.7,<4.0.0)",
26
+ "numpy (>=2.3.4,<3.0.0)",
27
+ "scipy (>=1.16.3,<2.0.0)",
28
+ "astropy (>=7.1.1,<8.0.0)",
29
+ "lmfit (>=1.3.4,<2.0.0)",
30
+ ]
31
+ description = "Discover, Refine, Inspect, Present in Python, using EDA principles outlined by NIST/SEMATECH e-Handbook of Statistical Methods, http://www.itl.nist.gov/div898/handbook/eda/eda.htm to analyse data."
32
+ keywords = ["EDA", "data analysis", "data", "exploratory data analysis", "regression", "fitting"]
33
+ license = "MIT"
34
+ license-files = ["LICENSE"]
35
+
36
+ name = "drippy-eda"
37
+ readme = {file = "README.md", content-type = "text/markdown"}
38
+ requires-python = ">=3.11,<4"
39
+ version = "0.1.0"
40
+
41
+ [dependency-groups]
42
+ docs = [
43
+ "sphinx (>=8.2.3,<9.0.0)",
44
+ "sphinx-rtd-theme (>=3.0.2,<4.0.0)",
45
+ "sphinx-autoapi (>=3.6.0,<4.0.0)",
46
+ "myst-nb (>=1.2.0,<2.0.0)",
47
+ "ipykernel (>=6.29.0,<7.0.0)",
48
+ ]
49
+ dev = [
50
+ {include-group = "docs"},
51
+ "bump-my-version (>=1.2.2,<2.0.0)",
52
+ "coverage (>=7.10.6,<8.0.0)",
53
+ "pytest (>=9.0.3,<10.0.0)",
54
+ "pytest-cov (>=7.0.0,<8.0.0)",
55
+ "ruff (>=0.13.0,<0.14.0)",
56
+ "tox (>=4.30.2,<5.0.0)",
57
+ "pytest-xdist[psutil] (>=3.8.0,<4.0.0)",
58
+ ]
59
+
60
+ [tool.uv.build-backend]
61
+ # Distribution is drippy-eda (the PyPI name "drippy" is taken); the import
62
+ # package stays drippy.
63
+ module-name = "drippy"
64
+
65
+ [project.urls]
66
+ Repository = "https://github.com/Pjieter/drippy"
67
+ Issues = "https://github.com/Pjieter/drippy/issues"
68
+ Changelog = "https://github.com/Pjieter/drippy/blob/main/CHANGELOG.md"
69
+ ReadTheDocs = "https://drippy.readthedocs.io"
70
+
71
+ [tool.pytest.ini_options]
72
+ testpaths = ["tests"]
73
+ filterwarnings = [
74
+ "ignore:invalid value encountered in scalar power:RuntimeWarning",
75
+ ]
76
+
77
+
78
+ [tool.coverage.run]
79
+ branch = true
80
+ source = ["src/drippy"]
81
+ command_line = "-m pytest"
82
+
83
+ [tool.tox]
84
+ legacy_tox_ini = """
85
+ [tox]
86
+ envlist = py311,py312,py313
87
+ skip_missing_interpreters = true
88
+ [testenv]
89
+ commands = pytest
90
+ dependency_groups = dev
91
+ """
92
+
93
+ [tool.ruff]
94
+ line-length = 79
95
+ output-format = "concise"
96
+ extend-exclude = ["docs"]
97
+
98
+ [tool.ruff.format]
99
+ docstring-code-format = true
100
+ docstring-code-line-length = 72
101
+
102
+ [tool.ruff.lint]
103
+ # Allow unused variables when underscore-prefixed.
104
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
105
+
106
+ # Enable Pyflakes `E` and `F` codes by default.
107
+ select = ["ALL"]
108
+ ignore = [
109
+ "ANN204", # Missing return type annotation for special (dunder) method
110
+ "FBT", # Using boolean function arguments
111
+ "TD", # TODOs
112
+ "FIX001", # Resolve FIXMEs
113
+ "FIX002", # Resolve TODOs
114
+ "B028", # No explicit `stacklevel` keyword argument found in warning
115
+ # No docstrings required in the following cases
116
+ "D100", # Missing module docstring
117
+ "D104", # Missing public package docstring
118
+ "D105", # Missing docstring in magic method
119
+ "D107", # Missing docstring in `__init__`
120
+ "COM812", # Missing trailing comma in a multi-line collection, for removing conflict with formatter
121
+ "TRY003", # Avoid specifying long messages outside the exception class
122
+ ]
123
+ pydocstyle.convention = "google"
124
+
125
+ [tool.ruff.lint.per-file-ignores]
126
+ # Tests can ignore a few extra rules
127
+ "tests/**.py" = [
128
+ "ANN201", # Missing return type annotation for public function
129
+ "PT011", # Missing `match` parameter in `pytest.raises()`
130
+ "S101", # Use of assert is detected
131
+ "ANN001", # Missing type annotation for function arguments
132
+ "D101", # Missing docstring in public class
133
+ "D102", # Missing docstring in public method
134
+ "D103", # Missing docstring in public function
135
+ "PLR2004", # Magic value used in comparison
136
+ ]
137
+ # Fluent methods in data.py use lazy imports to avoid circular dependencies
138
+ "src/drippy/data.py" = [
139
+ "ANN401", # Dynamically typed expressions in **kwargs
140
+ "PLC0415", # Import should be at top-level (lazy imports for circular deps)
141
+ ]
142
+
143
+ [tool.ruff.lint.isort]
144
+ known-first-party = ["drippy"]
145
+ force-single-line = true
146
+ no-lines-before = ["future","standard-library","third-party","first-party","local-folder"]
147
+
148
+ [tool.bumpversion]
149
+ current_version = "0.1.0"
150
+
151
+ [[tool.bumpversion.files]]
152
+ filename = "src/drippy/__init__.py"
153
+
154
+ [[tool.bumpversion.files]]
155
+ filename = "pyproject.toml"
156
+
157
+ [[tool.bumpversion.files]]
158
+ filename = "CITATION.cff"
159
+
160
+ [[tool.bumpversion.files]]
161
+ filename = "docs/conf.py"
@@ -0,0 +1,80 @@
1
+ """drippy — EDA plotting library following NIST/SEMATECH principles."""
2
+
3
+ import logging
4
+ from drippy.comparative import block_plot
5
+ from drippy.comparative import star_plot
6
+ from drippy.comparative import youden_plot
7
+ from drippy.data import EDAData
8
+ from drippy.multifactor import contour_plot
9
+ from drippy.multifactor import doe_mean_plot
10
+ from drippy.multifactor import doe_scatter_plot
11
+ from drippy.multifactor import doe_sd_plot
12
+ from drippy.onefactor import bihistogram
13
+ from drippy.onefactor import box_plot
14
+ from drippy.onefactor import mean_plot
15
+ from drippy.onefactor import qq_plot
16
+ from drippy.onefactor import scatter_plot
17
+ from drippy.onefactor import sd_plot
18
+ from drippy.regression import linear_correlation_plot
19
+ from drippy.regression import linear_intercept_plot
20
+ from drippy.regression import linear_residual_sd_plot
21
+ from drippy.regression import linear_slope_plot
22
+ from drippy.regression import six_plot
23
+ from drippy.timeseries import autocorrelation_plot
24
+ from drippy.timeseries import complex_demodulation_amplitude_plot
25
+ from drippy.timeseries import complex_demodulation_phase_plot
26
+ from drippy.timeseries import spectral_plot
27
+ from drippy.univariate import bootstrap_plot
28
+ from drippy.univariate import box_cox_linearity_plot
29
+ from drippy.univariate import box_cox_normality_plot
30
+ from drippy.univariate import four_plot
31
+ from drippy.univariate import histogram
32
+ from drippy.univariate import lag_plot
33
+ from drippy.univariate import normal_probability_plot
34
+ from drippy.univariate import ppcc_plot
35
+ from drippy.univariate import probability_plot
36
+ from drippy.univariate import run_sequence_plot
37
+ from drippy.univariate import weibull_plot
38
+
39
+ logging.getLogger(__name__).addHandler(logging.NullHandler())
40
+
41
+ __author__ = "Michiel Dubbelman"
42
+ __email__ = "m.p.dubbelman@tudelft.nl"
43
+ __version__ = "0.1.0"
44
+
45
+ __all__ = [
46
+ "EDAData",
47
+ "autocorrelation_plot",
48
+ "bihistogram",
49
+ "block_plot",
50
+ "bootstrap_plot",
51
+ "box_cox_linearity_plot",
52
+ "box_cox_normality_plot",
53
+ "box_plot",
54
+ "complex_demodulation_amplitude_plot",
55
+ "complex_demodulation_phase_plot",
56
+ "contour_plot",
57
+ "doe_mean_plot",
58
+ "doe_scatter_plot",
59
+ "doe_sd_plot",
60
+ "four_plot",
61
+ "histogram",
62
+ "lag_plot",
63
+ "linear_correlation_plot",
64
+ "linear_intercept_plot",
65
+ "linear_residual_sd_plot",
66
+ "linear_slope_plot",
67
+ "mean_plot",
68
+ "normal_probability_plot",
69
+ "ppcc_plot",
70
+ "probability_plot",
71
+ "qq_plot",
72
+ "run_sequence_plot",
73
+ "scatter_plot",
74
+ "sd_plot",
75
+ "six_plot",
76
+ "spectral_plot",
77
+ "star_plot",
78
+ "weibull_plot",
79
+ "youden_plot",
80
+ ]