Skip to content

Commit c308035

Browse files
committed
refactor (computations): add docstrings, __all__ and change author, delete priority system
1 parent c775035 commit c308035

10 files changed

Lines changed: 140 additions & 110 deletions

File tree

Lines changed: 32 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,43 @@
1+
"""
2+
Computations subpackage.
3+
4+
Provides descriptor abstractions, fitter/evaluator implementations,
5+
helper utilities, and a registry for matching fitter descriptors
6+
to distribution characteristics.
7+
"""
8+
19
from __future__ import annotations
210

3-
__author__ = "Leonid Elkin, Mikhail Mikhailov, Irina Sergeeva"
11+
__author__ = "Irina Sergeeva"
412
__copyright__ = "Copyright (c) 2025 PySATL project"
513
__license__ = "SPDX-License-Identifier: MIT"
614

7-
from pysatl_core.distributions.computations.base import (
8-
ComputationOption,
9-
EvaluatorDescriptor,
10-
FitterDescriptor,
11-
)
12-
from pysatl_core.distributions.computations.continuous import (
13-
FITTER_CDF_TO_PDF_1C,
14-
FITTER_CDF_TO_PPF_1C,
15-
FITTER_PDF_TO_CDF_1C,
16-
FITTER_PPF_TO_CDF_1C,
17-
fit_cdf_to_pdf_1C,
18-
fit_cdf_to_ppf_1C,
19-
fit_pdf_to_cdf_1C,
20-
fit_ppf_to_cdf_1C,
21-
)
22-
from pysatl_core.distributions.computations.discrete import (
23-
FITTER_CDF_TO_PMF_1D,
24-
FITTER_CDF_TO_PPF_1D,
25-
FITTER_PMF_TO_CDF_1D,
26-
FITTER_PPF_TO_CDF_1D,
27-
fit_cdf_to_pmf_1D,
28-
fit_cdf_to_ppf_1D,
29-
fit_pmf_to_cdf_1D,
30-
fit_ppf_to_cdf_1D,
31-
)
32-
from pysatl_core.distributions.computations.registry import FitterRegistry
15+
from .base import *
16+
from .base import __all__ as _base_all
17+
from .continuous import *
18+
from .continuous import __all__ as _continuous_all
19+
from .discrete import *
20+
from .discrete import __all__ as _discrete_all
21+
from .registry import *
22+
from .registry import __all__ as _registry_all
3323

34-
ALL_FITTER_DESCRIPTORS: list[FitterDescriptor] = [
35-
FITTER_PDF_TO_CDF_1C,
36-
FITTER_CDF_TO_PDF_1C,
37-
FITTER_CDF_TO_PPF_1C,
38-
FITTER_PPF_TO_CDF_1C,
39-
FITTER_PMF_TO_CDF_1D,
40-
FITTER_CDF_TO_PMF_1D,
41-
FITTER_CDF_TO_PPF_1D,
42-
FITTER_PPF_TO_CDF_1D,
24+
ALL_FITTER_DESCRIPTORS: list[FitterDescriptor] = [ # noqa: F405
25+
FITTER_PDF_TO_CDF_1C, # noqa: F405
26+
FITTER_CDF_TO_PDF_1C, # noqa: F405
27+
FITTER_CDF_TO_PPF_1C, # noqa: F405
28+
FITTER_PPF_TO_CDF_1C, # noqa: F405
29+
FITTER_PMF_TO_CDF_1D, # noqa: F405
30+
FITTER_CDF_TO_PMF_1D, # noqa: F405
31+
FITTER_CDF_TO_PPF_1D, # noqa: F405
32+
FITTER_PPF_TO_CDF_1D, # noqa: F405
4333
]
4434

4535
__all__ = [
46-
# Abstractions
47-
"ComputationOption",
48-
"FitterDescriptor",
49-
"EvaluatorDescriptor",
50-
"FitterRegistry",
51-
# Continuous fitters
52-
"fit_pdf_to_cdf_1C",
53-
"fit_cdf_to_pdf_1C",
54-
"fit_cdf_to_ppf_1C",
55-
"fit_ppf_to_cdf_1C",
56-
# Discrete fitters
57-
"fit_pmf_to_cdf_1D",
58-
"fit_cdf_to_pmf_1D",
59-
"fit_cdf_to_ppf_1D",
60-
"fit_ppf_to_cdf_1D",
61-
# Descriptors
62-
"FITTER_PDF_TO_CDF_1C",
63-
"FITTER_CDF_TO_PDF_1C",
64-
"FITTER_CDF_TO_PPF_1C",
65-
"FITTER_PPF_TO_CDF_1C",
66-
"FITTER_PMF_TO_CDF_1D",
67-
"FITTER_CDF_TO_PMF_1D",
68-
"FITTER_CDF_TO_PPF_1D",
69-
"FITTER_PPF_TO_CDF_1D",
70-
# Aggregate
36+
*_base_all,
37+
*_continuous_all,
38+
*_discrete_all,
39+
*_registry_all,
7140
"ALL_FITTER_DESCRIPTORS",
7241
]
42+
43+
del _base_all, _continuous_all, _discrete_all, _registry_all

src/pysatl_core/distributions/computations/base.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from __future__ import annotations
99

10-
__author__ = "Leonid Elkin, Mikhail Mikhailov, Irina Sergeeva"
10+
__author__ = "Irina Sergeeva"
1111
__copyright__ = "Copyright (c) 2025 PySATL project"
1212
__license__ = "SPDX-License-Identifier: MIT"
1313

@@ -110,8 +110,6 @@ class FitterDescriptor:
110110
Structured option schema.
111111
constraint_tags : frozenset[str]
112112
Constraint tags used for matching (e.g. ``{"continuous", "univariate"}``).
113-
priority : int
114-
Higher priority wins when multiple fitters match. Default is 0.
115113
description : str
116114
Human-readable summary of what the fitter does.
117115
"""
@@ -122,7 +120,6 @@ class FitterDescriptor:
122120
fitter: FitterFunc
123121
options: tuple[ComputationOption, ...] = ()
124122
constraint_tags: frozenset[str] = field(default_factory=frozenset)
125-
priority: int = 0
126123
description: str = ""
127124

128125
def to_computation_method(self) -> FitterMethod:
@@ -193,8 +190,6 @@ class EvaluatorDescriptor:
193190
Structured option schema.
194191
constraint_tags : frozenset[str]
195192
Constraint tags used for matching.
196-
priority : int
197-
Higher priority wins when multiple evaluators match. Default is 0.
198193
description : str
199194
Human-readable summary of what the evaluator does.
200195
"""
@@ -205,7 +200,6 @@ class EvaluatorDescriptor:
205200
evaluator: EvaluatorFunc
206201
options: tuple[ComputationOption, ...] = ()
207202
constraint_tags: frozenset[str] = field(default_factory=frozenset)
208-
priority: int = 0
209203
description: str = ""
210204

211205
def to_computation_method(self) -> EvaluatorMethod:
@@ -251,3 +245,10 @@ def option_names(self) -> tuple[str, ...]:
251245
def option_defaults(self) -> dict[str, Any]:
252246
"""Return ``{name: default}`` for every declared option."""
253247
return {opt.name: opt.default for opt in self.options}
248+
249+
250+
__all__ = [
251+
"ComputationOption",
252+
"FitterDescriptor",
253+
"EvaluatorDescriptor",
254+
]

src/pysatl_core/distributions/computations/computation.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from __future__ import annotations
1313

14-
__author__ = "Leonid Elkin, Mikhail Mikhailov, Irina Sergeeva"
14+
__author__ = "Irina Sergeeva"
1515
__copyright__ = "Copyright (c) 2025 PySATL project"
1616
__license__ = "SPDX-License-Identifier: MIT"
1717

@@ -193,3 +193,11 @@ def _bound(*args: Any, **kwargs: Any) -> NumericArray:
193193

194194
type ComputationMethodUnion = FitterMethod | EvaluatorMethod
195195
"""Union type for computation methods (fitter or evaluator)."""
196+
197+
198+
__all__ = [
199+
"FittedComputationMethod",
200+
"FitterMethod",
201+
"EvaluatorMethod",
202+
"ComputationMethodUnion",
203+
]

src/pysatl_core/distributions/computations/continuous.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
"""
2+
Continuous-distribution fitters (1C).
3+
4+
Provides fitter functions and their descriptors for converting between
5+
continuous distribution characteristics (PDF, CDF, PPF).
6+
"""
7+
18
from __future__ import annotations
29

3-
__author__ = "Leonid Elkin, Mikhail Mikhailov, Irina Sergeeva"
10+
__author__ = "Irina Sergeeva"
411
__copyright__ = "Copyright (c) 2025 PySATL project"
512
__license__ = "SPDX-License-Identifier: MIT"
613

@@ -103,7 +110,6 @@ def _pdf_scalar(t: float) -> float:
103110
),
104111
),
105112
constraint_tags=frozenset({"continuous", "univariate"}),
106-
priority=0,
107113
description="PDF -> CDF via segment-wise scipy.integrate.quad with cumsum.",
108114
)
109115

@@ -167,7 +173,6 @@ def _pdf(x: NumericArray, **options: Any) -> NumericArray:
167173
),
168174
),
169175
constraint_tags=frozenset({"continuous", "univariate"}),
170-
priority=0,
171176
description="CDF -> PDF via five-point central finite difference.",
172177
)
173178

@@ -270,7 +275,6 @@ def _ppf(q: NumericArray, **options: Any) -> NumericArray:
270275
),
271276
),
272277
constraint_tags=frozenset({"continuous", "univariate"}),
273-
priority=0,
274278
description="CDF -> PPF via vectorised bisection with exponential bound search.",
275279
)
276280

@@ -367,6 +371,17 @@ def f(q: float) -> float:
367371
),
368372
),
369373
constraint_tags=frozenset({"continuous", "univariate"}),
370-
priority=0,
371374
description="PPF -> CDF via root inversion (scipy.optimize.brentq).",
372375
)
376+
377+
378+
__all__ = [
379+
"fit_pdf_to_cdf_1C",
380+
"FITTER_PDF_TO_CDF_1C",
381+
"fit_cdf_to_pdf_1C",
382+
"FITTER_CDF_TO_PDF_1C",
383+
"fit_cdf_to_ppf_1C",
384+
"FITTER_CDF_TO_PPF_1C",
385+
"fit_ppf_to_cdf_1C",
386+
"FITTER_PPF_TO_CDF_1C",
387+
]

src/pysatl_core/distributions/computations/discrete.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
"""
2+
Discrete-distribution fitters (1D).
3+
4+
Provides fitter functions and their descriptors for converting between
5+
discrete distribution characteristics (PMF, CDF, PPF).
6+
"""
7+
18
from __future__ import annotations
29

3-
__author__ = "Leonid Elkin, Mikhail Mikhailov, Irina Sergeeva"
10+
__author__ = "Irina Sergeeva"
411
__copyright__ = "Copyright (c) 2025 PySATL project"
512
__license__ = "SPDX-License-Identifier: MIT"
613

@@ -112,7 +119,6 @@ def _cdf(x: NumericArray, **options: Any) -> NumericArray:
112119
fitter=fit_pmf_to_cdf_1D,
113120
options=(),
114121
constraint_tags=frozenset({"discrete", "univariate"}),
115-
priority=0,
116122
description="PMF -> CDF via prefix-sum (finite support) or tail summation (left-unbounded).",
117123
)
118124

@@ -182,7 +188,6 @@ def _pmf(x: NumericArray, **options: Any) -> NumericArray:
182188
fitter=fit_cdf_to_pmf_1D,
183189
options=(),
184190
constraint_tags=frozenset({"discrete", "univariate"}),
185-
priority=0,
186191
description="CDF -> PMF via finite differences on the support table.",
187192
)
188193

@@ -260,7 +265,6 @@ def _ppf(q: NumericArray, **options: Any) -> NumericArray:
260265
fitter=fit_cdf_to_ppf_1D,
261266
options=(),
262267
constraint_tags=frozenset({"discrete", "univariate"}),
263-
priority=0,
264268
description="CDF -> PPF via searchsorted inversion on the support table.",
265269
)
266270

@@ -352,6 +356,17 @@ def _cdf(x: NumericArray, **options: Any) -> NumericArray:
352356
),
353357
),
354358
constraint_tags=frozenset({"discrete", "univariate"}),
355-
priority=0,
356359
description="PPF -> CDF via grid probing and step-function table construction.",
357360
)
361+
362+
363+
__all__ = [
364+
"fit_pmf_to_cdf_1D",
365+
"FITTER_PMF_TO_CDF_1D",
366+
"fit_cdf_to_pmf_1D",
367+
"FITTER_CDF_TO_PMF_1D",
368+
"fit_cdf_to_ppf_1D",
369+
"FITTER_CDF_TO_PPF_1D",
370+
"fit_ppf_to_cdf_1D",
371+
"FITTER_PPF_TO_CDF_1D",
372+
]

src/pysatl_core/distributions/computations/helpers.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
"""
2+
Shared helper utilities for fitter and evaluator implementations.
3+
4+
Provides support resolution, tail-table construction, support-bound
5+
estimation, and scalar-unwrapping helpers.
6+
"""
7+
18
from __future__ import annotations
29

3-
__author__ = "Leonid Elkin, Mikhail Mikhailov, Irina Sergeeva"
10+
__author__ = "Irina Sergeeva"
411
__copyright__ = "Copyright (c) 2025 PySATL project"
512
__license__ = "SPDX-License-Identifier: MIT"
613

@@ -272,3 +279,12 @@ def maybe_unwrap_scalar(result: np.ndarray) -> NumericArray:
272279
if result.shape == (1,):
273280
return cast("NumericArray", result[0])
274281
return cast("NumericArray", result)
282+
283+
284+
__all__ = [
285+
"resolve",
286+
"collect_support",
287+
"build_tail_table",
288+
"estimate_support_bounds",
289+
"maybe_unwrap_scalar",
290+
]

0 commit comments

Comments
 (0)