Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature store marketplace operator #441

Merged
merged 125 commits into from
Jan 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
1109802
bug fix
najiyacl Nov 16, 2023
3fbcda9
init operator
harsh97 Nov 2, 2023
22553e3
scaffolding changes
harsh97 Nov 2, 2023
f322656
changes
harsh97 Nov 2, 2023
51969cf
Complete scaffolding
harsh97 Nov 3, 2023
dd143ea
Implement ads init and ads run for marketplace operator
amitkrprajapati Nov 7, 2023
ee6c6a7
Updating schema for helidon
harsh97 Nov 14, 2023
ddcff7c
Review changes
harsh97 Nov 15, 2023
10a57fa
Updating metastore id
harsh97 Nov 17, 2023
a53d7d5
Added a way to export helm chart from marketplace
amitkrprajapati Nov 20, 2023
3807662
License checker
harsh97 Nov 20, 2023
d6ddf7c
adeded release notes
KshitizLohia Nov 20, 2023
53bb9c3
adeded release notes
KshitizLohia Nov 20, 2023
0cb3b29
Fs bug fix (#440)
KshitizLohia Nov 20, 2023
f8a664e
temp changes
harsh97 Nov 20, 2023
ca4c1df
updating schema yaml for marketplace
harsh97 Nov 21, 2023
c9ac25f
Revert to old api server for marketplace e2e. Fix security token issu…
harsh97 Nov 21, 2023
fa61db9
Upgrade helm if chart it already exist.
amitkrprajapati Nov 21, 2023
ce76a1e
Added changes to operator (#442)
KshitizLohia Nov 21, 2023
1d2e353
FIX MERGE CONFLICT
amitkrprajapati Nov 21, 2023
617eea8
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
amitkrprajapati Nov 21, 2023
b6e5fa5
Major refactoring and addition of helmers
harsh97 Nov 22, 2023
2659178
changes to schema yaml
harsh97 Nov 22, 2023
93ef950
Add unit tests
amitkrprajapati Nov 23, 2023
c75382a
Add unit tests - local marketplace and utils
amitkrprajapati Nov 23, 2023
93df978
addressing review comments
harsh97 Nov 24, 2023
f9e1baf
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Nov 24, 2023
02f33ad
hardcode ocir
harsh97 Nov 24, 2023
7ef8513
disabling debug by default
harsh97 Nov 24, 2023
6f6e25b
Addressing reviwe comments
harsh97 Nov 24, 2023
b0330a7
update doc
harsh97 Nov 24, 2023
239454b
Better logging and exception handling
harsh97 Nov 25, 2023
bd9480b
Add unit tests - prerequisite checker
amitkrprajapati Nov 26, 2023
c3d3e2b
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
amitkrprajapati Nov 26, 2023
cb71ef6
Use helm wait instead
harsh97 Nov 27, 2023
a465fe9
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Nov 27, 2023
079b74f
fix failing test cases
amitkrprajapati Nov 27, 2023
f5c9648
fix merge conflict and fix test case
amitkrprajapati Nov 27, 2023
eddfa24
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
dc19372
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
6d10feb
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
655d9d6
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
f293e0e
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
e8072fd
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
22db6e5
code changes for name instead of display_name
yogesh266 Dec 12, 2023
3b6ccc1
added documentation for dataset and entity
KshitizLohia Dec 12, 2023
eeff5b7
added documentation for transformation
KshitizLohia Dec 12, 2023
216ae42
changes in the doc
yogesh266 Dec 13, 2023
687ac10
Merge remote-tracking branch 'origin/main' into feature/feature-store…
harsh97 Dec 18, 2023
0bc9e3b
updating operator to work with latest listing
harsh97 Dec 18, 2023
82024b5
updated documentation
KshitizLohia Dec 18, 2023
c81a7b4
Merge branch 'feature/feature-store-marketplace-operator' of github.c…
KshitizLohia Dec 18, 2023
85c2de9
updated documentation
KshitizLohia Dec 19, 2023
c1890af
Feature store display name to name changes (#494)
KshitizLohia Dec 20, 2023
4802652
Adding api gateway support
harsh97 Dec 20, 2023
09cdd19
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Dec 20, 2023
28d1688
fixed restore
yogesh266 Dec 20, 2023
54dc2ac
fixed restore (#503)
KshitizLohia Dec 20, 2023
dc6a791
documentation for operator
harsh97 Dec 21, 2023
e823dcb
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Dec 21, 2023
9300e91
Merge branch 'main' of github.com:oracle/accelerated-data-science int…
KshitizLohia Dec 21, 2023
fd93a87
backmerged and document fixes
KshitizLohia Dec 21, 2023
75eb770
removed ocids and fixed issues related to environment variables
KshitizLohia Dec 21, 2023
22baa87
added dataset and feature group documents
KshitizLohia Dec 22, 2023
04d652b
added feature store details
KshitizLohia Dec 23, 2023
e714740
name fix
KshitizLohia Dec 26, 2023
0709fe6
name fix
KshitizLohia Dec 26, 2023
0f4cbcb
changed image
KshitizLohia Dec 26, 2023
9b1fb7a
added cicd examples
KshitizLohia Dec 26, 2023
c07e730
added cicd examples
KshitizLohia Dec 27, 2023
d2e3ce3
Merge branch 'main' of github.com:oracle/accelerated-data-science int…
KshitizLohia Dec 27, 2023
4b48635
fixing uts
harsh97 Dec 27, 2023
bb2325d
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Dec 27, 2023
73495c5
making kubernetes imports local
harsh97 Dec 27, 2023
db7959e
add kubernetes import in try catch block
harsh97 Dec 27, 2023
14afce4
Updating unit tests and adding feature store marketplace requirements
harsh97 Dec 28, 2023
20dcfa1
uncommenting prerequisite check
harsh97 Dec 28, 2023
7e022b9
adding missing import
harsh97 Dec 28, 2023
e6768ad
bug fixes
harsh97 Dec 29, 2023
ceb9155
bugfixes
harsh97 Dec 29, 2023
2b3ff5e
bugfixes
harsh97 Dec 29, 2023
bc50029
fix unit tests
harsh97 Dec 30, 2023
fb9791d
fixing uts
harsh97 Dec 30, 2023
12e7638
updating requirements
harsh97 Dec 30, 2023
e1b8a11
documentation fix
KshitizLohia Dec 30, 2023
c5dc098
fixing typo and specifying exact range of compatible langchain versions
harsh97 Dec 31, 2023
7c7ae05
bugfix
harsh97 Dec 31, 2023
b6dfdd2
updating langchain version
harsh97 Jan 1, 2024
96646c4
documentation fix
KshitizLohia Jan 2, 2024
eb6eb76
Merge branch 'feature/feature-store-marketplace-operator' of github.c…
KshitizLohia Jan 2, 2024
8b5eae3
Adding bugfixes and unit tests
harsh97 Jan 3, 2024
3f2b878
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Jan 3, 2024
4a6bca9
Merge remote-tracking branch 'origin/main' into feature/feature-store…
harsh97 Jan 3, 2024
a2f072f
name fix
KshitizLohia Jan 3, 2024
f8c09fd
add more unit tests
harsh97 Jan 3, 2024
f4b4929
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Jan 3, 2024
2230534
code fixes for transfrmation mode check
yogesh266 Jan 3, 2024
9374a42
documentation fix
KshitizLohia Jan 3, 2024
c89aa0e
Merge branch 'feature/feature-store-marketplace-operator' of github.c…
KshitizLohia Jan 3, 2024
054e6e2
documentation fix
KshitizLohia Jan 4, 2024
72e753c
code fixes for transfrmation mode check (#516)
KshitizLohia Jan 4, 2024
f624981
disable showing choices
harsh97 Jan 5, 2024
c22d7a6
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Jan 5, 2024
2c7a0d2
Disable apigateway stack deployment
harsh97 Jan 11, 2024
e032cd1
Revert "Disable apigateway stack deployment"
harsh97 Jan 11, 2024
80793ec
Adding feature store docs
harsh97 Jan 17, 2024
16bdd26
document fix
KshitizLohia Jan 17, 2024
93ecfab
Documentation and version fixes
harsh97 Jan 17, 2024
2855f71
Revert "Revert "Disable apigateway stack deployment""
harsh97 Jan 17, 2024
aac9e1c
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Jan 17, 2024
cbea610
policy fix
harsh97 Jan 18, 2024
70c1fd5
Merge remote-tracking branch 'origin/main' into feature/feature-store…
harsh97 Jan 18, 2024
4ec4e8f
formatting fixes
harsh97 Jan 18, 2024
a52d7ee
removing file with ocids
harsh97 Jan 18, 2024
82bbf69
adding copyright text
harsh97 Jan 18, 2024
d20cdca
Add missing import
harsh97 Jan 18, 2024
2c4fc53
Adding demos
harsh97 Jan 18, 2024
3f63194
revert uneeded modifications
harsh97 Jan 23, 2024
b69dde3
remove uneeded file
harsh97 Jan 24, 2024
6d4632a
Merge remote-tracking branch 'origin/main' into feature/feature-store…
harsh97 Jan 24, 2024
8f87171
addressed comments
KshitizLohia Jan 24, 2024
50425af
Addressing review comments
harsh97 Jan 24, 2024
ecb4de3
Merge remote-tracking branch 'origin/feature/feature-store-marketplac…
harsh97 Jan 24, 2024
4de3355
Fixing requirements.txt
harsh97 Jan 24, 2024
24e2c1c
Addressing cli client bug
harsh97 Jan 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/run-unittests-py38-cov-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ jobs:
- name: "Install Forecasting dependencies"
run: |
pip install -e ".[forecast]"

- name: "Install featurestore marketplace dependencies"
run: |
pip install -e ".[feature-store-marketplace]"
- name: "Run unitary tests folder with maximum ADS dependencies"
timeout-minutes: 40
shell: bash
Expand Down
3 changes: 2 additions & 1 deletion ads/common/decorator/runtime_dependency.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8; -*-

# Copyright (c) 2021, 2023 Oracle and/or its affiliates.
# Copyright (c) 2021, 2024 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

"""
Expand Down Expand Up @@ -65,6 +65,7 @@ class OptionalDependency:
SPARK = "oracle-ads[spark]"
HUGGINGFACE = "oracle-ads[huggingface]"
FORECAST = "oracle-ads[forecast]"
FEATURE_STORE_MARKETPLACE = "oracle-ads[feature-store-marketplace]"
PII = "oracle-ads[pii]"
FEATURE_STORE = "oracle-ads[feature-store]"
GRAPHVIZ = "oracle-ads[graphviz]"
Expand Down
4 changes: 2 additions & 2 deletions ads/common/extended_enum.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8; -*-

# Copyright (c) 2022 Oracle and/or its affiliates.
# Copyright (c) 2022, 2024 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/


Expand Down Expand Up @@ -70,4 +70,4 @@ def values(cls):

@classmethod
def keys(cls):
return sorted(map(lambda c: c.name, cls))
return sorted(map(lambda c: c.name, cls))
38 changes: 22 additions & 16 deletions ads/common/oci_client.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
#!/usr/bin/env python
# -*- coding: utf-8; -*-

# Copyright (c) 2021, 2023 Oracle and/or its affiliates.
# Copyright (c) 2021, 2024 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

import logging

import oci.artifacts
from oci.ai_language import AIServiceLanguageClient
from oci.artifacts import ArtifactsClient
from oci.data_catalog import DataCatalogClient
from oci.data_flow import DataFlowClient
from oci.data_labeling_service import DataLabelingManagementClient
from oci.data_labeling_service_dataplane import DataLabelingClient
from oci.data_science import DataScienceClient
from oci.identity import IdentityClient
from oci.marketplace import MarketplaceClient
from oci.object_storage import ObjectStorageClient
from oci.resource_search import ResourceSearchClient
from oci.secrets import SecretsClient
Expand All @@ -25,7 +28,7 @@ class OCIClientFactory:

"""
A factory class to create OCI client objects. The constructor takes in config, signer and client_kwargs. `client_kwargs` is passed
to the client constructor as key word argutments.
to the client constructor as key word arguments.

Examples
--------
Expand All @@ -48,12 +51,15 @@ class OCIClientFactory:
oc.OCIClientFactory(**auth).object_storage # Creates Object storage client using instance principal authentication
"""

def __init__(self, config={}, signer=None, client_kwargs=None):
def __init__(self, config=None, signer=None, client_kwargs=None):
if not config:
config = {}
self.config = config
self.signer = signer
self.client_kwargs = client_kwargs

def _client_impl(self, client):
@staticmethod
def _client_impl(client):
client_map = {
"object_storage": ObjectStorageClient,
"data_science": DataScienceClient,
Expand All @@ -66,21 +72,17 @@ def _client_impl(self, client):
"data_labeling_cp": DataLabelingManagementClient,
"resource_search": ResourceSearchClient,
"data_catalog": DataCatalogClient,
"marketplace": MarketplaceClient,
"artifacts": ArtifactsClient,
}
try:
from oci.feature_store import FeatureStoreClient

client_map["feature_store"] = FeatureStoreClient
except ImportError:
logger.debug("OCI SDK with feature store support is not installed")
pass

assert (
client in client_map
), f"Invalid client name. Client name not found in {client_map.keys()}"
return client_map[client]

def _validate_auth_param(self, auth):
@staticmethod
def _validate_auth_param(auth):
if not isinstance(auth, dict):
raise ValueError("auth parameter should be of type dictionary")
if "config" in auth and not isinstance(auth["config"], dict):
Expand Down Expand Up @@ -135,10 +137,6 @@ def ai_language(self):
def data_labeling_cp(self):
return self.create_client("data_labeling_cp")

@property
def feature_store(self):
return self.create_client("feature_store")

@property
def data_labeling_dp(self):
return self.create_client("data_labeling_dp")
Expand All @@ -150,3 +148,11 @@ def resource_search(self):
@property
def data_catalog(self):
return self.create_client("data_catalog")

@property
def marketplace(self):
return self.create_client("marketplace")

@property
def artifacts(self) -> oci.artifacts.ArtifactsClient:
return self.create_client("artifacts")
65 changes: 65 additions & 0 deletions ads/feature_store/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Oracle Feature Store (ADS)

[![Python](https://img.shields.io/badge/python-3.8-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/oracle-ads/) [![PysparkConda](https://img.shields.io/badge/fspyspark32_p38_cpu_v2-1.0-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://docs.oracle.com/en-us/iaas/data-science/using/conda-pyspark-fam.htm) [![Notebook Examples](https://img.shields.io/badge/docs-notebook--examples-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://github.com/oracle-samples/oci-data-science-ai-samples/tree/master/notebook_examples) [![Delta](https://img.shields.io/badge/delta-2.0.1-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://delta.io/) [![PySpark](https://img.shields.io/badge/pyspark-3.2.1-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://spark.apache.org/docs/3.2.1/api/python/index.html) [![Great Expectations](https://img.shields.io/badge/greatexpectations-0.17.19-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://greatexpectations.io/) [![Pandas](https://img.shields.io/badge/pandas-1.5.3-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://pandas.pydata.org/) [![PyArrow](https://img.shields.io/badge/pyarrow-11.0.0-blue?style=for-the-badge&logo=pypi&logoColor=white)](https://arrow.apache.org/docs/python/index.html)

Managing many datasets, data sources, and transformations for machine learning is complex and costly. Poorly cleaned data, data issues, bugs in transformations, data drift, and training serving skew all lead to increased model development time and poor model performance. Feature store solves many of the problems because it is a centralized way to transform and access data for training and serving time, Feature stores help define a standardised pipeline for ingestion of data and querying of data.

ADS feature store is a stack-based solution that is deployed in your tenancy using OCI Resource Manager.

Following are brief descriptions of key concepts and the main components of ADS feature store.

- ``Feature Vector``: Set of feature values for any one primary and identifier key. For example, all and a subset of features of customer ID 2536 can be called as one feature vector .
- ``Feature``: A feature is an individual measurable property or characteristic of an event being observed.
- ``Entity``: An entity is a group of semantically related features. The first step a consumer of features would typically do when accessing the feature store service is to list the entities and the entities associated with features. Another way to look at it is that an entity is an object or concept that's described by its features. Examples of entities are customer, product, transaction, review, image, document, and so on.
- ``Feature Group``: A feature group in a feature store is a collection of related features that are often used together in ML models. It serves as an organizational unit within the feature store for users to manage, version, and share features across different ML projects. By organizing features into groups, data scientists and ML engineers can efficiently discover, reuse, and collaborate on features reducing the redundant work and ensuring consistency in feature engineering.
- ``Feature Group Job``: Feature group jobs are the processing instance of a feature group. Each feature group job includes validation results and statistics results.
- ``Dataset``: A dataset is a collection of features that are used together to either train a model or perform model inference.
- ``Dataset Job``: A dataset job is the processing instance of a dataset. Each dataset job includes validation results and statistics results.

## Documentation

- [Oracle Feature Store SDK (ADS) Documentation](https://feature-store-accelerated-data-science.readthedocs.io/en/latest/)
- [OCI Data Science and AI services Examples](https://github.com/oracle/oci-data-science-ai-samples)
- [Oracle AI & Data Science Blog](https://blogs.oracle.com/ai-and-datascience/)
- [OCI Documentation](https://docs.oracle.com/en-us/iaas/data-science/using/data-science.htm)

## Examples

### Quick start examples

| Jupyter Notebook | Description |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Feature store querying](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_querying.ipynb) | - Ingestion, querying and exploration of data. |
| [Feature store quickstart](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_quickstart.ipynb) | - Ingestion, querying and exploration of data. |
| [Schema enforcement and schema evolution](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_schema_evolution.ipynb) | - `Schema evolution` allows you to easily change a table's current schema to accommodate data that is changing over time. `Schema enforcement`, also known as schema validation, is a safeguard in Delta Lake that ensures data quality by rejecting writes to a table that don't match the table's schema. |
| [Storage of medical records in feature store](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_ehr_data.ipynb) | Example to demonstrate storage of medical records in feature store |

### Big data operations using OCI DataFlow

| Jupyter Notebook | Description |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| [Big data operations with feature store](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_spark_magic.ipynb) | - Ingestion of data using Spark Magic, querying and exploration of data using Spark Magic. |

### LLM Use cases

| Jupyter Notebook | Description |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Embeddings in Feature Store](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_embeddings.ipynb) | - `Embedding feature stores` are optimized for fast and efficient retrieval of embeddings. This is important because embeddings can be high-dimensional and computationally expensive to calculate. By storing them in a dedicated store, you can avoid the need to recalculate embeddings for the same data repeatedly. |
| [Synthetic data generation in feature store using OpenAI and FewShotPromptTemplate](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_medical_synthetic_data_openai.ipynb) | - `Synthetic data` is artificially generated data, rather than data collected from real-world events. It's used to simulate real data without compromising privacy or encountering real-world limitations. |
| [PII Data redaction, Summarise Content and Translate content using doctran and open AI](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_pii_redaction_and_transformation.ipynb) | - One way to think of Doctran is a LLM-powered black box where messy strings go in and nice, clean, labelled strings come out. Another way to think about it is a modular, declarative wrapper over OpenAI's functional calling feature that significantly improves the developer experience. |
| [OpenAI embeddings in feature store](https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/notebook_examples/feature_store_embeddings_openai.ipynb) | - `Embedding feature stores` are optimized for fast and efficient retrieval of embeddings. This is important because embeddings can be high-dimensional and computationally expensive to calculate. By storing them in a dedicated store, you can avoid the need to recalculate embeddings for the same data repeatedly. |


## Contributing

This project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./../../CONTRIBUTING.md)

Find Getting Started instructions for developers in [README-development.md](https://github.com/oracle/accelerated-data-science/blob/main/README-development.md)

## Security

Consult the security guide [SECURITY.md](https://github.com/oracle/accelerated-data-science/blob/main/SECURITY.md) for our responsible security vulnerability disclosure process.

## License

Copyright (c) 2020, 2022 Oracle and/or its affiliates. Licensed under the [Universal Permissive License v1.0](https://oss.oracle.com/licenses/upl/)
8 changes: 5 additions & 3 deletions ads/feature_store/common/utils/transformation_utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
#!/usr/bin/env python
# -*- coding: utf-8; -*-

# Copyright (c) 2024 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

import json

# Copyright (c) 2023 Oracle and/or its affiliates.
Expand Down Expand Up @@ -52,9 +56,7 @@ def apply_transformation(
# Execute the function under namespace
execution_namespace = {}
exec(transformation_function, execution_namespace)
transformation_function_caller = execution_namespace.get(
transformation.display_name
)
transformation_function_caller = execution_namespace.get(transformation.name)
transformed_data = None

transformation_kwargs_dict = json.loads(transformation_kwargs)
Expand Down
6 changes: 3 additions & 3 deletions ads/feature_store/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
)
from ads.feature_store.validation_output import ValidationOutput

# Copyright (c) 2023 Oracle and/or its affiliates.
# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -422,8 +422,8 @@ def with_expectation_suite(

Returns
-------
Pipeline
The Expectation instance (self).
Dataset
The Dataset instance (self).
"""
return self.set_spec(
self.CONST_EXPECTATION_DETAILS,
Expand Down
6 changes: 3 additions & 3 deletions ads/feature_store/dataset_job.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/usr/bin/env python
# -*- coding: utf-8; -*-

# Copyright (c) 2023 Oracle and/or its affiliates.
# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

import logging
from copy import deepcopy
from typing import Dict, List, Any, Union
Expand Down Expand Up @@ -54,7 +54,7 @@ class DatasetJob(Builder):
>>> dataset_run = dataset_run.DatasetJob()
>>> .with_compartment_id(os.environ["PROJECT_COMPARTMENT_OCID"])
>>> .with_dataset_id("dataset_id")
>>> .with_ingestion_mode(IngestionMode.SQL)
>>> .with_ingestion_mode(BatchIngestionMode.SQL)
>>> dataset_run.create()
"""

Expand Down
5 changes: 2 additions & 3 deletions ads/feature_store/docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
autodoc
nbsphinx
autodoc nbsphinx
sphinx
sphinxcontrib-napoleon
sphinx_copybutton
sphinx_code_tabs
sphinx-autobuild
sphinx-autorun
oracle_ads==2.9.0rc0
oracle_ads
furo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this line?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is needed for generation of class files for feature store for class level documentation

IPython
pandoc
Expand Down
Loading
Loading