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.
Files changed (41) hide show
  1. {rdt-1.11.1.dev0/rdt.egg-info → rdt-1.12.0.dev0}/PKG-INFO +3 -3
  2. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/pyproject.toml +3 -3
  3. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/__init__.py +2 -2
  4. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/categorical.py +8 -5
  5. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/null.py +1 -1
  6. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/text.py +14 -1
  7. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/utils.py +1 -1
  8. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0/rdt.egg-info}/PKG-INFO +3 -3
  9. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/requires.txt +2 -2
  10. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/LICENSE +0 -0
  11. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/README.md +0 -0
  12. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/errors.py +0 -0
  13. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/hyper_transformer.py +0 -0
  14. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/__init__.py +0 -0
  15. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/__init__.py +0 -0
  16. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/base.py +0 -0
  17. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/boolean.py +0 -0
  18. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/categorical.py +0 -0
  19. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/datetime.py +0 -0
  20. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/numerical.py +0 -0
  21. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/pii.py +0 -0
  22. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/text.py +0 -0
  23. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/datasets/utils.py +0 -0
  24. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/performance.py +0 -0
  25. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/performance/profiling.py +0 -0
  26. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/__init__.py +0 -0
  27. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/_validators.py +0 -0
  28. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/base.py +0 -0
  29. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/boolean.py +0 -0
  30. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/datetime.py +0 -0
  31. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/numerical.py +0 -0
  32. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/__init__.py +0 -0
  33. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/anonymization.py +0 -0
  34. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/anonymizer.py +0 -0
  35. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt/transformers/pii/utils.py +0 -0
  36. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/SOURCES.txt +0 -0
  37. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/dependency_links.txt +0 -0
  38. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/entry_points.txt +0 -0
  39. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/rdt.egg-info/top_level.txt +0 -0
  40. {rdt-1.11.1.dev0 → rdt-1.12.0.dev0}/setup.cfg +0 -0
  41. {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.11.1.dev0
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,>=1.5.0; extra == "dev"
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,>=4.3.4; extra == "dev"
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>=1.5.0,<3',
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>=4.3.4,<6',
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.11.1.dev0"
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.11.1.dev0'
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.module_name}".'
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
- return data.fillna(np.nan).apply(self._get_value).to_numpy()
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.11.1.dev0
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,>=1.5.0; extra == "dev"
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,>=4.3.4; extra == "dev"
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,>=1.5.0
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,>=4.3.4
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