fiddler-client 3.1.0.dev1__tar.gz → 3.1.0.dev2__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.
- fiddler-client-3.1.0.dev2/PKG-INFO +45 -0
- fiddler-client-3.1.0.dev2/PUBLIC.md +22 -0
- fiddler-client-3.1.0.dev2/fiddler/VERSION +1 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/model.py +6 -1
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/custom_features.py +30 -29
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/model.py +1 -0
- fiddler-client-3.1.0.dev2/fiddler/schemas/model_spec.py +32 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_mixin.py +4 -1
- fiddler-client-3.1.0.dev2/fiddler_client.egg-info/PKG-INFO +45 -0
- fiddler-client-3.1.0.dev1/PKG-INFO +0 -538
- fiddler-client-3.1.0.dev1/PUBLIC.md +0 -515
- fiddler-client-3.1.0.dev1/fiddler/VERSION +0 -1
- fiddler-client-3.1.0.dev1/fiddler/schemas/model_spec.py +0 -30
- fiddler-client-3.1.0.dev1/fiddler_client.egg-info/PKG-INFO +0 -538
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/LICENSE.txt +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/MANIFEST.in +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/README.md +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/configs.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/connection.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/alert_rule.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/baseline.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/common.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/dataset.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/events.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/job.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/model.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/model_deployment.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/constants/xai.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/decorators.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/alert_record.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/alert_rule.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/base.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/baseline.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/custom_expression.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/dataset.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/events.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/file.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/job.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/model_artifact.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/model_deployment.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/organization.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/project.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/surrogate.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/user.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/webhook.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/entities/xai.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/exceptions.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/libs/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/libs/http_client.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/libs/json_encoder.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/libs/semver.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/packtools/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/packtools/gem.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/packtools/keras_ig_helpers.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/packtools/project_attributions_helpers.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/packtools/template_model.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/alert_record.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/alert_rule.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/base.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/baseline.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/custom_expression.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/dataset.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/events.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/file.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/filter_query.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/job.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/model_deployment.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/model_schema.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/model_task_params.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/organization.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/project.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/response.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/server_info.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/user.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/webhook.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/xai.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/schemas/xai_params.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_alert_record.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_alert_rule.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_baseline.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_custom_metric.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_dataset.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_events.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_files.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_generate_model.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_job.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_model.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_model_artifact.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_model_deployment.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_model_surrogate.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_project.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_segment.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_webhook.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/apis/test_xai.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/conftest.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/constants.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/test_connection.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/test_json_encoder.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/test_logger.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/test_utils.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/tests/utils.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/utils/__init__.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/utils/helpers.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/utils/logger.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/utils/model_generator.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/utils/validations.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/utils/version.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler/version.py +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler_client.egg-info/SOURCES.txt +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler_client.egg-info/dependency_links.txt +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler_client.egg-info/requires.txt +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/fiddler_client.egg-info/top_level.txt +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/setup.cfg +0 -0
- {fiddler-client-3.1.0.dev1 → fiddler-client-3.1.0.dev2}/setup.py +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: fiddler-client
|
|
3
|
+
Version: 3.1.0.dev2
|
|
4
|
+
Summary: Python client for Fiddler Platform
|
|
5
|
+
Home-page: https://fiddler.ai
|
|
6
|
+
Author: Fiddler Labs
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >3.8.0
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE.txt
|
|
13
|
+
Requires-Dist: pip>=21.0
|
|
14
|
+
Requires-Dist: requests<3
|
|
15
|
+
Requires-Dist: requests-toolbelt
|
|
16
|
+
Requires-Dist: pandas>=1.2.5
|
|
17
|
+
Requires-Dist: pydantic<2,>=1.9.0
|
|
18
|
+
Requires-Dist: deprecated==1.2.13
|
|
19
|
+
Requires-Dist: tqdm
|
|
20
|
+
Requires-Dist: simplejson>=3.17.0
|
|
21
|
+
Requires-Dist: pyarrow>=7.0.0
|
|
22
|
+
Requires-Dist: pyyaml
|
|
23
|
+
|
|
24
|
+
Fiddler Client
|
|
25
|
+
=============
|
|
26
|
+
|
|
27
|
+
Python client for interacting with Fiddler. Provides a user-friendly interface to our REST API and enables event
|
|
28
|
+
publishing for use with our monitoring features.
|
|
29
|
+
|
|
30
|
+
Requirements
|
|
31
|
+
------------
|
|
32
|
+
Requires Python >= Python-3.6.3 and pip >= 19.0
|
|
33
|
+
|
|
34
|
+
Installation
|
|
35
|
+
------------
|
|
36
|
+
|
|
37
|
+
$ pip3 install fiddler-client
|
|
38
|
+
|
|
39
|
+
API Example Usage
|
|
40
|
+
-------------
|
|
41
|
+
Documentation for the API can be found [here](https://docs.fiddler.ai/reference/about-the-fiddler-client). For examples of interacting with our APIs, please check out our [Quick Start Guide](https://docs.fiddler.ai/docs/quick-start) as well as the notebooks found on our [Examples Github](https://github.com/fiddler-labs/fiddler-examples).
|
|
42
|
+
|
|
43
|
+
Version History
|
|
44
|
+
-------------
|
|
45
|
+
Version history is available on [Fiddler documentation page](https://docs.fiddler.ai/page/python-client-version-history).
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Fiddler Client
|
|
2
|
+
=============
|
|
3
|
+
|
|
4
|
+
Python client for interacting with Fiddler. Provides a user-friendly interface to our REST API and enables event
|
|
5
|
+
publishing for use with our monitoring features.
|
|
6
|
+
|
|
7
|
+
Requirements
|
|
8
|
+
------------
|
|
9
|
+
Requires Python >= Python-3.6.3 and pip >= 19.0
|
|
10
|
+
|
|
11
|
+
Installation
|
|
12
|
+
------------
|
|
13
|
+
|
|
14
|
+
$ pip3 install fiddler-client
|
|
15
|
+
|
|
16
|
+
API Example Usage
|
|
17
|
+
-------------
|
|
18
|
+
Documentation for the API can be found [here](https://docs.fiddler.ai/reference/about-the-fiddler-client). For examples of interacting with our APIs, please check out our [Quick Start Guide](https://docs.fiddler.ai/docs/quick-start) as well as the notebooks found on our [Examples Github](https://github.com/fiddler-labs/fiddler-examples).
|
|
19
|
+
|
|
20
|
+
Version History
|
|
21
|
+
-------------
|
|
22
|
+
Version history is available on [Fiddler documentation page](https://docs.fiddler.ai/page/python-client-version-history).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.1.0.dev2
|
|
@@ -548,6 +548,7 @@ class Model(
|
|
|
548
548
|
class ModelCompact:
|
|
549
549
|
id: UUID
|
|
550
550
|
name: str
|
|
551
|
+
version: str | None = None
|
|
551
552
|
|
|
552
553
|
def fetch(self) -> Model:
|
|
553
554
|
"""Fetch model instance"""
|
|
@@ -565,4 +566,8 @@ class ModelCompactMixin:
|
|
|
565
566
|
'response.'
|
|
566
567
|
)
|
|
567
568
|
|
|
568
|
-
return ModelCompact(
|
|
569
|
+
return ModelCompact(
|
|
570
|
+
id=response.model.id,
|
|
571
|
+
name=response.model.name,
|
|
572
|
+
version=response.model.version,
|
|
573
|
+
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Any, Dict, List, Optional, Type, TypeVar
|
|
1
|
+
from typing import Any, Dict, List, Optional, Type, TypeVar, Literal
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel, validator
|
|
4
4
|
|
|
@@ -10,18 +10,12 @@ CustomFeatureTypeVar = TypeVar('CustomFeatureTypeVar', bound='CustomFeature')
|
|
|
10
10
|
|
|
11
11
|
class CustomFeature(BaseModel):
|
|
12
12
|
name: str
|
|
13
|
-
type:
|
|
14
|
-
n_clusters: Optional[int] = DEFAULT_NUM_CLUSTERS
|
|
15
|
-
centroids: Optional[List] = None
|
|
16
|
-
|
|
17
|
-
@validator('n_clusters')
|
|
18
|
-
def validate_n_clusters(cls, value: int) -> int: # noqa: N805
|
|
19
|
-
if value < 0:
|
|
20
|
-
raise ValueError('n_clusters must be greater than 0')
|
|
21
|
-
return value
|
|
13
|
+
type: Any
|
|
22
14
|
|
|
23
15
|
class Config:
|
|
24
16
|
allow_mutation = False
|
|
17
|
+
use_enum_values = True
|
|
18
|
+
discriminator = 'type'
|
|
25
19
|
|
|
26
20
|
@classmethod
|
|
27
21
|
def from_columns(
|
|
@@ -53,12 +47,13 @@ class CustomFeature(BaseModel):
|
|
|
53
47
|
return_dict: Dict[str, Any] = {
|
|
54
48
|
'name': self.name,
|
|
55
49
|
'type': self.type.value,
|
|
56
|
-
'n_clusters': self.n_clusters,
|
|
57
50
|
}
|
|
58
51
|
if isinstance(self, Multivariate):
|
|
59
52
|
return_dict['columns'] = self.columns
|
|
53
|
+
return_dict['n_clusters'] = self.n_clusters
|
|
60
54
|
elif isinstance(self, VectorFeature):
|
|
61
55
|
return_dict['column'] = self.column
|
|
56
|
+
return_dict['n_clusters'] = self.n_clusters
|
|
62
57
|
if isinstance(self, (ImageEmbedding, TextEmbedding)):
|
|
63
58
|
return_dict['source_column'] = self.source_column
|
|
64
59
|
if isinstance(self, TextEmbedding):
|
|
@@ -74,7 +69,9 @@ class CustomFeature(BaseModel):
|
|
|
74
69
|
|
|
75
70
|
|
|
76
71
|
class Multivariate(CustomFeature):
|
|
77
|
-
type:
|
|
72
|
+
type: Literal['FROM_COLUMNS'] = CustomFeatureType.FROM_COLUMNS.value
|
|
73
|
+
n_clusters: Optional[int] = DEFAULT_NUM_CLUSTERS
|
|
74
|
+
centroids: Optional[List] = None
|
|
78
75
|
columns: List[str]
|
|
79
76
|
monitor_components: bool = False
|
|
80
77
|
|
|
@@ -84,22 +81,31 @@ class Multivariate(CustomFeature):
|
|
|
84
81
|
raise ValueError('Multivariate columns must be greater than 1')
|
|
85
82
|
return value
|
|
86
83
|
|
|
84
|
+
@validator('n_clusters')
|
|
85
|
+
def validate_n_clusters(cls, value: int) -> int: # noqa: N805
|
|
86
|
+
if value < 0:
|
|
87
|
+
raise ValueError('n_clusters must be greater than 0')
|
|
88
|
+
return value
|
|
89
|
+
|
|
87
90
|
|
|
88
91
|
class VectorFeature(CustomFeature):
|
|
89
|
-
type:
|
|
90
|
-
|
|
92
|
+
type: Literal['FROM_VECTOR'] = CustomFeatureType.FROM_VECTOR.value
|
|
93
|
+
n_clusters: Optional[int] = DEFAULT_NUM_CLUSTERS
|
|
94
|
+
centroids: Optional[List] = None
|
|
91
95
|
column: str
|
|
92
96
|
|
|
97
|
+
@validator('n_clusters')
|
|
98
|
+
def validate_n_clusters(cls, value: int) -> int: # noqa: N805
|
|
99
|
+
if value < 0:
|
|
100
|
+
raise ValueError('n_clusters must be greater than 0')
|
|
101
|
+
return value
|
|
102
|
+
|
|
93
103
|
|
|
94
104
|
class TextEmbedding(VectorFeature):
|
|
95
|
-
type:
|
|
105
|
+
type: Literal['FROM_TEXT_EMBEDDING'] = CustomFeatureType.FROM_TEXT_EMBEDDING.value # type: ignore
|
|
106
|
+
source_column: str
|
|
96
107
|
n_tags: Optional[int] = DEFAULT_NUM_TAGS
|
|
97
|
-
|
|
98
|
-
@validator('source_column')
|
|
99
|
-
def validate_source_column(cls, value: str) -> str: # noqa: N805
|
|
100
|
-
if value is None:
|
|
101
|
-
raise ValueError('source_column must be specified')
|
|
102
|
-
return value
|
|
108
|
+
tf_idf: Optional[Dict[str, List]] = None
|
|
103
109
|
|
|
104
110
|
@validator('n_tags')
|
|
105
111
|
def validate_n_tags(cls, value: int) -> int: # noqa: N805
|
|
@@ -109,13 +115,8 @@ class TextEmbedding(VectorFeature):
|
|
|
109
115
|
|
|
110
116
|
|
|
111
117
|
class ImageEmbedding(VectorFeature):
|
|
112
|
-
type:
|
|
113
|
-
|
|
114
|
-
@validator('source_column')
|
|
115
|
-
def validate_source_column(cls, value: str) -> str: # noqa: N805
|
|
116
|
-
if value is None:
|
|
117
|
-
raise ValueError('source_column must be specified')
|
|
118
|
-
return value
|
|
118
|
+
type: Literal['FROM_IMAGE_EMBEDDING'] = CustomFeatureType.FROM_IMAGE_EMBEDDING.value # type: ignore
|
|
119
|
+
source_column: str
|
|
119
120
|
|
|
120
121
|
|
|
121
122
|
class Enrichment(CustomFeature):
|
|
@@ -134,7 +135,7 @@ class Enrichment(CustomFeature):
|
|
|
134
135
|
"""
|
|
135
136
|
|
|
136
137
|
# Setting the feature type to ENRICHMENT
|
|
137
|
-
type:
|
|
138
|
+
type: Literal['ENRICHMENT'] = CustomFeatureType.ENRICHMENT.value
|
|
138
139
|
|
|
139
140
|
# List of input column names used to generate the enrichment
|
|
140
141
|
columns: List[str]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from typing import List, Union
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from fiddler.schemas.custom_features import Multivariate, VectorFeature, TextEmbedding, ImageEmbedding, Enrichment
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ModelSpec(BaseModel):
|
|
9
|
+
"""Model spec defines how model columns are used along with model task"""
|
|
10
|
+
|
|
11
|
+
schema_version: int = 1
|
|
12
|
+
"""Schema version"""
|
|
13
|
+
|
|
14
|
+
inputs: List[str] = Field(default_factory=list)
|
|
15
|
+
"""Feature columns"""
|
|
16
|
+
|
|
17
|
+
outputs: List[str] = Field(default_factory=list)
|
|
18
|
+
"""Prediction columns"""
|
|
19
|
+
|
|
20
|
+
targets: List[str] = Field(default_factory=list)
|
|
21
|
+
"""Label columns"""
|
|
22
|
+
|
|
23
|
+
decisions: List[str] = Field(default_factory=list)
|
|
24
|
+
"""Decisions columns"""
|
|
25
|
+
|
|
26
|
+
metadata: List[str] = Field(default_factory=list)
|
|
27
|
+
"""Metadata columns"""
|
|
28
|
+
|
|
29
|
+
custom_features: List[Union[Multivariate, VectorFeature, TextEmbedding, ImageEmbedding, Enrichment]] = Field(
|
|
30
|
+
default_factory=list
|
|
31
|
+
)
|
|
32
|
+
"""Custom feature definitions"""
|
|
@@ -20,6 +20,7 @@ from fiddler.tests.constants import (
|
|
|
20
20
|
DATASET_NAME,
|
|
21
21
|
MODEL_ID,
|
|
22
22
|
MODEL_NAME,
|
|
23
|
+
MODEL_VERSION,
|
|
23
24
|
PROJECT_ID,
|
|
24
25
|
PROJECT_NAME,
|
|
25
26
|
USER_EMAIL,
|
|
@@ -39,7 +40,9 @@ class DummyEntity(
|
|
|
39
40
|
def __init__(self) -> None:
|
|
40
41
|
self._resp = mock.MagicMock()
|
|
41
42
|
self._resp.project = ProjectCompactResp(id=PROJECT_ID, name=PROJECT_NAME)
|
|
42
|
-
self._resp.model = ModelCompactResp(
|
|
43
|
+
self._resp.model = ModelCompactResp(
|
|
44
|
+
id=MODEL_ID, name=MODEL_NAME, version=MODEL_VERSION
|
|
45
|
+
)
|
|
43
46
|
self._resp.dataset = DatasetCompactResp(
|
|
44
47
|
id=DATASET_ID, name=DATASET_NAME, type=EnvType.PRE_PRODUCTION
|
|
45
48
|
)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: fiddler-client
|
|
3
|
+
Version: 3.1.0.dev2
|
|
4
|
+
Summary: Python client for Fiddler Platform
|
|
5
|
+
Home-page: https://fiddler.ai
|
|
6
|
+
Author: Fiddler Labs
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >3.8.0
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE.txt
|
|
13
|
+
Requires-Dist: pip>=21.0
|
|
14
|
+
Requires-Dist: requests<3
|
|
15
|
+
Requires-Dist: requests-toolbelt
|
|
16
|
+
Requires-Dist: pandas>=1.2.5
|
|
17
|
+
Requires-Dist: pydantic<2,>=1.9.0
|
|
18
|
+
Requires-Dist: deprecated==1.2.13
|
|
19
|
+
Requires-Dist: tqdm
|
|
20
|
+
Requires-Dist: simplejson>=3.17.0
|
|
21
|
+
Requires-Dist: pyarrow>=7.0.0
|
|
22
|
+
Requires-Dist: pyyaml
|
|
23
|
+
|
|
24
|
+
Fiddler Client
|
|
25
|
+
=============
|
|
26
|
+
|
|
27
|
+
Python client for interacting with Fiddler. Provides a user-friendly interface to our REST API and enables event
|
|
28
|
+
publishing for use with our monitoring features.
|
|
29
|
+
|
|
30
|
+
Requirements
|
|
31
|
+
------------
|
|
32
|
+
Requires Python >= Python-3.6.3 and pip >= 19.0
|
|
33
|
+
|
|
34
|
+
Installation
|
|
35
|
+
------------
|
|
36
|
+
|
|
37
|
+
$ pip3 install fiddler-client
|
|
38
|
+
|
|
39
|
+
API Example Usage
|
|
40
|
+
-------------
|
|
41
|
+
Documentation for the API can be found [here](https://docs.fiddler.ai/reference/about-the-fiddler-client). For examples of interacting with our APIs, please check out our [Quick Start Guide](https://docs.fiddler.ai/docs/quick-start) as well as the notebooks found on our [Examples Github](https://github.com/fiddler-labs/fiddler-examples).
|
|
42
|
+
|
|
43
|
+
Version History
|
|
44
|
+
-------------
|
|
45
|
+
Version history is available on [Fiddler documentation page](https://docs.fiddler.ai/page/python-client-version-history).
|