rdt 1.10.1.dev0__tar.gz → 1.11.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.10.1.dev0/rdt.egg-info → rdt-1.11.0.dev0}/PKG-INFO +15 -11
  2. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/pyproject.toml +16 -12
  3. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/__init__.py +9 -3
  4. rdt-1.11.0.dev0/rdt/transformers/_validators.py +171 -0
  5. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/pii/anonymizer.py +1 -1
  6. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0/rdt.egg-info}/PKG-INFO +15 -11
  7. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt.egg-info/SOURCES.txt +1 -0
  8. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt.egg-info/requires.txt +18 -11
  9. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/tests/test_tasks.py +4 -3
  10. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/LICENSE +0 -0
  11. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/README.md +0 -0
  12. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/errors.py +0 -0
  13. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/hyper_transformer.py +0 -0
  14. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/__init__.py +0 -0
  15. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/__init__.py +0 -0
  16. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/base.py +0 -0
  17. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/boolean.py +0 -0
  18. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/categorical.py +0 -0
  19. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/datetime.py +0 -0
  20. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/numerical.py +0 -0
  21. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/pii.py +0 -0
  22. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/text.py +0 -0
  23. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/datasets/utils.py +0 -0
  24. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/performance.py +0 -0
  25. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/performance/profiling.py +0 -0
  26. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/__init__.py +0 -0
  27. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/base.py +0 -0
  28. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/boolean.py +0 -0
  29. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/categorical.py +0 -0
  30. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/datetime.py +0 -0
  31. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/null.py +0 -0
  32. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/numerical.py +0 -0
  33. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/pii/__init__.py +0 -0
  34. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/pii/anonymization.py +0 -0
  35. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/pii/utils.py +0 -0
  36. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/text.py +0 -0
  37. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt/transformers/utils.py +0 -0
  38. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt.egg-info/dependency_links.txt +0 -0
  39. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt.egg-info/entry_points.txt +0 -0
  40. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/rdt.egg-info/top_level.txt +0 -0
  41. {rdt-1.10.1.dev0 → rdt-1.11.0.dev0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rdt
3
- Version: 1.10.1.dev0
3
+ Version: 1.11.0.dev0
4
4
  Summary: Reversible Data Transforms
5
5
  Author-email: "DataCebo, Inc." <info@sdv.dev>
6
6
  License: BSL-1.1
@@ -19,23 +19,27 @@ Classifier: Programming Language :: Python :: 3.8
19
19
  Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
22
23
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
- Requires-Python: <3.12,>=3.8
24
+ Requires-Python: <3.13,>=3.8
24
25
  Description-Content-Type: text/markdown
25
26
  License-File: LICENSE
26
- Requires-Dist: numpy<2,>=1.20.0; python_version < "3.10"
27
- Requires-Dist: numpy<2,>=1.23.3; python_version >= "3.10"
27
+ Requires-Dist: numpy>=1.20.0; python_version < "3.10"
28
+ Requires-Dist: numpy>=1.23.3; python_version >= "3.10" and python_version < "3.12"
29
+ Requires-Dist: numpy>=1.26.0; python_version >= "3.12"
28
30
  Requires-Dist: pandas>=1.1.3; python_version < "3.10"
29
31
  Requires-Dist: pandas>=1.3.4; python_version >= "3.10" and python_version < "3.11"
30
32
  Requires-Dist: pandas>=1.5.0; python_version >= "3.11"
31
- Requires-Dist: scipy<2,>=1.5.4; python_version < "3.10"
32
- Requires-Dist: scipy<2,>=1.9.2; python_version >= "3.10"
33
- Requires-Dist: scikit-learn<2,>=0.24; python_version < "3.10"
33
+ Requires-Dist: scipy>=1.5.4; python_version < "3.10"
34
+ Requires-Dist: scipy>=1.9.2; python_version >= "3.10" and python_version < "3.12"
35
+ Requires-Dist: scipy>=1.12.0; python_version >= "3.12"
36
+ Requires-Dist: scikit-learn>=0.24; python_version < "3.10"
34
37
  Requires-Dist: scikit-learn>=1.1.0; python_version >= "3.10" and python_version < "3.11"
35
- Requires-Dist: scikit-learn<2,>=1.1.3; python_version >= "3.11"
36
- Requires-Dist: Faker<20,>=17
38
+ Requires-Dist: scikit-learn>=1.1.3; python_version >= "3.11" and python_version < "3.12"
39
+ Requires-Dist: scikit-learn>=1.3.0; python_version >= "3.12"
40
+ Requires-Dist: Faker>=17
37
41
  Provides-Extra: copulas
38
- Requires-Dist: copulas<0.11,>=0.10.0; extra == "copulas"
42
+ Requires-Dist: copulas>=0.11.0.dev0; extra == "copulas"
39
43
  Provides-Extra: test
40
44
  Requires-Dist: rdt[copulas]; extra == "test"
41
45
  Requires-Dist: pytest>=3.4.2; extra == "test"
@@ -50,7 +54,7 @@ Requires-Dist: rdt[test]; extra == "dev"
50
54
  Requires-Dist: build<2,>=1.0.0; extra == "dev"
51
55
  Requires-Dist: bump-my-version<1,>=0.18.3; extra == "dev"
52
56
  Requires-Dist: pip>=9.0.1; extra == "dev"
53
- Requires-Dist: watchdog<0.11,>=0.8.3; extra == "dev"
57
+ Requires-Dist: watchdog<5,>=1.0.1; extra == "dev"
54
58
  Requires-Dist: pycodestyle<2.8.0,>=2.7.0; extra == "dev"
55
59
  Requires-Dist: pyflakes<2.4.0,>=2.3.0; extra == "dev"
56
60
  Requires-Dist: flake8<4,>=3.7.7; extra == "dev"
@@ -12,25 +12,29 @@ classifiers = [
12
12
  'Programming Language :: Python :: 3.9',
13
13
  'Programming Language :: Python :: 3.10',
14
14
  'Programming Language :: Python :: 3.11',
15
+ 'Programming Language :: Python :: 3.12',
15
16
  'Topic :: Scientific/Engineering :: Artificial Intelligence',
16
17
  ]
17
18
  keywords = ['machine learning', 'synthetic data generation', 'benchmark', 'generative models']
18
19
  dynamic = ['version']
19
20
  license = { text = 'BSL-1.1' }
20
- requires-python = '>=3.8,<3.12'
21
+ requires-python = '>=3.8,<3.13'
21
22
  readme = 'README.md'
22
23
  dependencies = [
23
- "numpy>=1.20.0,<2;python_version<'3.10'",
24
- "numpy>=1.23.3,<2;python_version>='3.10'",
24
+ "numpy>=1.20.0;python_version<'3.10'",
25
+ "numpy>=1.23.3;python_version>='3.10' and python_version<'3.12'",
26
+ "numpy>=1.26.0;python_version>='3.12'",
25
27
  "pandas>=1.1.3;python_version<'3.10'",
26
28
  "pandas>=1.3.4;python_version>='3.10' and python_version<'3.11'",
27
29
  "pandas>=1.5.0;python_version>='3.11'",
28
- "scipy>=1.5.4,<2;python_version<'3.10'",
29
- "scipy>=1.9.2,<2;python_version>='3.10'",
30
- "scikit-learn>=0.24,<2;python_version<'3.10'",
30
+ "scipy>=1.5.4;python_version<'3.10'",
31
+ "scipy>=1.9.2;python_version>='3.10' and python_version<'3.12'",
32
+ "scipy>=1.12.0;python_version>='3.12'",
33
+ "scikit-learn>=0.24;python_version<'3.10'",
31
34
  "scikit-learn>=1.1.0;python_version>='3.10' and python_version<'3.11'",
32
- "scikit-learn>=1.1.3,<2;python_version>='3.11'",
33
- 'Faker>=17,<20',
35
+ "scikit-learn>=1.1.3;python_version>='3.11' and python_version<'3.12'",
36
+ "scikit-learn>=1.3.0;python_version>='3.12'",
37
+ 'Faker>=17',
34
38
  ]
35
39
 
36
40
  [project.urls]
@@ -44,7 +48,7 @@ dependencies = [
44
48
  rdt = { main = 'rdt.cli.__main__:main' }
45
49
 
46
50
  [project.optional-dependencies]
47
- copulas = ['copulas>=0.10.0,<0.11',]
51
+ copulas = ['copulas>=0.11.0.dev0',]
48
52
  test = [
49
53
  'rdt[copulas]',
50
54
 
@@ -63,7 +67,7 @@ dev = [
63
67
  'build>=1.0.0,<2',
64
68
  'bump-my-version>=0.18.3,<1',
65
69
  'pip>=9.0.1',
66
- 'watchdog>=0.8.3,<0.11',
70
+ 'watchdog>=1.0.1,<5',
67
71
 
68
72
  # style check
69
73
  'pycodestyle<2.8.0,>=2.7.0',
@@ -133,12 +137,12 @@ namespaces = false
133
137
  '*.png',
134
138
  '*.gif'
135
139
  ]
136
- 'tests' = ['*']
137
140
 
138
141
  [tool.setuptools.exclude-package-data]
139
142
  '*' = [
140
143
  '* __pycache__',
141
144
  '*.py[co]',
145
+ 'static_code_analysis.txt',
142
146
  ]
143
147
 
144
148
  [tool.setuptools.dynamic]
@@ -162,7 +166,7 @@ collect_ignore = ['pyproject.toml']
162
166
  exclude_lines = ['NotImplementedError()']
163
167
 
164
168
  [tool.bumpversion]
165
- current_version = "1.10.1.dev0"
169
+ current_version = "1.11.0.dev0"
166
170
  parse = '(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<candidate>\d+))?'
167
171
  serialize = [
168
172
  '{major}.{minor}.{patch}.{release}{candidate}',
@@ -5,17 +5,17 @@
5
5
 
6
6
  __author__ = 'DataCebo, Inc.'
7
7
  __email__ = 'info@sdv.dev'
8
- __version__ = '1.10.1.dev0'
8
+ __version__ = '1.11.0.dev0'
9
9
 
10
10
 
11
11
  import sys
12
12
  import warnings
13
+ from importlib.metadata import entry_points
13
14
  from operator import attrgetter
14
15
  from types import ModuleType
15
16
 
16
17
  import numpy as np
17
18
  import pandas as pd
18
- from pkg_resources import iter_entry_points
19
19
 
20
20
  from rdt import transformers
21
21
  from rdt.hyper_transformer import HyperTransformer
@@ -149,7 +149,13 @@ def _find_addons():
149
149
  from top_module.addon_module import x
150
150
  """
151
151
  group = 'rdt_modules'
152
- for entry_point in iter_entry_points(group=group):
152
+ try:
153
+ eps = entry_points(group=group) # pylint: disable=E1123
154
+ except TypeError:
155
+ # Load-time selection requires Python >= 3.10 or importlib_metadata >= 3.6
156
+ eps = entry_points().get(group, [])
157
+
158
+ for entry_point in eps:
153
159
  try:
154
160
  addon = entry_point.load()
155
161
  except Exception: # pylint: disable=broad-exception-caught
@@ -0,0 +1,171 @@
1
+ """Validations for multi-column transformers."""
2
+ import importlib
3
+
4
+ from rdt.errors import TransformerInputError
5
+
6
+
7
+ class BaseValidator:
8
+ """Base validation class.
9
+
10
+ The validation classes ensure that the input data is compatible with the transformers
11
+ and that they can be imported.
12
+ """
13
+
14
+ SUPPORTED_SDTYPES = []
15
+ VALIDATION_TYPE = None
16
+
17
+ @classmethod
18
+ def _validate_supported_sdtypes(cls, columns_to_sdtypes):
19
+ message = ''
20
+ for column, sdtype in columns_to_sdtypes.items():
21
+ if sdtype not in cls.SUPPORTED_SDTYPES:
22
+ message += f"Column '{column}' has an unsupported sdtype '{sdtype}'.\n"
23
+
24
+ if message:
25
+ message += (
26
+ f'Please provide a column that is compatible with {cls.VALIDATION_TYPE} data.'
27
+ )
28
+ raise TransformerInputError(message)
29
+
30
+ @classmethod
31
+ def validate_sdtypes(cls, columns_to_sdtypes):
32
+ """Validate the columns to sdtypes mapping.
33
+
34
+ This method aims to call all other sdtype validation method in the class.
35
+
36
+ Args:
37
+ columns_to_sdtypes (dict):
38
+ Mapping of column names to sdtypes.
39
+ """
40
+ raise NotImplementedError
41
+
42
+ @classmethod
43
+ def validate_imports(cls):
44
+ """Check that the transformers can be imported."""
45
+ raise NotImplementedError
46
+
47
+ @classmethod
48
+ def validate(cls, columns_to_sdtypes):
49
+ """Validate the input data.
50
+
51
+ Args:
52
+ columns_to_sdtypes (dict):
53
+ Mapping of column names to sdtypes.
54
+ """
55
+ cls.validate_sdtypes(columns_to_sdtypes)
56
+ cls.validate_imports()
57
+
58
+
59
+ class AddressValidator(BaseValidator):
60
+ """Validation class for Address data."""
61
+
62
+ SUPPORTED_SDTYPES = [
63
+ 'country_code', 'administrative_unit', 'city', 'postcode',
64
+ 'street_address', 'secondary_address', 'state', 'state_abbr'
65
+ ]
66
+ VALIDATION_TYPE = 'Address'
67
+
68
+ @classmethod
69
+ def _validate_number_columns(cls, columns_to_sdtypes):
70
+ if len(columns_to_sdtypes) > 7:
71
+ raise TransformerInputError(
72
+ f'{cls.VALIDATION_TYPE} transformers takes up to 7 columns to transform. '
73
+ 'Please provide address data with valid fields.'
74
+ )
75
+
76
+ @staticmethod
77
+ def _validate_uniqueness_sdtype(columns_to_sdtypes):
78
+ sdtypes_to_columns = {}
79
+ for column, sdtype in columns_to_sdtypes.items():
80
+ if sdtype not in sdtypes_to_columns:
81
+ sdtypes_to_columns[sdtype] = []
82
+
83
+ sdtypes_to_columns[sdtype].append(column)
84
+
85
+ duplicate_fields = {
86
+ value: keys for value, keys in sdtypes_to_columns.items() if len(keys) > 1
87
+ }
88
+
89
+ if duplicate_fields:
90
+ message = ''
91
+ for sdtype, columns in duplicate_fields.items():
92
+ to_print = "', '".join(columns)
93
+ message += f"Columns '{to_print}' have the same sdtype '{sdtype}'.\n"
94
+
95
+ message += 'Your address data cannot have duplicate fields.'
96
+ raise TransformerInputError(message)
97
+
98
+ @classmethod
99
+ def _validate_administrative_unit(cls, columns_to_sdtypes):
100
+ num_column_administrative_unit = sum(
101
+ 1 for itm in columns_to_sdtypes.values() if itm in ['administrative_unit', 'state']
102
+ )
103
+ if num_column_administrative_unit > 1:
104
+ raise TransformerInputError(
105
+ f"The {cls.__name__} can have up to 1 column with sdtype 'state'"
106
+ f" or 'administrative_unit'. Please provide address data with valid fields."
107
+ )
108
+
109
+ @classmethod
110
+ def validate_sdtypes(cls, columns_to_sdtypes):
111
+ """Validate the columns to sdtypes mapping."""
112
+ cls._validate_supported_sdtypes(columns_to_sdtypes)
113
+ cls._validate_number_columns(columns_to_sdtypes)
114
+ cls._validate_uniqueness_sdtype(columns_to_sdtypes)
115
+ cls._validate_administrative_unit(columns_to_sdtypes)
116
+
117
+ @classmethod
118
+ def validate_imports(cls):
119
+ """Check that the address transformers can be imported."""
120
+ error_message = (
121
+ 'You must have SDV Enterprise with the address add-on to use the address features.'
122
+ )
123
+
124
+ try:
125
+ address_module = importlib.import_module('rdt.transformers.address')
126
+ except ModuleNotFoundError:
127
+ raise ImportError(error_message) from None
128
+
129
+ required_classes = ['RandomLocationGenerator', 'RegionalAnonymizer']
130
+ for class_name in required_classes:
131
+ if not hasattr(address_module, class_name):
132
+ raise ImportError(error_message)
133
+
134
+
135
+ class GPSValidator(BaseValidator):
136
+ """Validation class for GPS data."""
137
+
138
+ SUPPORTED_SDTYPES = ['latitude', 'longitude']
139
+ VALIDATION_TYPE = 'GPS'
140
+
141
+ @staticmethod
142
+ def _validate_uniqueness_sdtype(columns_to_sdtypes):
143
+ sdtypes_to_columns = {sdtype: column for column, sdtype in columns_to_sdtypes.items()}
144
+ if len(sdtypes_to_columns) != 2:
145
+ raise TransformerInputError(
146
+ 'The GPS columns must have one latitude and on longitude columns sdtypes. '
147
+ 'Please provide GPS data with valid fields.'
148
+ )
149
+
150
+ @classmethod
151
+ def validate_sdtypes(cls, columns_to_sdtypes):
152
+ """Validate the columns to sdtypes mapping."""
153
+ cls._validate_supported_sdtypes(columns_to_sdtypes)
154
+ cls._validate_uniqueness_sdtype(columns_to_sdtypes)
155
+
156
+ @classmethod
157
+ def validate_imports(cls):
158
+ """Check that the GPS transformers can be imported."""
159
+ error_message = (
160
+ 'You must have SDV Enterprise with the gps add-on to use the GPS features.'
161
+ )
162
+
163
+ try:
164
+ gps_module = importlib.import_module('rdt.transformers.gps')
165
+ except ModuleNotFoundError:
166
+ raise ImportError(error_message) from None
167
+
168
+ required_classes = ['RandomLocationGenerator', 'MetroAreaAnonymizer', 'GPSNoiser']
169
+ for class_name in required_classes:
170
+ if not hasattr(gps_module, class_name):
171
+ raise ImportError(error_message)
@@ -138,7 +138,7 @@ class AnonymizedFaker(BaseTransformer):
138
138
  self._faker_random_seed = None
139
139
  self.locales = locales
140
140
  self.faker = faker.Faker(self.locales)
141
- if self.locales:
141
+ if self.provider_name != 'BaseProvider' and self.locales:
142
142
  self._check_locales()
143
143
 
144
144
  if missing_value_generation not in ['random', None]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rdt
3
- Version: 1.10.1.dev0
3
+ Version: 1.11.0.dev0
4
4
  Summary: Reversible Data Transforms
5
5
  Author-email: "DataCebo, Inc." <info@sdv.dev>
6
6
  License: BSL-1.1
@@ -19,23 +19,27 @@ Classifier: Programming Language :: Python :: 3.8
19
19
  Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
22
23
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
- Requires-Python: <3.12,>=3.8
24
+ Requires-Python: <3.13,>=3.8
24
25
  Description-Content-Type: text/markdown
25
26
  License-File: LICENSE
26
- Requires-Dist: numpy<2,>=1.20.0; python_version < "3.10"
27
- Requires-Dist: numpy<2,>=1.23.3; python_version >= "3.10"
27
+ Requires-Dist: numpy>=1.20.0; python_version < "3.10"
28
+ Requires-Dist: numpy>=1.23.3; python_version >= "3.10" and python_version < "3.12"
29
+ Requires-Dist: numpy>=1.26.0; python_version >= "3.12"
28
30
  Requires-Dist: pandas>=1.1.3; python_version < "3.10"
29
31
  Requires-Dist: pandas>=1.3.4; python_version >= "3.10" and python_version < "3.11"
30
32
  Requires-Dist: pandas>=1.5.0; python_version >= "3.11"
31
- Requires-Dist: scipy<2,>=1.5.4; python_version < "3.10"
32
- Requires-Dist: scipy<2,>=1.9.2; python_version >= "3.10"
33
- Requires-Dist: scikit-learn<2,>=0.24; python_version < "3.10"
33
+ Requires-Dist: scipy>=1.5.4; python_version < "3.10"
34
+ Requires-Dist: scipy>=1.9.2; python_version >= "3.10" and python_version < "3.12"
35
+ Requires-Dist: scipy>=1.12.0; python_version >= "3.12"
36
+ Requires-Dist: scikit-learn>=0.24; python_version < "3.10"
34
37
  Requires-Dist: scikit-learn>=1.1.0; python_version >= "3.10" and python_version < "3.11"
35
- Requires-Dist: scikit-learn<2,>=1.1.3; python_version >= "3.11"
36
- Requires-Dist: Faker<20,>=17
38
+ Requires-Dist: scikit-learn>=1.1.3; python_version >= "3.11" and python_version < "3.12"
39
+ Requires-Dist: scikit-learn>=1.3.0; python_version >= "3.12"
40
+ Requires-Dist: Faker>=17
37
41
  Provides-Extra: copulas
38
- Requires-Dist: copulas<0.11,>=0.10.0; extra == "copulas"
42
+ Requires-Dist: copulas>=0.11.0.dev0; extra == "copulas"
39
43
  Provides-Extra: test
40
44
  Requires-Dist: rdt[copulas]; extra == "test"
41
45
  Requires-Dist: pytest>=3.4.2; extra == "test"
@@ -50,7 +54,7 @@ Requires-Dist: rdt[test]; extra == "dev"
50
54
  Requires-Dist: build<2,>=1.0.0; extra == "dev"
51
55
  Requires-Dist: bump-my-version<1,>=0.18.3; extra == "dev"
52
56
  Requires-Dist: pip>=9.0.1; extra == "dev"
53
- Requires-Dist: watchdog<0.11,>=0.8.3; extra == "dev"
57
+ Requires-Dist: watchdog<5,>=1.0.1; extra == "dev"
54
58
  Requires-Dist: pycodestyle<2.8.0,>=2.7.0; extra == "dev"
55
59
  Requires-Dist: pyflakes<2.4.0,>=2.3.0; extra == "dev"
56
60
  Requires-Dist: flake8<4,>=3.7.7; extra == "dev"
@@ -24,6 +24,7 @@ rdt/performance/datasets/pii.py
24
24
  rdt/performance/datasets/text.py
25
25
  rdt/performance/datasets/utils.py
26
26
  rdt/transformers/__init__.py
27
+ rdt/transformers/_validators.py
27
28
  rdt/transformers/base.py
28
29
  rdt/transformers/boolean.py
29
30
  rdt/transformers/categorical.py
@@ -1,32 +1,39 @@
1
- Faker<20,>=17
1
+ Faker>=17
2
2
 
3
3
  [:python_version < "3.10"]
4
- numpy<2,>=1.20.0
4
+ numpy>=1.20.0
5
5
  pandas>=1.1.3
6
- scipy<2,>=1.5.4
7
- scikit-learn<2,>=0.24
8
-
9
- [:python_version >= "3.10"]
10
- numpy<2,>=1.23.3
11
- scipy<2,>=1.9.2
6
+ scipy>=1.5.4
7
+ scikit-learn>=0.24
12
8
 
13
9
  [:python_version >= "3.10" and python_version < "3.11"]
14
10
  pandas>=1.3.4
15
11
  scikit-learn>=1.1.0
16
12
 
13
+ [:python_version >= "3.10" and python_version < "3.12"]
14
+ numpy>=1.23.3
15
+ scipy>=1.9.2
16
+
17
17
  [:python_version >= "3.11"]
18
18
  pandas>=1.5.0
19
- scikit-learn<2,>=1.1.3
19
+
20
+ [:python_version >= "3.11" and python_version < "3.12"]
21
+ scikit-learn>=1.1.3
22
+
23
+ [:python_version >= "3.12"]
24
+ numpy>=1.26.0
25
+ scipy>=1.12.0
26
+ scikit-learn>=1.3.0
20
27
 
21
28
  [copulas]
22
- copulas<0.11,>=0.10.0
29
+ copulas>=0.11.0.dev0
23
30
 
24
31
  [dev]
25
32
  rdt[test]
26
33
  build<2,>=1.0.0
27
34
  bump-my-version<1,>=0.18.3
28
35
  pip>=9.0.1
29
- watchdog<0.11,>=0.8.3
36
+ watchdog<5,>=1.0.1
30
37
  pycodestyle<2.8.0,>=2.7.0
31
38
  pyflakes<2.4.0,>=2.3.0
32
39
  flake8<4,>=3.7.7
@@ -1,4 +1,5 @@
1
1
  """Tests for the ``tasks.py`` file."""
2
+
2
3
  from tasks import _get_minimum_versions
3
4
 
4
5
 
@@ -15,7 +16,7 @@ def test_get_minimum_versions():
15
16
  "pandas>=1.2.0,<2;python_version<'3.10'",
16
17
  "pandas>=1.3.0,<2;python_version>='3.10'",
17
18
  'humanfriendly>=8.2,<11',
18
- 'pandas @ git+https://github.com/pandas-dev/pandas.git@master#egg=pandas'
19
+ 'pandas @ git+https://github.com/pandas-dev/pandas.git@master',
19
20
  ]
20
21
 
21
22
  # Run
@@ -25,12 +26,12 @@ def test_get_minimum_versions():
25
26
  # Assert
26
27
  expected_versions_39 = [
27
28
  'numpy==1.20.0',
28
- 'pandas @ git+https://github.com/pandas-dev/pandas.git@master#egg=pandas',
29
+ 'git+https://github.com/pandas-dev/pandas.git@master#egg=pandas',
29
30
  'humanfriendly==8.2',
30
31
  ]
31
32
  expected_versions_310 = [
32
33
  'numpy==1.23.3',
33
- 'pandas @ git+https://github.com/pandas-dev/pandas.git@master#egg=pandas',
34
+ 'git+https://github.com/pandas-dev/pandas.git@master#egg=pandas',
34
35
  'humanfriendly==8.2',
35
36
  ]
36
37
 
File without changes
File without changes
File without changes
File without changes