additory 0.1.0a4__py3-none-any.whl → 0.1.1a1__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 (121) hide show
  1. additory/__init__.py +58 -14
  2. additory/common/__init__.py +31 -147
  3. additory/common/column_selector.py +255 -0
  4. additory/common/distributions.py +286 -613
  5. additory/common/extractors.py +313 -0
  6. additory/common/knn_imputation.py +332 -0
  7. additory/common/result.py +380 -0
  8. additory/common/strategy_parser.py +243 -0
  9. additory/common/unit_conversions.py +338 -0
  10. additory/common/validation.py +283 -103
  11. additory/core/__init__.py +34 -22
  12. additory/core/backend.py +258 -0
  13. additory/core/config.py +177 -305
  14. additory/core/logging.py +230 -24
  15. additory/core/memory_manager.py +157 -495
  16. additory/expressions/__init__.py +2 -23
  17. additory/expressions/compiler.py +457 -0
  18. additory/expressions/engine.py +264 -487
  19. additory/expressions/integrity.py +179 -0
  20. additory/expressions/loader.py +263 -0
  21. additory/expressions/parser.py +363 -167
  22. additory/expressions/resolver.py +274 -0
  23. additory/functions/__init__.py +1 -0
  24. additory/functions/analyze/__init__.py +144 -0
  25. additory/functions/analyze/cardinality.py +58 -0
  26. additory/functions/analyze/correlations.py +66 -0
  27. additory/functions/analyze/distributions.py +53 -0
  28. additory/functions/analyze/duplicates.py +49 -0
  29. additory/functions/analyze/features.py +61 -0
  30. additory/functions/analyze/imputation.py +66 -0
  31. additory/functions/analyze/outliers.py +65 -0
  32. additory/functions/analyze/patterns.py +65 -0
  33. additory/functions/analyze/presets.py +72 -0
  34. additory/functions/analyze/quality.py +59 -0
  35. additory/functions/analyze/timeseries.py +53 -0
  36. additory/functions/analyze/types.py +45 -0
  37. additory/functions/expressions/__init__.py +161 -0
  38. additory/functions/snapshot/__init__.py +82 -0
  39. additory/functions/snapshot/filter.py +119 -0
  40. additory/functions/synthetic/__init__.py +113 -0
  41. additory/functions/synthetic/mode_detector.py +47 -0
  42. additory/functions/synthetic/strategies/__init__.py +1 -0
  43. additory/functions/synthetic/strategies/advanced.py +35 -0
  44. additory/functions/synthetic/strategies/augmentative.py +160 -0
  45. additory/functions/synthetic/strategies/generative.py +168 -0
  46. additory/functions/synthetic/strategies/presets.py +116 -0
  47. additory/functions/to/__init__.py +188 -0
  48. additory/functions/to/lookup.py +351 -0
  49. additory/functions/to/merge.py +189 -0
  50. additory/functions/to/sort.py +91 -0
  51. additory/functions/to/summarize.py +170 -0
  52. additory/functions/transform/__init__.py +140 -0
  53. additory/functions/transform/datetime.py +79 -0
  54. additory/functions/transform/extract.py +85 -0
  55. additory/functions/transform/harmonize.py +105 -0
  56. additory/functions/transform/knn.py +62 -0
  57. additory/functions/transform/onehotencoding.py +68 -0
  58. additory/functions/transform/transpose.py +42 -0
  59. additory-0.1.1a1.dist-info/METADATA +83 -0
  60. additory-0.1.1a1.dist-info/RECORD +62 -0
  61. additory/analysis/__init__.py +0 -48
  62. additory/analysis/cardinality.py +0 -126
  63. additory/analysis/correlations.py +0 -124
  64. additory/analysis/distributions.py +0 -376
  65. additory/analysis/quality.py +0 -158
  66. additory/analysis/scan.py +0 -400
  67. additory/common/backend.py +0 -371
  68. additory/common/column_utils.py +0 -191
  69. additory/common/exceptions.py +0 -62
  70. additory/common/lists.py +0 -229
  71. additory/common/patterns.py +0 -240
  72. additory/common/resolver.py +0 -567
  73. additory/common/sample_data.py +0 -182
  74. additory/core/ast_builder.py +0 -165
  75. additory/core/backends/__init__.py +0 -23
  76. additory/core/backends/arrow_bridge.py +0 -483
  77. additory/core/backends/cudf_bridge.py +0 -355
  78. additory/core/column_positioning.py +0 -358
  79. additory/core/compiler_polars.py +0 -166
  80. additory/core/enhanced_cache_manager.py +0 -1119
  81. additory/core/enhanced_matchers.py +0 -473
  82. additory/core/enhanced_version_manager.py +0 -325
  83. additory/core/executor.py +0 -59
  84. additory/core/integrity_manager.py +0 -477
  85. additory/core/loader.py +0 -190
  86. additory/core/namespace_manager.py +0 -657
  87. additory/core/parser.py +0 -176
  88. additory/core/polars_expression_engine.py +0 -601
  89. additory/core/registry.py +0 -177
  90. additory/core/sample_data_manager.py +0 -492
  91. additory/core/user_namespace.py +0 -751
  92. additory/core/validator.py +0 -27
  93. additory/dynamic_api.py +0 -352
  94. additory/expressions/proxy.py +0 -549
  95. additory/expressions/registry.py +0 -313
  96. additory/expressions/samples.py +0 -492
  97. additory/synthetic/__init__.py +0 -13
  98. additory/synthetic/column_name_resolver.py +0 -149
  99. additory/synthetic/deduce.py +0 -259
  100. additory/synthetic/distributions.py +0 -22
  101. additory/synthetic/forecast.py +0 -1132
  102. additory/synthetic/linked_list_parser.py +0 -415
  103. additory/synthetic/namespace_lookup.py +0 -129
  104. additory/synthetic/smote.py +0 -320
  105. additory/synthetic/strategies.py +0 -926
  106. additory/synthetic/synthesizer.py +0 -713
  107. additory/utilities/__init__.py +0 -53
  108. additory/utilities/encoding.py +0 -600
  109. additory/utilities/games.py +0 -300
  110. additory/utilities/keys.py +0 -8
  111. additory/utilities/lookup.py +0 -103
  112. additory/utilities/matchers.py +0 -216
  113. additory/utilities/resolvers.py +0 -286
  114. additory/utilities/settings.py +0 -167
  115. additory/utilities/units.py +0 -749
  116. additory/utilities/validators.py +0 -153
  117. additory-0.1.0a4.dist-info/METADATA +0 -311
  118. additory-0.1.0a4.dist-info/RECORD +0 -72
  119. additory-0.1.0a4.dist-info/licenses/LICENSE +0 -21
  120. {additory-0.1.0a4.dist-info → additory-0.1.1a1.dist-info}/WHEEL +0 -0
  121. {additory-0.1.0a4.dist-info → additory-0.1.1a1.dist-info}/top_level.txt +0 -0
@@ -1,153 +0,0 @@
1
- # additory/utilities/validators.py
2
- # Input validation utilities - now uses common module
3
-
4
- """
5
- Validation Utilities Module
6
-
7
- This module provides validation functions for utilities.
8
- Core validation is now in additory.common for consistency.
9
-
10
- This module adds utility-specific validations on top of common validations.
11
- """
12
-
13
- import pandas as pd
14
- from typing import Any, List, Union, Optional
15
-
16
- # Import from common module for consistency
17
- from additory.common import (
18
- validate_dataframe,
19
- validate_columns_exist,
20
- validate_positive_number,
21
- validate_non_negative_number,
22
- validate_parameter_choice,
23
- is_dataframe,
24
- ValidationError
25
- )
26
-
27
- # Re-export common validations for backward compatibility
28
- __all__ = [
29
- 'validate_dataframe',
30
- 'validate_columns_exist',
31
- 'validate_positive_number',
32
- 'validate_non_negative_number',
33
- 'validate_parameter_choice',
34
- 'is_dataframe',
35
- 'validate_numeric_column',
36
- 'validate_string_column',
37
- 'validate_file_path',
38
- 'validate_directory_path',
39
- 'validate_column_name'
40
- ]
41
-
42
-
43
- def validate_numeric_column(df: Any, column: str) -> None:
44
- """
45
- Validate that column contains numeric data
46
-
47
- Args:
48
- df: Dataframe to check
49
- column: Column name to validate
50
-
51
- Raises:
52
- ValidationError: If column is not numeric
53
- """
54
- # Check if column exists first
55
- validate_columns_exist(df, column)
56
-
57
- # For pandas, check dtype
58
- if hasattr(df, 'dtypes'):
59
- dtype = df[column].dtype
60
- if not pd.api.types.is_numeric_dtype(dtype):
61
- raise ValidationError(f"Column '{column}' must be numeric, got {dtype}")
62
-
63
- # For other backends, try to detect non-numeric values
64
- # This is a basic check - more sophisticated validation could be added
65
-
66
-
67
- def validate_string_column(df: Any, column: str) -> None:
68
- """
69
- Validate that column contains string/text data
70
-
71
- Args:
72
- df: Dataframe to check
73
- column: Column name to validate
74
-
75
- Raises:
76
- ValidationError: If column is not string-like
77
- """
78
- # Check if column exists first
79
- validate_columns_exist(df, column)
80
-
81
- # For pandas, check dtype
82
- if hasattr(df, 'dtypes'):
83
- dtype = df[column].dtype
84
- if not (dtype == 'object' or pd.api.types.is_string_dtype(dtype)):
85
- raise ValidationError(f"Column '{column}' must be string/text, got {dtype}")
86
-
87
-
88
-
89
-
90
- def validate_file_path(path: str, must_exist: bool = True) -> None:
91
- """
92
- Validate file path
93
-
94
- Args:
95
- path: File path to validate
96
- must_exist: Whether file must exist
97
-
98
- Raises:
99
- ValidationError: If path is invalid
100
- """
101
- import os
102
-
103
- if not isinstance(path, str):
104
- raise ValidationError(f"Path must be a string, got {type(path)}")
105
-
106
- if must_exist and not os.path.exists(path):
107
- raise ValidationError(f"Path does not exist: {path}")
108
-
109
- if must_exist and not os.path.isfile(path):
110
- raise ValidationError(f"Path is not a file: {path}")
111
-
112
-
113
- def validate_directory_path(path: str, must_exist: bool = True) -> None:
114
- """
115
- Validate directory path
116
-
117
- Args:
118
- path: Directory path to validate
119
- must_exist: Whether directory must exist
120
-
121
- Raises:
122
- ValidationError: If path is invalid
123
- """
124
- import os
125
-
126
- if not isinstance(path, str):
127
- raise ValidationError(f"Path must be a string, got {type(path)}")
128
-
129
- if must_exist and not os.path.exists(path):
130
- raise ValidationError(f"Directory does not exist: {path}")
131
-
132
- if must_exist and not os.path.isdir(path):
133
- raise ValidationError(f"Path is not a directory: {path}")
134
-
135
-
136
- def validate_column_name(name: str) -> None:
137
- """
138
- Validate column name format
139
-
140
- Args:
141
- name: Column name to validate
142
-
143
- Raises:
144
- ValidationError: If name is invalid
145
- """
146
- if not isinstance(name, str):
147
- raise ValidationError(f"Column name must be a string, got {type(name)}")
148
-
149
- if not name.strip():
150
- raise ValidationError("Column name cannot be empty")
151
-
152
- # Additional validation could be added here
153
- # e.g., check for special characters, reserved words, etc.
@@ -1,311 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: additory
3
- Version: 0.1.0a4
4
- Summary: A semantic, extensible dataframe transformation engine with expressions, lookup, and synthetic data generation support.
5
- Author: Krishnamoorthy Sankaran
6
- License: MIT
7
- Project-URL: homepage, https://github.com/sekarkrishna/additory
8
- Project-URL: documentation, https://github.com/sekarkrishna/additory/tree/main/documentation/V0.1.0
9
- Project-URL: source, https://github.com/sekarkrishna/additory
10
- Project-URL: issues, https://github.com/sekarkrishna/additory/issues
11
- Requires-Python: >=3.9
12
- Description-Content-Type: text/markdown
13
- License-File: LICENSE
14
- Requires-Dist: pandas>=1.5
15
- Requires-Dist: polars>=0.20
16
- Requires-Dist: pyarrow>=10.0
17
- Requires-Dist: pyyaml>=6.0
18
- Requires-Dist: requests>=2.31
19
- Requires-Dist: toml>=0.10
20
- Requires-Dist: scipy>=1.9
21
- Requires-Dist: numpy>=1.21
22
- Requires-Dist: packaging>=21.0
23
- Requires-Dist: psutil>=5.8
24
- Provides-Extra: gpu
25
- Requires-Dist: cudf>=24.0; extra == "gpu"
26
- Provides-Extra: dev
27
- Requires-Dist: pytest>=7.0; extra == "dev"
28
- Requires-Dist: pytest-cov>=4.0; extra == "dev"
29
- Requires-Dist: pytest-xdist>=3.0; extra == "dev"
30
- Requires-Dist: hypothesis>=6.0; extra == "dev"
31
- Requires-Dist: black>=23.0; extra == "dev"
32
- Requires-Dist: ruff>=0.1.0; extra == "dev"
33
- Requires-Dist: coverage>=7.0; extra == "dev"
34
- Dynamic: license-file
35
-
36
- # Additory
37
-
38
- **A semantic, extensible dataframe transformation engine with expressions, lookup, and augmentation support.**
39
-
40
- [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
41
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
42
- [![Version](https://img.shields.io/badge/version-0.1.0a4-orange.svg)](https://github.com/sekarkrishna/additory)
43
-
44
- **Author:** Krishnamoorthy Sankaran
45
-
46
- ## 🛠️ Requirements
47
-
48
- - **Python**: 3.9+
49
- - **Core dependencies**: pandas, polars, numpy, scipy
50
- - **Optional**: cuDF (for GPU support)
51
-
52
- ## 📦 Installation
53
-
54
- ```bash
55
- pip install additory==0.1.0a4
56
- ```
57
-
58
- **Optional GPU support:**
59
- ```bash
60
- pip install additory[gpu]==0.1.0a4 # Includes cuDF for GPU acceleration
61
- ```
62
-
63
- **Development installation:**
64
- ```bash
65
- pip install additory[dev]==0.1.0a4 # Includes testing and development tools
66
- ```
67
-
68
- ## 🎯 Core Functions
69
-
70
- | Function | Purpose | Example |
71
- |----------|---------|---------|
72
- | `add.to()` | Lookup/join operations | `add.to(df1, from_df=df2, bring='col', against='key')` |
73
- | `add.synthetic()` | Generate additional data | `add.synthetic(df, n_rows=1000)` |
74
- | `add.deduce()` | Text-based label deduction | `add.deduce(df, from_column='text', to_column='label')` |
75
- | `add.scan()` | Data profiling & analysis | `add.scan(df, preset="full")` |
76
-
77
- ## 🧬 Available Expressions
78
-
79
- Additory includes 12 built-in health and fitness expressions:
80
-
81
- - **`add.bmi()`** - Body Mass Index
82
- - **`add.bsa()`** - Body Surface Area
83
- - **`add.bmr()`** - Basal Metabolic Rate
84
- - **`add.waist_hip_ratio()`** - Waist-to-Hip Ratio
85
- - **`add.body_fat_percentage()`** - Body Fat Percentage
86
- - **`add.ideal_body_weight()`** - Ideal Body Weight
87
- - **`add.blood_pressure_category()`** - BP Classification
88
- - **`add.cholesterol_ratio()`** - Cholesterol Ratio
89
- - **`add.age_category()`** - Age Classification
90
- - **`add.fitness_score()`** - Overall Fitness Score
91
-
92
- ```python
93
- # Health calculations
94
- patients = pd.DataFrame({
95
- 'weight_kg': [70, 80, 65], # Weight in kilograms
96
- 'height_m': [1.75, 1.80, 1.60], # Height in meters
97
- 'age': [25, 35, 45],
98
- 'gender': ['M', 'F', 'M']
99
- })
100
-
101
- patients_bmi = add.bmi(patients)
102
- patients_bsa = add.bsa(patients)
103
- fitness_scores = add.fitness_score(patients)
104
-
105
- # Chain multiple expressions
106
- result = add.fitness_score(add.bmr(add.bmi(patients)))
107
- ```
108
-
109
- ## 🔧 DataFrame Support
110
-
111
- Additory works seamlessly with multiple DataFrame libraries:
112
-
113
- - **pandas** - Full support
114
- - **polars** - Full support
115
- - **cuDF** - GPU acceleration support
116
-
117
- ```python
118
- import polars as pl
119
- import additory as add
120
-
121
- # Works with polars
122
- df_polars = pl.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
123
- result = add.synthetic(df_polars, n_rows=100)
124
-
125
- # Automatic type detection and conversion
126
- ```
127
-
128
- ## ✨ Key Features
129
-
130
- ### 🔧 Utilities
131
-
132
- **add.to() - Data Lookup & Joins**
133
- Simplified syntax for bringing columns from one dataframe to another.
134
-
135
- ```python
136
- # Simple lookup
137
- orders_with_prices = add.to(
138
- orders,
139
- from_df=products,
140
- bring='price',
141
- against='product_id'
142
- )
143
-
144
- # Multiple columns and keys
145
- enriched = add.to(
146
- orders,
147
- from_df=products,
148
- bring=['price', 'category'],
149
- against=['product_id', 'region']
150
- )
151
- ```
152
-
153
- **add.onehotencoding() - Categorical Encoding**
154
- Convert categorical columns to one-hot encoded format.
155
-
156
- ```python
157
- # One-hot encoding (single column)
158
- encoded = add.onehotencoding(df, 'category')
159
- ```
160
-
161
- **add.harmonize_units() - Unit Standardization**
162
- Standardize units across your dataset.
163
-
164
- ```python
165
- # Unit harmonization
166
- standardized = add.harmonize_units(
167
- df,
168
- value_column='temperature',
169
- unit_column='unit',
170
- target_unit='C'
171
- )
172
- ```
173
-
174
- ### 🧮 Expressions
175
-
176
- Pre-built calculations for health, fitness, and common metrics. Simple examples:
177
-
178
- ```python
179
- # Create patient data with correct column names
180
- patients = pd.DataFrame({
181
- 'weight_kg': [70, 80, 65], # Weight in kilograms
182
- 'height_m': [1.75, 1.80, 1.60], # Height in meters
183
- 'age': [25, 35, 45],
184
- 'gender': ['M', 'F', 'M']
185
- })
186
-
187
- # Calculate BMI
188
- patients_with_bmi = add.bmi(patients)
189
-
190
- # Calculate Body Surface Area
191
- patients_with_bsa = add.bsa(patients)
192
-
193
- # Chain multiple expressions
194
- result = add.fitness_score(add.bmr(add.bmi(patients)))
195
- ```
196
-
197
- ### 🔄 Synthetic Data Generation
198
-
199
- **Synthetic** generates additional data similar to your existing dataset using inline strategies.
200
-
201
- ```python
202
- # Extend existing data (learns from patterns)
203
- more_customers = add.synthetic(customers, n_rows=1000)
204
-
205
- # Create data from scratch with strategies
206
- new_data = add.synthetic("@new", n_rows=500, strategy={
207
- 'id': 'increment:start=1',
208
- 'name': 'choice:[John,Jane,Bob]',
209
- 'age': 'range:18-65'
210
- })
211
- ```
212
-
213
- ### 🤖 Text-Based Label Deduction
214
-
215
- **Deduce** automatically fills in missing labels by learning from your existing labeled examples. Pure Python, no LLMs, offline-first.
216
-
217
- ```python
218
- # Deduce missing labels from text
219
- tickets = pd.DataFrame({
220
- "ticket_text": ["Cannot log in", "Billing question", "App crashes", "Need invoice"],
221
- "category": ["Technical", "Billing", None, None]
222
- })
223
-
224
- # Automatically fill in missing categories
225
- result = add.deduce(tickets, from_column="ticket_text", to_column="category")
226
-
227
- # Use multiple columns for better accuracy
228
- result = add.deduce(
229
- df,
230
- from_column=["title", "description"],
231
- to_column="category"
232
- )
233
- ```
234
-
235
- ## 🧪 Examples
236
-
237
- ### E-commerce Data Pipeline
238
- ```python
239
- import pandas as pd
240
- import additory as add
241
-
242
- # Start with small customer sample
243
- customers = pd.DataFrame({
244
- 'customer_id': [1, 2, 3],
245
- 'age': [25, 35, 45],
246
- 'region': ['North', 'South', 'East']
247
- })
248
-
249
- # Generate more customers
250
- customers = add.synthetic(customers, n_rows=10000)
251
-
252
- # Add customer tiers
253
- tiers = pd.DataFrame({
254
- 'customer_id': range(1, 4), # Match original IDs
255
- 'tier': ['Gold', 'Silver', 'Bronze']
256
- })
257
-
258
- # Use pipeline approach
259
- result = (customers
260
- .pipe(add.to, from_df=tiers, bring='tier', against='customer_id')
261
- .pipe(add.scan, preset="quick"))
262
-
263
- print(result.summary())
264
- ```
265
-
266
- ### Healthcare Data Analysis
267
- ```python
268
- # Create patient data from scratch
269
- strategy = {
270
- 'patient_id': 'increment:start=1',
271
- 'age': 'range:18-80',
272
- 'weight_kg': 'range:50-120', # Weight in kg
273
- 'height_cm': 'range:150-200' # Height in cm
274
- }
275
-
276
- patients = add.synthetic("@new", n_rows=1000, strategy=strategy)
277
-
278
- # Convert height to meters for expressions
279
- patients['height_m'] = patients['height_cm'] / 100
280
-
281
- # Calculate health metrics using pipeline
282
- result = (patients
283
- .pipe(add.bmi)
284
- .pipe(add.scan, preset="correlations"))
285
-
286
- print(result.correlations)
287
- ```
288
-
289
- ## 📚 Documentation
290
-
291
- - **[Function Documentation](https://github.com/sekarkrishna/additory/tree/main/documentation/)** - Detailed guides for each function
292
- - **[Expressions Guide](https://github.com/sekarkrishna/additory/tree/main/documentation/)** - Complete expressions reference
293
-
294
- ## 📄 License
295
-
296
- MIT License - see [LICENSE](LICENSE) file for details.
297
-
298
- ## 📞 Support
299
-
300
- - **Issues**: [GitHub Issues](https://github.com/sekarkrishna/additory/issues)
301
- - **Documentation**: [Full Documentation](https://github.com/sekarkrishna/additory/tree/main/documentation/)
302
-
303
- ## 🗺️ v0.1.1 (January 2026)
304
- - Enhanced documentation and tutorials
305
- - Performance optimizations
306
- - Additional expressions
307
- - Advanced synthetic data patterns
308
-
309
- ---
310
-
311
- **Made with ❤️ for data scientists, analysts, and developers who love working with data.**
@@ -1,72 +0,0 @@
1
- additory/__init__.py,sha256=6LWidwOfdQInwiTCaS9OlJG97WDnXCEMncZF9f9Uheo,397
2
- additory/dynamic_api.py,sha256=XcmXMS-k2u5RoH5uM6BoQfTLGgF4UcZvXs9f9-BlOM4,13814
3
- additory/analysis/__init__.py,sha256=F_yhD_hcIWbwO1wrRe8Js1RI-vkozaKyWNIIEb-jSMk,986
4
- additory/analysis/cardinality.py,sha256=y4ttjk3VFNm3mEfNZaTegVQxH7btnmXgnDUSkctNuTo,2976
5
- additory/analysis/correlations.py,sha256=n0vIPW9lTTSPsPlr40YOIohTX3mUgGmSLdlBrkJZa1c,3909
6
- additory/analysis/distributions.py,sha256=nkYme_gkzdJ1FWlLJIV31CvoDc3GOOu8KlmeJ2jgkds,10777
7
- additory/analysis/quality.py,sha256=chow5ZcPaV7czKrycP-35pmBZJYCpLsy20rQ5U4qgCw,4221
8
- additory/analysis/scan.py,sha256=a6rP1VnwMEhapwIwynzYyX2IqfPcWMOJ4Ff2wRDzh40,14200
9
- additory/common/__init__.py,sha256=yxwq52uABz5dpC2N7F2wPyvxcsczAxdWNkAKvjwRgys,3551
10
- additory/common/backend.py,sha256=_VK2RGA4Ee_pUvuubBfdNYK3YU0zrEcYqNk-YkiIG4Y,10571
11
- additory/common/column_utils.py,sha256=w2zqmiogavgzD2K9-yeH4GLg0f6xLQkID-9QP_8JLxk,5333
12
- additory/common/distributions.py,sha256=5GZ-1V-E5-T0i1wXuD8v2N3lVbnZAjF18exLG_PE_Qk,21974
13
- additory/common/exceptions.py,sha256=S6l0Au0_y2HybPnB2c3SUl9M--HgqLLpj6TJasN5mlc,1207
14
- additory/common/lists.py,sha256=ItbUpm4YFTqBR5RfryeoIiyQdiRVvKHOnu9ZFshPjcw,6443
15
- additory/common/patterns.py,sha256=_Z6AVItn72nNYMJX-r93Z7SSZmVngQ7pzqbvhKgmBUQ,6892
16
- additory/common/resolver.py,sha256=9sfuWbHlvYvJlRx18W6BZU-3sgdo7qNRXB0WuzeZjUc,20574
17
- additory/common/sample_data.py,sha256=Zqjz4Ed-nUptOBw48A0L4BKwo3HEBN9hCnwpnQnM_1w,5838
18
- additory/common/validation.py,sha256=P3OQa6ae1NST_UcEW_MgWzSUKUPQpTwoZ5h4OnPGu5E,5930
19
- additory/core/__init__.py,sha256=dhEBneupBndNBlsQI8niFZgQjUJDLORzRcFtvXGXg-E,630
20
- additory/core/ast_builder.py,sha256=cW65w-utVGjUJos1ffmfEPgPbxVwN6WU-vcDKrBPy8o,5303
21
- additory/core/column_positioning.py,sha256=1frwieAvdHXvlZzlUhL1BXP1P_iOZ7yzCNDlvw4L9kI,13241
22
- additory/core/compiler_polars.py,sha256=wN_785yk7N3tYGPCP2IsOpCeWxqJNOMq35TX-xoSCS8,5161
23
- additory/core/config.py,sha256=3qqM_JIahzf4ZscjU0OzlAAYQ7kEdfjG7ztKk8993nQ,9587
24
- additory/core/enhanced_cache_manager.py,sha256=7hpoMucAWkP_-sUzst_JigPKK04S6TsYLpI_m-s9FrY,47230
25
- additory/core/enhanced_matchers.py,sha256=lZO-PPfiAiriX4SjTenaulWqijogq9NnhUATHfwMqak,20353
26
- additory/core/enhanced_version_manager.py,sha256=wIk5pg0Pn5KahgsGMYtmHxxxX3sltnwHqJ_QT7mosNw,12957
27
- additory/core/executor.py,sha256=rgFqJ6ZPmW4IhcitebRWkXDyKIO3UZZ_5ZQZWCzsK40,1977
28
- additory/core/integrity_manager.py,sha256=nRUOjGFcQuIccNxSWzKES5mVYo8izp7By6vsgq70Ziw,17338
29
- additory/core/loader.py,sha256=kWIfSFpk7FkcQ3Is0YqwEkP6LdyyDDTneKWEKMcvZUY,5903
30
- additory/core/logging.py,sha256=5wv_J4I0eaedqcXwrkD7T5zqOfNMCXCrMCOZY__PeCw,695
31
- additory/core/memory_manager.py,sha256=b1H1juAg2CXioSI4N65XldPdKxHTXRI3MSTSAtKV3S0,20178
32
- additory/core/namespace_manager.py,sha256=RWbMZBcoXvpdcz5km2CJlXcrDwWE4DES-lGET4r98Pk,23325
33
- additory/core/parser.py,sha256=yVh87CiE4fmrg4jFisNMKTHlz4OpAMNVFF4thq6I0JE,4748
34
- additory/core/polars_expression_engine.py,sha256=O4s-ZtHgP2SQd_LsdGgCPVOACJgJsL7W48wj6CbutFw,23158
35
- additory/core/registry.py,sha256=bhm__bPuLvGvjbEUm8xbb0lUXQ1ZMd1Pcn2oUsIg4Rc,5658
36
- additory/core/sample_data_manager.py,sha256=urBT2T5NZZM0KXriuW5xfCwC1SA3WHwraVMtz5qyw7Y,19800
37
- additory/core/user_namespace.py,sha256=qgPhuHuhiePa9Qr2CtBCuflpUfxD8wTakWFcp5Ve2xU,22522
38
- additory/core/validator.py,sha256=em71_1TAdk44B2yyNwzmxkh4pMpqAq1JN_oHoDH7fCk,588
39
- additory/core/backends/__init__.py,sha256=Qp70UI5UEGBjr8TDcD3ZQKjtL91JPUEv6wXWLNqk6XI,587
40
- additory/core/backends/arrow_bridge.py,sha256=2BCWkoCxmI5jr9ZgmJTB-hpWaMj2B9S6BTtvFuLrm_o,16876
41
- additory/core/backends/cudf_bridge.py,sha256=TWthiZIZFUPdrXRjml6y63SOLkqgVL7dZ0eqaidx2LY,12821
42
- additory/expressions/__init__.py,sha256=FYZjHA7zJie1HRAQjMo6MdQxwYW2owrHulKXjfBFg4A,781
43
- additory/expressions/engine.py,sha256=yOzZDNKjltP-HLVKBL4BXke63ALqgRFXgHK4YeeXLQ8,21138
44
- additory/expressions/parser.py,sha256=yVh87CiE4fmrg4jFisNMKTHlz4OpAMNVFF4thq6I0JE,4748
45
- additory/expressions/proxy.py,sha256=kohaZTtU5f_r3O_WidnNKXzN3IAmAnt6M0L5F3mpb7I,22044
46
- additory/expressions/registry.py,sha256=DPkjg8YfQxjz0Tf6nif_e_8uTNAMfHd7LmUNL2GqZ-4,11024
47
- additory/expressions/samples.py,sha256=urBT2T5NZZM0KXriuW5xfCwC1SA3WHwraVMtz5qyw7Y,19800
48
- additory/synthetic/__init__.py,sha256=Zw0GqXXh5v6_1S6SxPcEYL7CzNmaRuVk1aC3qBOQ2RE,342
49
- additory/synthetic/column_name_resolver.py,sha256=-kh6bxitaSUwk28TZ5yPzbLUe6nxU7oYsazKEwumtRA,4913
50
- additory/synthetic/deduce.py,sha256=CjEw-mCHGO1GjQtb0i-YX8QlmHiJORwMqjnfp8Oxm68,7736
51
- additory/synthetic/distributions.py,sha256=jrwDGVy_Vcm5XXoGKy-V0LrpnxdGM5p84GklKq-0b_A,705
52
- additory/synthetic/forecast.py,sha256=F2XoKEDFDJ47W6bSzy2jXYWU3PN5X0l16YvtfxXc4GU,34820
53
- additory/synthetic/linked_list_parser.py,sha256=YysP1ODyABJzUe82QLEfbuxGknTCyWb81tf8Pueg-oE,13002
54
- additory/synthetic/namespace_lookup.py,sha256=4ILe1MWubGvRsF_xbQLybBbr3hG0iMTseypigB_66TI,4096
55
- additory/synthetic/smote.py,sha256=ub8pTA5Ez3WjXP15GtyUqCRztiPr7XfHbNGTucUFErA,9092
56
- additory/synthetic/strategies.py,sha256=2Cn6wy-tRTj9CuBkhYizB6oQGev4EzxrprbQlKyxce8,28620
57
- additory/synthetic/synthesizer.py,sha256=9YHXyA9wfUyMZLse7nBMJ1hQ0F9SJmF4j01y4Oyebzg,26405
58
- additory/utilities/__init__.py,sha256=I28c5ZqqZ2VsMIG40fUBJhnc930cFXHJX22xQWARXq8,1679
59
- additory/utilities/encoding.py,sha256=DhTaTeUlJOSixQ3-hgUwSy1jMJAYadV2bQHuONVzzEY,20995
60
- additory/utilities/games.py,sha256=nEPGUup0RHgzVKdgg8sRMraDxACaIVDFmMuBBjGDrVI,8364
61
- additory/utilities/keys.py,sha256=CAbMN8VowLHwjWAMvRHTvqwJ44TxulKrYvK9UBzAwEw,197
62
- additory/utilities/lookup.py,sha256=itE_ntAFHae92tQS43P165-87PHF5hTaH1Qy7ENoYak,3045
63
- additory/utilities/matchers.py,sha256=x8Nve49_TzJ7jneueiXvnzMgI3ov3o0dlU_h4xFr8Qw,6120
64
- additory/utilities/resolvers.py,sha256=ykMfce2f9in9wqHgmljCFIil8xGcalT0FBwFIwHOlnk,7127
65
- additory/utilities/settings.py,sha256=5XB2S3L7Ht486LZMDacYTuyB_ta7sVohUFEKzMo1nDU,4698
66
- additory/utilities/units.py,sha256=75VFSLCVhX3dcFokh-jbZepDRaFRuO2QpGZNQbG8fag,30526
67
- additory/utilities/validators.py,sha256=K1ZYsPL3W7XkIUECVWov4HZxTlzqs9Rbc61Vidh2F8o,4213
68
- additory-0.1.0a4.dist-info/licenses/LICENSE,sha256=ztobegtjJRyvQntGjQ1w80MGuTOeMmWkh5Be-pFyq3I,1079
69
- additory-0.1.0a4.dist-info/METADATA,sha256=uYviUo6_AjdbVtV91hFZL7fyEwh4Pd_HsDqjgzxqDts,8729
70
- additory-0.1.0a4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
71
- additory-0.1.0a4.dist-info/top_level.txt,sha256=4zphwXiI6HEl40fdjMXoUp9JNIqQ-tgYWeo3zqKqvEk,9
72
- additory-0.1.0a4.dist-info/RECORD,,
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Krishnamoorthy Sankaran
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.