fiddler-client 3.0.0.dev9__py3-none-any.whl → 3.0.0.dev11__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.
fiddler/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.0.dev9
1
+ 3.0.0-dev11
fiddler/__init__.py CHANGED
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from fiddler.connection import Connection, ConnectionMixin, init # noqa
2
4
  from fiddler.constants.alert_rule import ( # noqa
3
5
  AlertCondition,
@@ -5,7 +7,7 @@ from fiddler.constants.alert_rule import ( # noqa
5
7
  CompareTo,
6
8
  Priority,
7
9
  )
8
- from fiddler.constants.baseline import BaselineType, WindowSize # noqa
10
+ from fiddler.constants.baseline import BaselineType, WindowBinSize # noqa
9
11
  from fiddler.constants.dataset import EnvType # noqa
10
12
  from fiddler.constants.job import JobStatus # noqa
11
13
  from fiddler.constants.model import ( # noqa
@@ -19,14 +21,14 @@ from fiddler.constants.model_deployment import ArtifactType, DeploymentType # n
19
21
  from fiddler.constants.xai import ExplainMethod # noqa
20
22
  from fiddler.entities.alert_record import AlertRecord # noqa
21
23
  from fiddler.entities.alert_rule import AlertRule # noqa
22
- from fiddler.entities.baseline import Baseline # noqa
24
+ from fiddler.entities.baseline import Baseline, BaselineCompact # noqa
23
25
  from fiddler.entities.custom_expression import CustomMetric, Segment # noqa
24
- from fiddler.entities.dataset import Dataset # noqa
26
+ from fiddler.entities.dataset import Dataset, DatasetCompact # noqa
25
27
  from fiddler.entities.file import File # noqa
26
28
  from fiddler.entities.job import Job # noqa
27
- from fiddler.entities.model import Model # noqa
29
+ from fiddler.entities.model import Model, ModelCompact # noqa
28
30
  from fiddler.entities.model_deployment import ModelDeployment # noqa
29
- from fiddler.entities.project import Project # noqa
31
+ from fiddler.entities.project import Project, ProjectCompact # noqa
30
32
  from fiddler.entities.webhook import Webhook # noqa
31
33
  from fiddler.exceptions import ( # noqa
32
34
  ApiError,
@@ -62,11 +64,22 @@ from fiddler.schemas.xai_params import XaiParams # noqa
62
64
  from fiddler.utils.logger import set_logging # noqa
63
65
  from fiddler.version import __version__ # noqa
64
66
 
67
+ # Global connection object
68
+ conn: Connection | None = None
69
+
70
+
71
+ def set_conn(conn_: Connection) -> None:
72
+ """Set global conn variable"""
73
+ global conn
74
+ conn = conn_
75
+
76
+
65
77
  __all__ = [
66
78
  '__version__',
67
79
  'Connection',
68
80
  'ConnectionMixin',
69
81
  'init',
82
+ 'conn',
70
83
  # Constants
71
84
  'AlertCondition',
72
85
  'ArtifactStatus',
@@ -82,7 +95,7 @@ __all__ = [
82
95
  'ModelInputType',
83
96
  'ModelTask',
84
97
  'Priority',
85
- 'WindowSize',
98
+ 'WindowBinSize',
86
99
  # Schemas
87
100
  'CustomFeature',
88
101
  'DatasetDataSource',
@@ -103,13 +116,17 @@ __all__ = [
103
116
  'AlertRecord',
104
117
  'AlertRule',
105
118
  'Baseline',
119
+ 'BaselineCompact',
106
120
  'Dataset',
121
+ 'DatasetCompact',
107
122
  'CustomMetric',
108
123
  'File',
109
124
  'Job',
110
125
  'Model',
126
+ 'ModelCompact',
111
127
  'ModelDeployment',
112
128
  'Project',
129
+ 'ProjectCompact',
113
130
  'Segment',
114
131
  'Webhook',
115
132
  # Exceptions
fiddler/connection.py CHANGED
@@ -15,9 +15,6 @@ from fiddler.version import __version__
15
15
 
16
16
  logger = get_logger(__name__)
17
17
 
18
- # Global connection object
19
- connection: Connection | None = None
20
-
21
18
 
22
19
  class Connection:
23
20
  def __init__( # pylint: disable=too-many-arguments
@@ -123,35 +120,37 @@ class Connection:
123
120
 
124
121
  class ConnectionMixin:
125
122
  @classmethod
126
- def _connection(cls) -> Connection:
123
+ def _conn(cls) -> Connection:
127
124
  """Fiddler connection instance"""
128
- assert connection is not None
129
- return connection
125
+ from fiddler import conn
126
+
127
+ assert conn is not None
128
+ return conn
130
129
 
131
130
  @classmethod
132
131
  def _client(cls) -> RequestClient:
133
132
  """Request client instance"""
134
- return cls._connection().client
133
+ return cls._conn().client
135
134
 
136
135
  @property
137
136
  def organization_name(self) -> str:
138
137
  """Organization name property"""
139
- return self._connection().server_info.organization.name
138
+ return self._conn().server_info.organization.name
140
139
 
141
140
  @property
142
141
  def organization_id(self) -> UUID:
143
142
  """Organization id property"""
144
- return self._connection().server_info.organization.id
143
+ return self._conn().server_info.organization.id
145
144
 
146
145
  @classmethod
147
146
  def get_organization_name(cls) -> str:
148
147
  """Organization name"""
149
- return cls._connection().server_info.organization.name
148
+ return cls._conn().server_info.organization.name
150
149
 
151
150
  @classmethod
152
151
  def get_organization_id(cls) -> UUID:
153
152
  """Organization id"""
154
- return cls._connection().server_info.organization.id
153
+ return cls._conn().server_info.organization.id
155
154
 
156
155
 
157
156
  def init( # pylint: disable=too-many-arguments
@@ -173,8 +172,9 @@ def init( # pylint: disable=too-many-arguments
173
172
  :param validate: Whether to validate the server/client version compatibility.
174
173
  Some functionalities might not work if this is turned off.
175
174
  """
176
- global connection # pylint: disable=global-statement
177
- connection = Connection(
175
+ from fiddler import set_conn
176
+
177
+ conn = Connection(
178
178
  url=url,
179
179
  token=token,
180
180
  proxies=proxies,
@@ -182,3 +182,5 @@ def init( # pylint: disable=too-many-arguments
182
182
  verify=verify,
183
183
  validate=validate,
184
184
  )
185
+
186
+ set_conn(conn_=conn)
@@ -8,12 +8,8 @@ class BaselineType(str, enum.Enum):
8
8
 
9
9
 
10
10
  @enum.unique
11
- class WindowSize(enum.IntEnum):
12
- FIVE_MINUTES = 300
13
- ONE_HOUR = 3600
14
- ONE_DAY = 86400
15
- ONE_WEEK = 604800
16
- ONE_MONTH = 2592000
17
-
18
- def __str__(self) -> str:
19
- return self.name
11
+ class WindowBinSize(str, enum.Enum):
12
+ HOUR = 'Hour'
13
+ DAY = 'Day'
14
+ WEEK = 'Week'
15
+ MONTH = 'Month'
@@ -24,7 +24,7 @@ class AlertRule(
24
24
  def __init__( # pylint: disable=too-many-arguments
25
25
  self,
26
26
  name: str,
27
- model_id: UUID,
27
+ model_id: UUID | str,
28
28
  metric_id: str | UUID,
29
29
  priority: Priority | str,
30
30
  compare_to: CompareTo | str,
@@ -33,7 +33,7 @@ class AlertRule(
33
33
  critical_threshold: float,
34
34
  warning_threshold: float | None = None,
35
35
  columns: list[str] | None = None,
36
- baseline_id: UUID | None = None,
36
+ baseline_id: UUID | str | None = None,
37
37
  compare_bin_delta: int | None = None,
38
38
  ) -> None:
39
39
  """Construct a alert rule instance."""
@@ -5,6 +5,7 @@ from datetime import datetime
5
5
  from typing import Any, Iterator
6
6
  from uuid import UUID
7
7
 
8
+ from fiddler.constants.baseline import WindowBinSize
8
9
  from fiddler.constants.dataset import EnvType
9
10
  from fiddler.decorators import handle_api_error
10
11
  from fiddler.entities.base import BaseEntity
@@ -22,14 +23,14 @@ class Baseline(
22
23
  def __init__( # pylint: disable=too-many-arguments
23
24
  self,
24
25
  name: str,
25
- model_id: UUID,
26
+ model_id: UUID | str,
26
27
  environment: EnvType,
27
28
  type_: str,
28
- dataset_id: UUID | None = None,
29
+ dataset_id: UUID | str | None = None,
29
30
  start_time: int | None = None,
30
31
  end_time: int | None = None,
31
- offset: int | None = None,
32
- window_size: int | None = None,
32
+ offset_delta: int | None = None,
33
+ window_bin_size: WindowBinSize | str | None = None,
33
34
  ) -> None:
34
35
  """Construct a baseline instance."""
35
36
  self.name = name
@@ -39,8 +40,8 @@ class Baseline(
39
40
  self.dataset_id = dataset_id
40
41
  self.start_time = start_time
41
42
  self.end_time = end_time
42
- self.offset = offset
43
- self.window_size = window_size
43
+ self.offset_delta = offset_delta
44
+ self.window_bin_size = window_bin_size
44
45
 
45
46
  self.id: UUID | None = None
46
47
  self.row_count: int | None = None
@@ -73,8 +74,8 @@ class Baseline(
73
74
  type_=resp_obj.type,
74
75
  start_time=resp_obj.start_time,
75
76
  end_time=resp_obj.end_time,
76
- offset=resp_obj.offset,
77
- window_size=resp_obj.window_size,
77
+ offset_delta=resp_obj.offset_delta,
78
+ window_bin_size=resp_obj.window_bin_size,
78
79
  )
79
80
 
80
81
  # Add remaining fields
@@ -109,8 +110,8 @@ class Baseline(
109
110
  'type',
110
111
  'start_time',
111
112
  'end_time',
112
- 'offset',
113
- 'window_size',
113
+ 'offset_delta',
114
+ 'window_bin_size',
114
115
  'created_at',
115
116
  'updated_at',
116
117
  'row_count',
@@ -134,27 +135,23 @@ class Baseline(
134
135
 
135
136
  @classmethod
136
137
  @handle_api_error
137
- def from_name(cls, name: str, model_name: str, project_name: str) -> Baseline:
138
+ def from_name(cls, name: str, model_id: UUID | str) -> Baseline:
138
139
  """
139
- Get the baseline instance using baseline name, model name and project name.
140
+ Get the baseline instance of a model from baseline name
140
141
 
141
142
  :param name: Baseline name
142
- :param model_name: Name of the model associated with the baseline
143
- :param project_name: Name of the project associated with the baseline
143
+ :param model_id: Model identifier
144
144
 
145
- :return: Baseline instance for the provided params
145
+ :return: Baseline instance
146
146
  """
147
147
 
148
148
  _filter = QueryCondition(
149
149
  rules=[
150
150
  QueryRule(field='name', operator=OperatorType.EQUAL, value=name),
151
151
  QueryRule(
152
- field='project_name',
152
+ field='model_id',
153
153
  operator=OperatorType.EQUAL,
154
- value=project_name,
155
- ),
156
- QueryRule(
157
- field='model_name', operator=OperatorType.EQUAL, value=model_name
154
+ value=model_id,
158
155
  ),
159
156
  ]
160
157
  )
@@ -203,7 +200,7 @@ class Baseline(
203
200
  @handle_api_error
204
201
  def create(self) -> Baseline:
205
202
  """Create a new baseline."""
206
- payload = {
203
+ payload: dict[str, Any] = {
207
204
  'name': self.name,
208
205
  'model_id': self.model_id,
209
206
  'type': self.type,
@@ -214,10 +211,10 @@ class Baseline(
214
211
  payload['start_time'] = self.start_time
215
212
  if self.end_time:
216
213
  payload['end_time'] = self.end_time
217
- if self.offset:
218
- payload['offset'] = self.offset
219
- if self.window_size:
220
- payload['window_size'] = self.window_size
214
+ if self.offset_delta:
215
+ payload['offset_delta'] = self.offset_delta
216
+ if self.window_bin_size:
217
+ payload['window_bin_size'] = self.window_bin_size
221
218
 
222
219
  response = self._client().post(
223
220
  url=self._get_url(),
@@ -22,7 +22,7 @@ class CustomExpression(BaseEntity, ModelCompactMixin, ProjectCompactMixin):
22
22
  def __init__(
23
23
  self,
24
24
  name: str,
25
- model_id: UUID,
25
+ model_id: UUID | str,
26
26
  definition: str,
27
27
  description: str | None = None,
28
28
  ) -> None:
@@ -112,15 +112,12 @@ class CustomExpression(BaseEntity, ModelCompactMixin, ProjectCompactMixin):
112
112
 
113
113
  @classmethod
114
114
  @handle_api_error
115
- def from_name(
116
- cls, name: str, model_name: str, project_name: str
117
- ) -> CustomExpression:
115
+ def from_name(cls, name: str, model_id: UUID | str) -> CustomExpression:
118
116
  """
119
- Get the custom metric instance using custom metric name, model name and project name.
117
+ Get the custom metric instance of a model from custom metric name
120
118
 
121
119
  :param name: Custom metric name
122
- :param model_name: Name of the model associated with the custom metric
123
- :param project_name: Name of the project associated with the custom metric
120
+ :param model_id: Model identifier
124
121
 
125
122
  :return: CustomMetric instance for the provided params
126
123
  """
@@ -129,12 +126,7 @@ class CustomExpression(BaseEntity, ModelCompactMixin, ProjectCompactMixin):
129
126
  rules=[
130
127
  QueryRule(field='name', operator=OperatorType.EQUAL, value=name),
131
128
  QueryRule(
132
- field='model_name', operator=OperatorType.EQUAL, value=model_name
133
- ),
134
- QueryRule(
135
- field='project_name',
136
- operator=OperatorType.EQUAL,
137
- value=project_name,
129
+ field='model_id', operator=OperatorType.EQUAL, value=model_id
138
130
  ),
139
131
  ]
140
132
  )
@@ -157,7 +149,7 @@ class CustomExpression(BaseEntity, ModelCompactMixin, ProjectCompactMixin):
157
149
  @handle_api_error
158
150
  def list(
159
151
  cls,
160
- model_id: UUID,
152
+ model_id: UUID | str,
161
153
  ) -> Iterator[CustomExpression]:
162
154
  """Get a list of all custom metrics in the organization."""
163
155
 
@@ -195,7 +187,11 @@ class CustomExpression(BaseEntity, ModelCompactMixin, ProjectCompactMixin):
195
187
 
196
188
  class CustomMetric(CustomExpression):
197
189
  def __init__(
198
- self, name: str, model_id: UUID, definition: str, description: str | None = None
190
+ self,
191
+ name: str,
192
+ model_id: UUID | str,
193
+ definition: str,
194
+ description: str | None = None,
199
195
  ) -> None:
200
196
  """Construct a custom metric instance."""
201
197
  super().__init__(name, model_id, definition, description)
@@ -214,7 +210,11 @@ class CustomMetric(CustomExpression):
214
210
 
215
211
  class Segment(CustomExpression):
216
212
  def __init__(
217
- self, name: str, model_id: UUID, definition: str, description: str | None = None
213
+ self,
214
+ name: str,
215
+ model_id: UUID | str,
216
+ definition: str,
217
+ description: str | None = None,
218
218
  ) -> None:
219
219
  """Construct a segment instance."""
220
220
  super().__init__(name, model_id, definition, description)
@@ -72,13 +72,12 @@ class Dataset(BaseEntity, ProjectCompactMixin):
72
72
 
73
73
  @classmethod
74
74
  @handle_api_error
75
- def from_name(cls, name: str, model_name: str, project_name: str) -> Dataset:
75
+ def from_name(cls, name: str, model_id: UUID | str) -> Dataset:
76
76
  """
77
77
  Get the dataset instance using dataset name.
78
78
 
79
79
  :param name: Dataset name
80
- :param model_name: Name of the model associated with the dataset
81
- :param project_name: name of the project associated with the dataset
80
+ :param model_id: Model identifier
82
81
 
83
82
  :return: Dataset instance for the provided params
84
83
  """
@@ -86,12 +85,9 @@ class Dataset(BaseEntity, ProjectCompactMixin):
86
85
  rules=[
87
86
  QueryRule(field='name', operator=OperatorType.EQUAL, value=name),
88
87
  QueryRule(
89
- field='project_name',
88
+ field='model_id',
90
89
  operator=OperatorType.EQUAL,
91
- value=project_name,
92
- ),
93
- QueryRule(
94
- field='model_name', operator=OperatorType.EQUAL, value=model_name
90
+ value=model_id,
95
91
  ),
96
92
  ]
97
93
  )
fiddler/entities/model.py CHANGED
@@ -49,7 +49,7 @@ class Model(
49
49
  def __init__( # pylint: disable=too-many-arguments
50
50
  self,
51
51
  name: str,
52
- project_id: UUID,
52
+ project_id: UUID | str,
53
53
  schema: ModelSchema,
54
54
  spec: ModelSpec,
55
55
  input_type: str = ModelInputType.TABULAR,
@@ -188,15 +188,21 @@ class Model(
188
188
 
189
189
  @classmethod
190
190
  @handle_api_error
191
- def from_name(cls, name: str, project_name: str) -> Model:
192
- """Get the model instance using model name and project name."""
191
+ def from_name(cls, name: str, project_id: UUID | str) -> Model:
192
+ """
193
+ Get the model instance from model name within a project.
194
+
195
+ :param name: Model name
196
+ :param project_id: Project identifier
197
+ :return: Model instance
198
+ """
193
199
  _filter = QueryCondition(
194
200
  rules=[
195
201
  QueryRule(field='name', operator=OperatorType.EQUAL, value=name),
196
202
  QueryRule(
197
- field='project_name',
203
+ field='project_id',
198
204
  operator=OperatorType.EQUAL,
199
- value=project_name,
205
+ value=project_id,
200
206
  ),
201
207
  ]
202
208
  )
@@ -251,7 +257,7 @@ class Model(
251
257
  @handle_api_error
252
258
  def list(
253
259
  cls,
254
- project_id: UUID,
260
+ project_id: UUID | str,
255
261
  ) -> Iterator[ModelCompact]:
256
262
  """
257
263
  Get a list of all models with the given filters
@@ -308,7 +314,7 @@ class Model(
308
314
  cls,
309
315
  source: pd.DataFrame | Path | str,
310
316
  name: str,
311
- project_id: UUID,
317
+ project_id: UUID | str,
312
318
  spec: ModelSpec | None = None,
313
319
  input_type: str = ModelInputType.TABULAR,
314
320
  task: str = ModelTask.NOT_SET,
@@ -452,7 +458,7 @@ class Model(
452
458
 
453
459
  def add_surrogate(
454
460
  self,
455
- dataset_id: UUID,
461
+ dataset_id: UUID | str,
456
462
  deployment_params: DeploymentParams | None = None,
457
463
  ) -> Job:
458
464
  """
@@ -470,7 +476,7 @@ class Model(
470
476
  @handle_api_error
471
477
  def update_surrogate(
472
478
  self,
473
- dataset_id: UUID,
479
+ dataset_id: UUID | str,
474
480
  deployment_params: DeploymentParams | None = None,
475
481
  ) -> Job:
476
482
  """
@@ -93,7 +93,7 @@ class ModelArtifact(ConnectionMixin):
93
93
 
94
94
  def _artifact_deploy(
95
95
  self,
96
- file_id: UUID,
96
+ file_id: UUID | str,
97
97
  deployment_params: DeploymentParams | None = None,
98
98
  update: bool = False,
99
99
  ) -> Job:
@@ -18,7 +18,7 @@ class ModelDeployment(
18
18
  ): # pylint: disable=too-many-instance-attributes
19
19
  def __init__( # pylint: disable=too-many-arguments
20
20
  self,
21
- model_id: UUID,
21
+ model_id: UUID | str,
22
22
  ) -> None:
23
23
  """Construct a model deployment instance."""
24
24
  self.id: UUID | None = None # pylint: disable=invalid-name
@@ -110,7 +110,7 @@ class ModelDeployment(
110
110
  self._refresh_from_response(response=response)
111
111
 
112
112
  @classmethod
113
- def of(cls, model_id: UUID) -> ModelDeployment:
113
+ def of(cls, model_id: UUID | str) -> ModelDeployment:
114
114
  """
115
115
  Get model deployment instance of the given model
116
116
 
@@ -25,7 +25,7 @@ class Surrogate(ConnectionMixin):
25
25
 
26
26
  def _deploy(
27
27
  self,
28
- dataset_id: UUID,
28
+ dataset_id: UUID | str,
29
29
  deployment_params: DeploymentParams | None = None,
30
30
  update: bool = False,
31
31
  ) -> Job:
@@ -71,7 +71,7 @@ class Surrogate(ConnectionMixin):
71
71
  @handle_api_error
72
72
  def add(
73
73
  self,
74
- dataset_id: UUID,
74
+ dataset_id: UUID | str,
75
75
  deployment_params: DeploymentParams | None = None,
76
76
  ) -> Job:
77
77
  """
@@ -89,7 +89,7 @@ class Surrogate(ConnectionMixin):
89
89
  @handle_api_error
90
90
  def update(
91
91
  self,
92
- dataset_id: UUID,
92
+ dataset_id: UUID | str,
93
93
  deployment_params: DeploymentParams | None = None,
94
94
  ) -> Job:
95
95
  """
fiddler/entities/xai.py CHANGED
@@ -382,7 +382,7 @@ class XaiMixin:
382
382
  @handle_api_error
383
383
  def precompute_feature_impact( # pylint: disable=too-many-arguments
384
384
  self,
385
- dataset_id: UUID,
385
+ dataset_id: UUID | str,
386
386
  num_samples: int | None = None,
387
387
  num_iterations: int | None = None,
388
388
  num_refs: int | None = None,
@@ -444,7 +444,7 @@ class XaiMixin:
444
444
  @handle_api_error
445
445
  def precompute_feature_importance( # pylint: disable=too-many-arguments
446
446
  self,
447
- dataset_id: UUID,
447
+ dataset_id: UUID | str,
448
448
  num_samples: int | None = None,
449
449
  num_iterations: int | None = None,
450
450
  num_refs: int | None = None,
@@ -528,7 +528,7 @@ class XaiMixin:
528
528
  @handle_api_error
529
529
  def precompute_predictions(
530
530
  self,
531
- dataset_id: UUID,
531
+ dataset_id: UUID | str,
532
532
  chunk_size: int | None = None,
533
533
  update: bool = False,
534
534
  ) -> Job:
@@ -24,8 +24,8 @@ class BaselineResp(BaseModel):
24
24
  type: str
25
25
  start_time: Optional[int]
26
26
  end_time: Optional[int]
27
- offset: Optional[int]
28
- window_size: Optional[int]
27
+ offset_delta: Optional[int]
28
+ window_bin_size: Optional[str]
29
29
  row_count: Optional[int]
30
30
 
31
31
  model: ModelCompactResp
@@ -29,8 +29,8 @@ API_RESPONSE_200 = {
29
29
  'type': 'STATIC',
30
30
  'start_time': None,
31
31
  'end_time': None,
32
- 'offset': None,
33
- 'window_size': None,
32
+ 'offset_delta': None,
33
+ 'window_bin_size': None,
34
34
  'row_count': 20000,
35
35
  'model': {
36
36
  'id': MODEL_ID,
@@ -80,8 +80,8 @@ LIST_API_RESPONSE = {
80
80
  'type': 'STATIC',
81
81
  'start_time': None,
82
82
  'end_time': None,
83
- 'offset': None,
84
- 'window_size': None,
83
+ 'offset_delta': None,
84
+ 'window_bin_size': None,
85
85
  'row_count': 20000,
86
86
  'model': {
87
87
  'id': MODEL_ID,
@@ -160,7 +160,7 @@ def test_get_baseline_not_found() -> None:
160
160
  @responses.activate
161
161
  def test_baseline_from_name() -> None:
162
162
  params = {
163
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "test_baseline"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}]}'
163
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "test_baseline"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
164
164
  }
165
165
 
166
166
  responses.get(
@@ -170,8 +170,7 @@ def test_baseline_from_name() -> None:
170
170
  )
171
171
  baseline = Baseline.from_name(
172
172
  name=BASELINE_NAME,
173
- model_name=MODEL_NAME,
174
- project_name=PROJECT_NAME,
173
+ model_id=MODEL_ID,
175
174
  )
176
175
  assert isinstance(baseline, Baseline)
177
176
 
@@ -184,7 +183,7 @@ def test_baseline_from_name_not_found() -> None:
184
183
  resp['data']['items'] = []
185
184
 
186
185
  params = {
187
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "test_baseline"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}]}'
186
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "test_baseline"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
188
187
  }
189
188
 
190
189
  responses.get(
@@ -195,8 +194,7 @@ def test_baseline_from_name_not_found() -> None:
195
194
  with pytest.raises(NotFound):
196
195
  Baseline.from_name(
197
196
  name=BASELINE_NAME,
198
- model_name=MODEL_NAME,
199
- project_name=PROJECT_NAME,
197
+ model_id=MODEL_ID,
200
198
  )
201
199
 
202
200
 
@@ -187,7 +187,7 @@ def test_get_not_found() -> None:
187
187
  @responses.activate
188
188
  def test_from_name() -> None:
189
189
  params = {
190
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "xyzabc"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}]}'
190
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "xyzabc"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
191
191
  }
192
192
 
193
193
  responses.get(
@@ -195,18 +195,14 @@ def test_from_name() -> None:
195
195
  json=API_RESPONSE_FROM_NAME,
196
196
  match=[matchers.query_param_matcher(params)],
197
197
  )
198
- custom_metric = CustomMetric.from_name(
199
- name=CUSTOM_METRIC_NAME,
200
- model_name=MODEL_NAME,
201
- project_name=PROJECT_NAME,
202
- )
198
+ custom_metric = CustomMetric.from_name(name=CUSTOM_METRIC_NAME, model_id=MODEL_ID)
203
199
  assert isinstance(custom_metric, CustomMetric)
204
200
 
205
201
 
206
202
  @responses.activate
207
203
  def test_from_name_not_found() -> None:
208
204
  params = {
209
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "xyzabc"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}]}'
205
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "xyzabc"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
210
206
  }
211
207
  responses.get(
212
208
  url=f'{URL}/v3/custom-metrics',
@@ -214,11 +210,7 @@ def test_from_name_not_found() -> None:
214
210
  match=[matchers.query_param_matcher(params)],
215
211
  )
216
212
  with pytest.raises(NotFound):
217
- CustomMetric.from_name(
218
- name=CUSTOM_METRIC_NAME,
219
- model_name=MODEL_NAME,
220
- project_name=PROJECT_NAME,
221
- )
213
+ CustomMetric.from_name(name=CUSTOM_METRIC_NAME, model_id=MODEL_ID)
222
214
 
223
215
 
224
216
  @responses.activate
@@ -111,18 +111,14 @@ def test_get_dataset_not_found() -> None:
111
111
  @responses.activate
112
112
  def test_dataset_from_name() -> None:
113
113
  params = {
114
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "dataset3"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}]}'
114
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "dataset3"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
115
115
  }
116
116
  responses.get(
117
117
  url=f'{URL}/v3/environments',
118
118
  json=API_RESPONSE_FROM_NAME,
119
119
  match=[matchers.query_param_matcher(params)],
120
120
  )
121
- dataset = Dataset.from_name(
122
- name=DATASET_NAME,
123
- model_name=MODEL_NAME,
124
- project_name=PROJECT_NAME,
125
- )
121
+ dataset = Dataset.from_name(name=DATASET_NAME, model_id=MODEL_ID)
126
122
  assert isinstance(dataset, Dataset)
127
123
 
128
124
 
@@ -134,7 +130,7 @@ def test_dataset_from_name_not_found() -> None:
134
130
  resp['data']['items'] = []
135
131
 
136
132
  params = {
137
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "dataset3"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}]}'
133
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "dataset3"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
138
134
  }
139
135
  responses.get(
140
136
  url=f'{URL}/v3/environments',
@@ -144,8 +140,7 @@ def test_dataset_from_name_not_found() -> None:
144
140
  with pytest.raises(NotFound):
145
141
  Dataset.from_name(
146
142
  name=DATASET_NAME,
147
- model_name=MODEL_NAME,
148
- project_name=PROJECT_NAME,
143
+ model_id=MODEL_ID,
149
144
  )
150
145
 
151
146
 
@@ -350,7 +350,7 @@ def test_get_model_not_found() -> None:
350
350
  @responses.activate
351
351
  def test_model_from_name_success() -> None:
352
352
  params = {
353
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "bank_churn"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}]}'
353
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "bank_churn"}, {"field": "project_id", "operator": "equal", "value": "1531bfd9-2ca2-4a7b-bb5a-136c8da09ca1"}]}'
354
354
  }
355
355
  responses.get(
356
356
  url=f'{URL}/v3/models',
@@ -361,7 +361,7 @@ def test_model_from_name_success() -> None:
361
361
  url=f'{URL}/v3/models/{MODEL_ID}',
362
362
  json=API_RESPONSE_200,
363
363
  )
364
- model = Model.from_name(name=MODEL_NAME, project_name=PROJECT_NAME)
364
+ model = Model.from_name(name=MODEL_NAME, project_id=PROJECT_ID)
365
365
  assert isinstance(model, Model)
366
366
 
367
367
 
@@ -373,7 +373,7 @@ def test_model_from_name_not_found() -> None:
373
373
  resp['data']['items'] = []
374
374
 
375
375
  params = {
376
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "bank_churn"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}]}'
376
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "bank_churn"}, {"field": "project_id", "operator": "equal", "value": "1531bfd9-2ca2-4a7b-bb5a-136c8da09ca1"}]}'
377
377
  }
378
378
  responses.get(
379
379
  url=f'{URL}/v3/models',
@@ -382,7 +382,7 @@ def test_model_from_name_not_found() -> None:
382
382
  )
383
383
 
384
384
  with pytest.raises(NotFound):
385
- Model.from_name(name=MODEL_NAME, project_name=PROJECT_NAME)
385
+ Model.from_name(name=MODEL_NAME, project_id=PROJECT_ID)
386
386
 
387
387
 
388
388
  @responses.activate
@@ -187,7 +187,7 @@ def test_get_segment_not_found() -> None:
187
187
  @responses.activate
188
188
  def test_segment_from_name() -> None:
189
189
  params = {
190
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "age < 50"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}]}'
190
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "age < 50"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
191
191
  }
192
192
 
193
193
  responses.get(
@@ -195,18 +195,14 @@ def test_segment_from_name() -> None:
195
195
  json=API_RESPONSE_FROM_NAME,
196
196
  match=[matchers.query_param_matcher(params)],
197
197
  )
198
- segment = Segment.from_name(
199
- name=SEGMENT_NAME,
200
- model_name=MODEL_NAME,
201
- project_name=PROJECT_NAME,
202
- )
198
+ segment = Segment.from_name(name=SEGMENT_NAME, model_id=MODEL_ID)
203
199
  assert isinstance(segment, Segment)
204
200
 
205
201
 
206
202
  @responses.activate
207
203
  def test_segment_from_name_not_found() -> None:
208
204
  params = {
209
- 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "age < 50"}, {"field": "model_name", "operator": "equal", "value": "bank_churn"}, {"field": "project_name", "operator": "equal", "value": "bank_churn"}]}'
205
+ 'filter': '{"condition": "AND", "rules": [{"field": "name", "operator": "equal", "value": "age < 50"}, {"field": "model_id", "operator": "equal", "value": "4531bfd9-2ca2-4a7b-bb5a-136c8da09ca2"}]}'
210
206
  }
211
207
  responses.get(
212
208
  url=f'{URL}/v3/segments',
@@ -214,11 +210,7 @@ def test_segment_from_name_not_found() -> None:
214
210
  match=[matchers.query_param_matcher(params)],
215
211
  )
216
212
  with pytest.raises(NotFound):
217
- Segment.from_name(
218
- name=SEGMENT_NAME,
219
- model_name=MODEL_NAME,
220
- project_name=PROJECT_NAME,
221
- )
213
+ Segment.from_name(name=SEGMENT_NAME, model_id=MODEL_ID)
222
214
 
223
215
 
224
216
  @responses.activate
fiddler/tests/conftest.py CHANGED
@@ -26,5 +26,5 @@ def connection(session_mocker: MockerFixture) -> Connection:
26
26
  }
27
27
  )
28
28
  session_mocker.patch.object(conn, '_get_server_info', return_value=server_info)
29
- session_mocker.patch('fiddler.connection.connection', conn)
29
+ session_mocker.patch('fiddler.conn', conn)
30
30
  yield conn
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.0.0.dev9
3
+ Version: 3.0.0.dev11
4
4
  Summary: Python client for Fiddler Platform
5
5
  Home-page: https://fiddler.ai
6
6
  Author: Fiddler Labs
@@ -1,13 +1,13 @@
1
- fiddler/VERSION,sha256=TJiIUZ-Srnlyku453-T7JqMjbOAmelYAJcCR9tmyfyY,11
2
- fiddler/__init__.py,sha256=b-mdEuXePogtxmehLezysrqfEyceEk9p-H2GRjLfRZ4,3382
1
+ fiddler/VERSION,sha256=Zy-VL8bKtcNX3_gVgHrczzfTJnh1vayeI3eM8vYB1HU,12
2
+ fiddler/__init__.py,sha256=U9g19CmjOoli4bMAcD_LD-qTmFFBG3uCCIFm34vcTac,3757
3
3
  fiddler/configs.py,sha256=ZimSo0Gk7j1BFkjDHdRdycrGZ8oh-7G5TBXYiOh1HvU,217
4
- fiddler/connection.py,sha256=pYaOyyJytsljofaMyRPV-Vs_i4wHKO48BxIJMqEBxHg,5760
4
+ fiddler/connection.py,sha256=fLdSXpu5dwoK-h4Vtc9nbdKENOJ7jfEmrnDhVAtChck,5677
5
5
  fiddler/decorators.py,sha256=tWZliQQeUGwY0rU52FO9JXuOBueQXVEJywEbrgUEw1U,1820
6
6
  fiddler/exceptions.py,sha256=T4ZpkTYPbnWvUX7y5XehnCyHqQPj3qqsIDKCZQNtaIE,2221
7
7
  fiddler/version.py,sha256=8fyg3UhFpqghMpxbtYIwNcB1lhCG6yTkPBbDS7IrwxY,140
8
8
  fiddler/constants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  fiddler/constants/alert_rule.py,sha256=cmFq-VKAlQbRKEkTtMmVNdD5R52uMI2zJai6TESFwfs,512
10
- fiddler/constants/baseline.py,sha256=NhmiGf73gy2IHKKpbm64HCE4eJfbxkAPy3uk_Z-6qSo,321
10
+ fiddler/constants/baseline.py,sha256=uUk63ORFE1Q1-nRlWFUJeF-Zeg0udvfmXs3DWFk3fwc,233
11
11
  fiddler/constants/common.py,sha256=GCW9rzqPkOIcC80j98sKPqxBr8vPLbJ2TrelKaV30yw,400
12
12
  fiddler/constants/dataset.py,sha256=ZxPmzycSlrKpUYShpfTDqfmz8LAebzyBtIV_dBy-pRI,126
13
13
  fiddler/constants/events.py,sha256=3SgjNo4IS-_Nod8wbj98di4B4GctF9R414MZxfQ4MkU,114
@@ -17,23 +17,23 @@ fiddler/constants/model_deployment.py,sha256=SfagLKVD7tK1QmYQFJLDrA4-6FaSeNF6tik
17
17
  fiddler/constants/xai.py,sha256=GR8VguB6FTfMJZ291FIbfDsY4S9BGOft3VxNW5jMf90,214
18
18
  fiddler/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  fiddler/entities/alert_record.py,sha256=RcDACWDNpntkiId-JpkLQvVeIbuaZAzn6AWl2zYIh9A,3564
20
- fiddler/entities/alert_rule.py,sha256=E74T87fhFmH9H5iRpX50Ag2wm4K05ovjt5C-7tMIHJk,11557
20
+ fiddler/entities/alert_rule.py,sha256=kLrK1U96gzN8I5G-hTTMmrIA0TywHVt-kb7CipgqjqE,11569
21
21
  fiddler/entities/base.py,sha256=YCTLt1ta8UbD7u-5BW7v_ocA4S7LevEncI5XPS_SB60,2106
22
- fiddler/entities/baseline.py,sha256=vABtLDKitOhCbyFkK2Kyr177M6bjw5GVxbvnLgcqPSo,8028
23
- fiddler/entities/custom_expression.py,sha256=YoI6sXF3qFh883bcH46wbsXTacM7xKNNSSxR6BJCABY,6827
24
- fiddler/entities/dataset.py,sha256=slaqF5StcpFY-66Ww7zA7pnItxNj3FMKi9OeJiHLXac,4661
22
+ fiddler/entities/baseline.py,sha256=k3D-K8WC5MkHDILyejRaH1v9jdCIymT96McDBOVQ9A0,7907
23
+ fiddler/entities/custom_expression.py,sha256=SdS61JiI0gOxWwHAGxkHh1vqS5XsRtyeNSDs5E-Sg2U,6568
24
+ fiddler/entities/dataset.py,sha256=kwD1pZMG6DQGIjejU7A2KUUBRgOi0o1qbbUX-PSlnGg,4399
25
25
  fiddler/entities/events.py,sha256=usFxs8Cq0ds1MIrOjZT5jVt3XDXMdGYakOoNFnTFQ8Y,4370
26
26
  fiddler/entities/file.py,sha256=dk8ISfjy0--F2eF23Ae8vGiEZmJW6e9LMqNmKfrY2mE,4710
27
27
  fiddler/entities/job.py,sha256=Feiqo6ns4bRcp2uaV-kuGYAKs90-aYXvzqqi1yLivYE,5220
28
- fiddler/entities/model.py,sha256=eTrhdK-JM9ziSNKBrxY9SoPUauWkXavlPlm3eQa1nm4,16723
29
- fiddler/entities/model_artifact.py,sha256=ktyFkg-nUPtdpSUGNXHfLOwSMiBaaRkdU0s9DQ67lLs,5514
30
- fiddler/entities/model_deployment.py,sha256=JefFd7uUgPaxWhtVTJZqTMCLWz_18DM8o2zZmY_Hn6c,3757
28
+ fiddler/entities/model.py,sha256=J1DoDMZptaOac64LJ_pRmuD2wJ1Wk88SAKA6bSg0W8g,16882
29
+ fiddler/entities/model_artifact.py,sha256=Y7o1mFs-nVDz7HI9mVBu9ICwkqGD_QbT3q6vf8KKesk,5520
30
+ fiddler/entities/model_deployment.py,sha256=mxEsMYiUO-m9X1ND7UuJ1b3LgEcyvOM5PMEmRvOuftk,3769
31
31
  fiddler/entities/organization.py,sha256=XvUAdBUOYXzdmblxIs4hi0mAg45NtAwy5DBaMiqi47o,1074
32
32
  fiddler/entities/project.py,sha256=G5omjjKHEjvhenMvW-R0bYwrkRVHixIOhTPZb1pS7FI,4631
33
- fiddler/entities/surrogate.py,sha256=7sbKrKaoDWgAylJrAZbRDbmclXngfUQ08RUO3NQW59I,3059
33
+ fiddler/entities/surrogate.py,sha256=94RkJmv8uwNhRL8PaliuiRv-R0EXDMKJTimE9boXKwQ,3077
34
34
  fiddler/entities/user.py,sha256=ev_Xx9QHAdEHYzNDafzQihXOcD8ME5XkpKgc8MiqCnw,1243
35
35
  fiddler/entities/webhook.py,sha256=I-mcl92Tg2-oUUqNMOeDPBe0XawVYhNcTGXHBway7_A,3798
36
- fiddler/entities/xai.py,sha256=t5LOOWRtr0KnNJHOPfdhrH1WdNT6MBpAZoQ8Teiu9a8,20232
36
+ fiddler/entities/xai.py,sha256=tJ5HQnaV_svR7do1secIIIvQ0ckJMnW0xjoThn8Cz6s,20250
37
37
  fiddler/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  fiddler/libs/http_client.py,sha256=bl2V-q66NoPHm950CiDqOoF-kCPztYWUYNy9hVUsbqg,6027
39
39
  fiddler/libs/json_encoder.py,sha256=brsrWySvtZdaBArIkqKM5WwJUbvZf6ZbKozn1CewjOc,512
@@ -47,7 +47,7 @@ fiddler/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  fiddler/schemas/alert_record.py,sha256=Edfe264zUwqF856tMblN85CsEa_wn9oZCoLruvsNAbo,668
48
48
  fiddler/schemas/alert_rule.py,sha256=-V0AibEImrfcEZfJ4J_Ed5SuZISOGsk-nIoVlX5mOOg,1222
49
49
  fiddler/schemas/base.py,sha256=upzAmneEz169h_w-UDH_tY0Abo7DeK68YOZ5qVwIMa8,189
50
- fiddler/schemas/baseline.py,sha256=0z7ohzDmUKENmlVZDFx4vB-0SRVTOKaeM1N-pDSCIDk,923
50
+ fiddler/schemas/baseline.py,sha256=tBQji1GLYt0ZYgEK6ZTmXxk5nUYTI6oxMmSjNXnRfWw,933
51
51
  fiddler/schemas/custom_expression.py,sha256=6Y4Q89HIOjUwVS9u9-wMAXvcPMmtQ7puLEkx27Gr-wY,844
52
52
  fiddler/schemas/custom_features.py,sha256=G0UqikCyvhnLg6oUAutvq4mEsGgVcLkPlJaMCbRZj68,5382
53
53
  fiddler/schemas/dataset.py,sha256=rGmpMrMfPLSs9d3_sxDTjrKqWp-o-bCe9pf_nlYyHfw,657
@@ -69,7 +69,7 @@ fiddler/schemas/webhook.py,sha256=Utg1wRylr5L0CYc47k7iLQdlVCL0L6S29jVntNwMzbA,46
69
69
  fiddler/schemas/xai.py,sha256=AZbjjBlTDZbQGj3U-pTM1UX_LJltjy__2t-kM2v5FuY,739
70
70
  fiddler/schemas/xai_params.py,sha256=7WbUCBojzZckjOA2NUxnk5y3M2WKKXclSzkt5HBfyUU,313
71
71
  fiddler/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- fiddler/tests/conftest.py,sha256=xmKmq9h2VBqwknL9CE1EUF9uRMQRNmjDPCJszabhf2U,857
72
+ fiddler/tests/conftest.py,sha256=Dmz9FKAFHYdq1AWmcY7NES9pU4cbY9qKWQiojjaX_0E,840
73
73
  fiddler/tests/constants.py,sha256=-_uoidMv6eQ-ldHCN5u_uBXuX3aS4YuylaUSbBfGHYY,1081
74
74
  fiddler/tests/test_connection.py,sha256=d8WoB0QRZEObWfeRAZRXRm1kw9wfEysmeo4Bld7x8js,1865
75
75
  fiddler/tests/test_json_encoder.py,sha256=GJeFT5tTA4RTfZn1q2xm1V5SEj5DNsW3LeHPVfFxcFw,783
@@ -79,20 +79,20 @@ fiddler/tests/utils.py,sha256=FEDbASW4pYZktdEK2FLnIDyZCwBzpb60m6EzkvOkwSc,335
79
79
  fiddler/tests/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  fiddler/tests/apis/test_alert_record.py,sha256=_0EBRDn87TqTiO1KYEHKQQVtVZjj4lYjbt8Ix-RRTSg,3118
81
81
  fiddler/tests/apis/test_alert_rule.py,sha256=3fmcxiGXOokMqFRWo5w4CL4m0k6rCnG17ZRfj1wlZ04,11231
82
- fiddler/tests/apis/test_baseline.py,sha256=YEJZ-MA8ze-aWUiWjqtq_YeXpOCo8eAqjji0KoHjx3g,7650
83
- fiddler/tests/apis/test_custom_metric.py,sha256=RjaIGGUruIJI1vvGho60xHJwqLmuxDGAME12IQ9etjk,8442
84
- fiddler/tests/apis/test_dataset.py,sha256=iFbaiCYmjIMfUDeGhDJEF2L50v2i_uoBJi3BiTJFdeM,4835
82
+ fiddler/tests/apis/test_baseline.py,sha256=R_vvbZdSenpYMSydurENJrE_uNWE3sJR9sHJksfU_Jk,7494
83
+ fiddler/tests/apis/test_custom_metric.py,sha256=QlNa80M9PxqaqzW-3nCtH5kKLRHYu2iqFDautBusbos,8208
84
+ fiddler/tests/apis/test_dataset.py,sha256=1Xc9Ng91fLMc2C6dpKfse42fQ0anza3ZOKOD1TqCvTQ,4636
85
85
  fiddler/tests/apis/test_events.py,sha256=e5sd3dIfMPyHoX-jX1QjCP90D-2ijJq1NERGbbfmSls,4510
86
86
  fiddler/tests/apis/test_files.py,sha256=-BisPck7bHMSW3N40ffdQJe027Qe3079tjTlU2OI9DU,4501
87
87
  fiddler/tests/apis/test_generate_model.py,sha256=-MtCnW4sntm7W9c12R9eorIUqEnBq5K_FqhSqdhInJE,4970
88
88
  fiddler/tests/apis/test_job.py,sha256=GlJXhxK60q9u5QJ6ToLrw4y1G3M0DzAAR2u-JDbk3D0,1891
89
89
  fiddler/tests/apis/test_mixin.py,sha256=CmiyAch8Mzoi3Jru-8PWVxWlX-y30WMuoymSc9QXFwc,2453
90
- fiddler/tests/apis/test_model.py,sha256=zs0Px61P9Yl9RGL_BxHtecHqqY9K-uK0UFMpghsM1zM,14652
90
+ fiddler/tests/apis/test_model.py,sha256=1ufNtCfEzoiVaP1dxCOCBpI8e0dBt81JuZY8kkdGnI4,14692
91
91
  fiddler/tests/apis/test_model_artifact.py,sha256=oQVasstDc41EesAzN39wCTZi7KtpeQdVcGcLxERjmw0,5635
92
92
  fiddler/tests/apis/test_model_deployment.py,sha256=AWGdbepFrU3qT17XAZC68n8LlXh7OKNqSwg3_ug9G5I,2441
93
93
  fiddler/tests/apis/test_model_surrogate.py,sha256=h3OPgD1-_n6gTd0YH_hDcBBRjBfXv1xUsZxNWUU69KQ,4443
94
94
  fiddler/tests/apis/test_project.py,sha256=IEYT3imD4dZJg-OT888G4jQJ_AxxHN5_VkCHcmwUnGA,6015
95
- fiddler/tests/apis/test_segment.py,sha256=9OOe-jS7BVuuxtZ0hXraldELU1BU9p4herYPwZmeBHQ,8038
95
+ fiddler/tests/apis/test_segment.py,sha256=hQiXpZEKLJrnlRBLLMsP3jph8H8K7AEUw17sMK6BuF8,7804
96
96
  fiddler/tests/apis/test_webhook.py,sha256=DTaEI9r2lossAaXb3b1CX4C8L3bYAzZmLIWH8VeauUs,6440
97
97
  fiddler/tests/apis/test_xai.py,sha256=5TzRv3jSTn2xi3qpwPyKyybEVjHcSyszSHTLzuXU30s,28537
98
98
  fiddler/utils/__init__.py,sha256=ooAJR6_tVaF6UKZriz5ynZPj8IeCzaDIPKV23F-e4Fk,53
@@ -101,8 +101,8 @@ fiddler/utils/logger.py,sha256=FdJ3LkS9dbRjWsw5oJmNNsd7q0XRVEIvx5-TWys7L0k,669
101
101
  fiddler/utils/model_generator.py,sha256=TwQMQDpy-0gcq6HyL68s37N-sk_nGPq33mmppK6i7hI,2203
102
102
  fiddler/utils/validations.py,sha256=i8NtgrpCsitq6BPa5lygpKDh07oaOXu7PAlCIcMvqzY,408
103
103
  fiddler/utils/version.py,sha256=iC8Ry7UFl9EJW_xU1WbzO_l4yK6V7eQ6U5exB3xT864,531
104
- fiddler_client-3.0.0.dev9.dist-info/LICENSE.txt,sha256=w8-LUAb_VLBWSsCNmih0pAqLIicJfGu8OJXpDjkIg_o,559
105
- fiddler_client-3.0.0.dev9.dist-info/METADATA,sha256=qo9YKNI2Okx54ayMGxniN_2VogrYXmFSkPxvnrtTsps,20679
106
- fiddler_client-3.0.0.dev9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
107
- fiddler_client-3.0.0.dev9.dist-info/top_level.txt,sha256=ndC6LqvKmrTTs8czRlBOYdYgSqZbHuMf0zHt_HWpzzk,8
108
- fiddler_client-3.0.0.dev9.dist-info/RECORD,,
104
+ fiddler_client-3.0.0.dev11.dist-info/LICENSE.txt,sha256=w8-LUAb_VLBWSsCNmih0pAqLIicJfGu8OJXpDjkIg_o,559
105
+ fiddler_client-3.0.0.dev11.dist-info/METADATA,sha256=Ha9dP-B101vAF7-vRD9XaunsA-cLZtArZWkLQe9EJJw,20680
106
+ fiddler_client-3.0.0.dev11.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
107
+ fiddler_client-3.0.0.dev11.dist-info/top_level.txt,sha256=ndC6LqvKmrTTs8czRlBOYdYgSqZbHuMf0zHt_HWpzzk,8
108
+ fiddler_client-3.0.0.dev11.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5