rdt 1.11.1.dev0__tar.gz → 1.12.0.dev0__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.
- {rdt-1.11.1.dev0/rdt.egg-info → rdt-1.12.0.dev0}/PKG-INFO +3 -3
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/pyproject.toml +3 -3
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/__init__.py +2 -2
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/categorical.py +8 -5
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/null.py +1 -1
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/text.py +14 -1
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/utils.py +1 -1
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0/rdt.egg-info}/PKG-INFO +3 -3
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/requires.txt +2 -2
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/LICENSE +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/README.md +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/errors.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/hyper_transformer.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/__init__.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/__init__.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/base.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/boolean.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/categorical.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/datetime.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/numerical.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/pii.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/text.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/utils.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/performance.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/profiling.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/__init__.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/_validators.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/base.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/boolean.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/datetime.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/numerical.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/__init__.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/anonymization.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/anonymizer.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/utils.py +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/SOURCES.txt +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/dependency_links.txt +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/entry_points.txt +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/top_level.txt +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/setup.cfg +0 -0
- {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/tests/test_tasks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rdt
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.12.0.dev0
|
|
4
4
|
Summary: Reversible Data Transforms
|
|
5
5
|
Author-email: "DataCebo, Inc." <info@sdv.dev>
|
|
6
6
|
License: BSL-1.1
|
|
@@ -71,12 +71,12 @@ Requires-Dist: flake8-multiline-containers<0.1,>=0.0.18; extra == "dev"
|
|
|
71
71
|
Requires-Dist: flake8-mutable<1.3,>=1.2.0; extra == "dev"
|
|
72
72
|
Requires-Dist: flake8-expression-complexity<0.1,>=0.0.9; extra == "dev"
|
|
73
73
|
Requires-Dist: flake8-print<4.1,>=4.0.0; extra == "dev"
|
|
74
|
-
Requires-Dist: flake8-pytest-style<3,>=
|
|
74
|
+
Requires-Dist: flake8-pytest-style<3,>=2.0.0; extra == "dev"
|
|
75
75
|
Requires-Dist: flake8-quotes<4,>=3.3.0; extra == "dev"
|
|
76
76
|
Requires-Dist: flake8-sfs<2,>=0.0.3; extra == "dev"
|
|
77
77
|
Requires-Dist: flake8-variables-names<0.1,>=0.0.4; extra == "dev"
|
|
78
78
|
Requires-Dist: dlint<1,>=0.11.0; extra == "dev"
|
|
79
|
-
Requires-Dist: isort<6,>=
|
|
79
|
+
Requires-Dist: isort<6,>=5.13.2; extra == "dev"
|
|
80
80
|
Requires-Dist: pandas-vet<2024,>=0.2.3; extra == "dev"
|
|
81
81
|
Requires-Dist: pep8-naming<1,>=0.12.1; extra == "dev"
|
|
82
82
|
Requires-Dist: pydocstyle<7,>=6.1.1; extra == "dev"
|
|
@@ -86,12 +86,12 @@ dev = [
|
|
|
86
86
|
'flake8-mutable>=1.2.0,<1.3',
|
|
87
87
|
'flake8-expression-complexity>=0.0.9,<0.1',
|
|
88
88
|
'flake8-print>=4.0.0,<4.1',
|
|
89
|
-
'flake8-pytest-style>=
|
|
89
|
+
'flake8-pytest-style>=2.0.0,<3',
|
|
90
90
|
'flake8-quotes>=3.3.0,<4',
|
|
91
91
|
'flake8-sfs>=0.0.3,<2',
|
|
92
92
|
'flake8-variables-names>=0.0.4,<0.1',
|
|
93
93
|
'dlint>=0.11.0,<1',
|
|
94
|
-
'isort>=
|
|
94
|
+
'isort>=5.13.2,<6',
|
|
95
95
|
'pandas-vet>=0.2.3,<2024',
|
|
96
96
|
'pep8-naming>=0.12.1,<1',
|
|
97
97
|
'pydocstyle>=6.1.1,<7',
|
|
@@ -166,7 +166,7 @@ collect_ignore = ['pyproject.toml']
|
|
|
166
166
|
exclude_lines = ['NotImplementedError()']
|
|
167
167
|
|
|
168
168
|
[tool.bumpversion]
|
|
169
|
-
current_version = "1.
|
|
169
|
+
current_version = "1.12.0.dev0"
|
|
170
170
|
parse = '(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<candidate>\d+))?'
|
|
171
171
|
serialize = [
|
|
172
172
|
'{major}.{minor}.{patch}.{release}{candidate}',
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
__author__ = 'DataCebo, Inc.'
|
|
7
7
|
__email__ = 'info@sdv.dev'
|
|
8
|
-
__version__ = '1.
|
|
8
|
+
__version__ = '1.12.0.dev0'
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
import sys
|
|
@@ -159,7 +159,7 @@ def _find_addons():
|
|
|
159
159
|
try:
|
|
160
160
|
addon = entry_point.load()
|
|
161
161
|
except Exception: # pylint: disable=broad-exception-caught
|
|
162
|
-
msg = f'Failed to load "{entry_point.name}" from "{entry_point.
|
|
162
|
+
msg = f'Failed to load "{entry_point.name}" from "{entry_point.version}".'
|
|
163
163
|
warnings.warn(msg)
|
|
164
164
|
continue
|
|
165
165
|
|
|
@@ -351,7 +351,7 @@ class FrequencyEncoder(BaseTransformer):
|
|
|
351
351
|
dict:
|
|
352
352
|
intervals for each categorical value (start, end).
|
|
353
353
|
"""
|
|
354
|
-
data = data.fillna(np.nan)
|
|
354
|
+
data = data.infer_objects().fillna(np.nan)
|
|
355
355
|
frequencies = data.value_counts(dropna=False)
|
|
356
356
|
augmented_frequencies = frequencies.to_frame()
|
|
357
357
|
sortable_column_name = f'sortable_{frequencies.name}'
|
|
@@ -460,7 +460,9 @@ class FrequencyEncoder(BaseTransformer):
|
|
|
460
460
|
|
|
461
461
|
def _transform_by_row(self, data):
|
|
462
462
|
"""Transform the data row by row."""
|
|
463
|
-
|
|
463
|
+
data = data.infer_objects().fillna(np.nan).apply(self._get_value).to_numpy()
|
|
464
|
+
|
|
465
|
+
return data
|
|
464
466
|
|
|
465
467
|
def _transform(self, data):
|
|
466
468
|
"""Transform the categorical values to float representatives.
|
|
@@ -756,7 +758,7 @@ class LabelEncoder(BaseTransformer):
|
|
|
756
758
|
Data to fit the transformer to.
|
|
757
759
|
"""
|
|
758
760
|
self.dtype = data.dtype
|
|
759
|
-
unique_data = pd.unique(data.fillna(np.nan))
|
|
761
|
+
unique_data = pd.unique(data.infer_objects().fillna(np.nan))
|
|
760
762
|
unique_data = self._order_categories(unique_data)
|
|
761
763
|
self.values_to_categories = dict(enumerate(unique_data))
|
|
762
764
|
self.categories_to_values = {
|
|
@@ -779,7 +781,7 @@ class LabelEncoder(BaseTransformer):
|
|
|
779
781
|
Returns:
|
|
780
782
|
pd.Series
|
|
781
783
|
"""
|
|
782
|
-
mapped = data.fillna(np.nan).map(self.categories_to_values)
|
|
784
|
+
mapped = data.infer_objects().fillna(np.nan).map(self.categories_to_values)
|
|
783
785
|
is_null = mapped.isna()
|
|
784
786
|
if is_null.any():
|
|
785
787
|
# Select only the first 5 unseen categories to avoid flooding the console.
|
|
@@ -879,7 +881,8 @@ class OrderedLabelEncoder(LabelEncoder):
|
|
|
879
881
|
Data to fit the transformer to.
|
|
880
882
|
"""
|
|
881
883
|
self.dtype = data.dtype
|
|
882
|
-
data = data.fillna(np.nan)
|
|
884
|
+
data = data.infer_objects().fillna(np.nan)
|
|
885
|
+
|
|
883
886
|
missing = list(data[~data.isin(self.order)].unique())
|
|
884
887
|
if len(missing) > 0:
|
|
885
888
|
raise TransformerInputError(
|
|
@@ -143,7 +143,7 @@ class NullTransformer():
|
|
|
143
143
|
data = data.mask(data.isna(), data_mask)
|
|
144
144
|
|
|
145
145
|
elif isna.any() and self._missing_value_replacement is not None:
|
|
146
|
-
data = data.fillna(self._missing_value_replacement)
|
|
146
|
+
data = data.infer_objects().fillna(self._missing_value_replacement)
|
|
147
147
|
|
|
148
148
|
if self._missing_value_generation == 'from_column':
|
|
149
149
|
return pd.concat([data, isna.astype(np.float64)], axis=1).to_numpy()
|
|
@@ -83,6 +83,11 @@ class RegexGenerator(BaseTransformer):
|
|
|
83
83
|
Whether or not to ensure that the new generated data is all unique. If it isn't
|
|
84
84
|
possible to create the requested number of rows, then an error will be raised.
|
|
85
85
|
Defaults to ``False``.
|
|
86
|
+
generation_order (str):
|
|
87
|
+
String defining how to generate the output. If set to ``alphanumeric``, it will
|
|
88
|
+
generate the output in alphanumeric order (ie. 'aaa', 'aab' or '1', '2'...). If
|
|
89
|
+
set to ``scrambled``, the the output will be scrambled in order. Defaults to
|
|
90
|
+
``alphanumeric``.
|
|
86
91
|
"""
|
|
87
92
|
|
|
88
93
|
IS_GENERATOR = True
|
|
@@ -111,7 +116,8 @@ class RegexGenerator(BaseTransformer):
|
|
|
111
116
|
state['generator'] = generator
|
|
112
117
|
self.__dict__ = state
|
|
113
118
|
|
|
114
|
-
def __init__(self, regex_format='[A-Za-z]{5}', enforce_uniqueness=False
|
|
119
|
+
def __init__(self, regex_format='[A-Za-z]{5}', enforce_uniqueness=False,
|
|
120
|
+
generation_order='alphanumeric'):
|
|
115
121
|
super().__init__()
|
|
116
122
|
self.output_properties = {None: {'next_transformer': None}}
|
|
117
123
|
self.enforce_uniqueness = enforce_uniqueness
|
|
@@ -120,6 +126,10 @@ class RegexGenerator(BaseTransformer):
|
|
|
120
126
|
self.generator = None
|
|
121
127
|
self.generator_size = None
|
|
122
128
|
self.generated = None
|
|
129
|
+
if generation_order not in ['alphanumeric', 'scrambled']:
|
|
130
|
+
raise ValueError("generation_order must be one of 'alphanumeric' or 'scrambled'.")
|
|
131
|
+
|
|
132
|
+
self.generation_order = generation_order
|
|
123
133
|
|
|
124
134
|
def reset_randomization(self):
|
|
125
135
|
"""Create a new generator and reset the generated values counter."""
|
|
@@ -222,4 +232,7 @@ class RegexGenerator(BaseTransformer):
|
|
|
222
232
|
remaining_samples = sample_size - len(reverse_transformed)
|
|
223
233
|
reverse_transformed.extend(generated_values[:remaining_samples])
|
|
224
234
|
|
|
235
|
+
if self.generation_order == 'scrambled':
|
|
236
|
+
np.random.shuffle(reverse_transformed)
|
|
237
|
+
|
|
225
238
|
return np.array(reverse_transformed, dtype=object)
|
|
@@ -170,7 +170,7 @@ def fill_nan_with_none(data):
|
|
|
170
170
|
data:
|
|
171
171
|
Original data with nan values replaced by None.
|
|
172
172
|
"""
|
|
173
|
-
return data.fillna(np.nan).replace([np.nan], [None])
|
|
173
|
+
return data.infer_objects().fillna(np.nan).replace([np.nan], [None])
|
|
174
174
|
|
|
175
175
|
|
|
176
176
|
def flatten_column_list(column_list):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rdt
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.12.0.dev0
|
|
4
4
|
Summary: Reversible Data Transforms
|
|
5
5
|
Author-email: "DataCebo, Inc." <info@sdv.dev>
|
|
6
6
|
License: BSL-1.1
|
|
@@ -71,12 +71,12 @@ Requires-Dist: flake8-multiline-containers<0.1,>=0.0.18; extra == "dev"
|
|
|
71
71
|
Requires-Dist: flake8-mutable<1.3,>=1.2.0; extra == "dev"
|
|
72
72
|
Requires-Dist: flake8-expression-complexity<0.1,>=0.0.9; extra == "dev"
|
|
73
73
|
Requires-Dist: flake8-print<4.1,>=4.0.0; extra == "dev"
|
|
74
|
-
Requires-Dist: flake8-pytest-style<3,>=
|
|
74
|
+
Requires-Dist: flake8-pytest-style<3,>=2.0.0; extra == "dev"
|
|
75
75
|
Requires-Dist: flake8-quotes<4,>=3.3.0; extra == "dev"
|
|
76
76
|
Requires-Dist: flake8-sfs<2,>=0.0.3; extra == "dev"
|
|
77
77
|
Requires-Dist: flake8-variables-names<0.1,>=0.0.4; extra == "dev"
|
|
78
78
|
Requires-Dist: dlint<1,>=0.11.0; extra == "dev"
|
|
79
|
-
Requires-Dist: isort<6,>=
|
|
79
|
+
Requires-Dist: isort<6,>=5.13.2; extra == "dev"
|
|
80
80
|
Requires-Dist: pandas-vet<2024,>=0.2.3; extra == "dev"
|
|
81
81
|
Requires-Dist: pep8-naming<1,>=0.12.1; extra == "dev"
|
|
82
82
|
Requires-Dist: pydocstyle<7,>=6.1.1; extra == "dev"
|
|
@@ -48,12 +48,12 @@ flake8-multiline-containers<0.1,>=0.0.18
|
|
|
48
48
|
flake8-mutable<1.3,>=1.2.0
|
|
49
49
|
flake8-expression-complexity<0.1,>=0.0.9
|
|
50
50
|
flake8-print<4.1,>=4.0.0
|
|
51
|
-
flake8-pytest-style<3,>=
|
|
51
|
+
flake8-pytest-style<3,>=2.0.0
|
|
52
52
|
flake8-quotes<4,>=3.3.0
|
|
53
53
|
flake8-sfs<2,>=0.0.3
|
|
54
54
|
flake8-variables-names<0.1,>=0.0.4
|
|
55
55
|
dlint<1,>=0.11.0
|
|
56
|
-
isort<6,>=
|
|
56
|
+
isort<6,>=5.13.2
|
|
57
57
|
pandas-vet<2024,>=0.2.3
|
|
58
58
|
pep8-naming<1,>=0.12.1
|
|
59
59
|
pydocstyle<7,>=6.1.1
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|