tesorotools-python 0.0.27__tar.gz → 0.0.28__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.
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/PKG-INFO +1 -1
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/pyproject.toml +1 -1
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/pipeline/engine.py +26 -2
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/.gitignore +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/barh.md +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/barh_plot.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/line_plot.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/stacked.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/table.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/type_curve.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/README.md +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Black.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Bold.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Extrabold.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Extralight.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Light.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Medium.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Regular.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/CabinetGrotesk-Thin.otf +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/README.md +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/plots.yaml +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/tesoro.mplstyle +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/convert.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/README.md +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/debug.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/lseg.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/database/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/database/local.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/database/push.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/dependencies/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/dependencies/node.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/dependencies/resolution.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/main.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/offsets/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/offsets/offsets.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/offsets/outliers.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/pipeline/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/pipeline/diagnose.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/pipeline/rules.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/providers/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/providers/base.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/providers/bde.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/py.typed +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/content.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/images.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/section.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/subtitle.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/table.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/text.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/title.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/report.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/__init__.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/config.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/format.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/globals.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/matplotlib.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/series.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/shortcuts.py +0 -0
- {tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/utils/template.py +0 -0
|
@@ -51,6 +51,12 @@ def apply_transformations(
|
|
|
51
51
|
) -> pd.DataFrame:
|
|
52
52
|
"""Apply rules sequentially to a DataFrame.
|
|
53
53
|
|
|
54
|
+
New columns are accumulated in a dict and merged into
|
|
55
|
+
*result* only when a later rule reads from them (or at
|
|
56
|
+
the end). This avoids per-rule fragmentation of the
|
|
57
|
+
DataFrame and pandas' ``PerformanceWarning`` when many
|
|
58
|
+
rules (100+) are applied.
|
|
59
|
+
|
|
54
60
|
Parameters
|
|
55
61
|
----------
|
|
56
62
|
df
|
|
@@ -64,8 +70,10 @@ def apply_transformations(
|
|
|
64
70
|
Copy of *df* with new columns added by the rules.
|
|
65
71
|
"""
|
|
66
72
|
result = df.copy()
|
|
73
|
+
pending: dict[str, pd.Series[float]] = {}
|
|
67
74
|
for rule in rules:
|
|
68
|
-
|
|
75
|
+
available = set(result.columns) | set(pending)
|
|
76
|
+
missing = [d for d in rule.dependencies if d not in available]
|
|
69
77
|
if missing:
|
|
70
78
|
logger.warning(
|
|
71
79
|
"Skipping %s: missing dependencies %s",
|
|
@@ -73,5 +81,21 @@ def apply_transformations(
|
|
|
73
81
|
missing,
|
|
74
82
|
)
|
|
75
83
|
continue
|
|
76
|
-
|
|
84
|
+
# rule.compute() reads from result; flush pending
|
|
85
|
+
# into result if this rule needs any pending column.
|
|
86
|
+
if any(d in pending for d in rule.dependencies):
|
|
87
|
+
result = pd.concat(
|
|
88
|
+
[
|
|
89
|
+
result,
|
|
90
|
+
pd.DataFrame(pending, index=result.index),
|
|
91
|
+
],
|
|
92
|
+
axis=1,
|
|
93
|
+
)
|
|
94
|
+
pending = {}
|
|
95
|
+
pending[rule.output_name] = rule.compute(result)
|
|
96
|
+
if pending:
|
|
97
|
+
result = pd.concat(
|
|
98
|
+
[result, pd.DataFrame(pending, index=result.index)],
|
|
99
|
+
axis=1,
|
|
100
|
+
)
|
|
77
101
|
return result
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/barh_plot.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/line_plot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/artists/type_curve.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/fonts/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/assets/tesoro.mplstyle
RENAMED
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/README.md
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/__init__.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/debug.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/data_sources/lseg.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/database/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/dependencies/__init__.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/dependencies/node.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/dependencies/resolution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/pipeline/__init__.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/pipeline/diagnose.py
RENAMED
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/providers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/__init__.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/content.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/images.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/section.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/subtitle.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/table.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/text.py
RENAMED
|
File without changes
|
{tesorotools_python-0.0.27 → tesorotools_python-0.0.28}/src/tesorotools/render/content/title.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|