Metadata-Version: 2.4
Name: featureform-enterprise
Version: 0.16.8
Summary: Package for the Featureform Enterprise Feature Store
Author-email: "FeatureForm, Inc." <hello@featureform.com>
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=7.1.2
Requires-Dist: protobuf>=3.20.0
Requires-Dist: typeguard<3.0.0
Requires-Dist: grpcio>=1.62.2
Requires-Dist: googleapis-common-protos
Requires-Dist: numpy>=1.21.6
Requires-Dist: pandas<2.2.0,>=1.3.5
Requires-Dist: typing_extensions>=4.10.0
Requires-Dist: Flask>=2.2.5
Requires-Dist: Flask-Cors>=4.0.1
Requires-Dist: validators>=0.20.0
Requires-Dist: dill>=0.3.7
Requires-Dist: sqlalchemy<2.0.0
Requires-Dist: requests>=2.32.2
Requires-Dist: rich>=13.5.2
Requires-Dist: pyarrow<21.0.0
Requires-Dist: pyyaml
Requires-Dist: fastparquet
Requires-Dist: pinecone-client>=2.2.2
Requires-Dist: weaviate-client
Requires-Dist: docker>=6.1.3
Requires-Dist: okta-jwt-verifier
Requires-Dist: importlib-metadata
Requires-Dist: pyiceberg[glue]>=0.9.0
Requires-Dist: astor
Provides-Extra: docs
Requires-Dist: mkdocs>=1.5.2; extra == "docs"
Requires-Dist: mkdocs-autorefs>=0.5.0; extra == "docs"
Requires-Dist: mkdocs-gen-files>=0.5.0; extra == "docs"
Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == "docs"
Requires-Dist: mkdocs-material>=9.2.5; extra == "docs"
Requires-Dist: mkdocs-material-extensions>=1.1.1; extra == "docs"
Requires-Dist: mkdocs-section-index>=0.3.5; extra == "docs"
Requires-Dist: mkdocstrings>=0.22.0; extra == "docs"
Requires-Dist: mkdocstrings-python>=1.6.0; extra == "docs"
Provides-Extra: test
Requires-Dist: Authlib>=1.3.1; extra == "test"
Requires-Dist: SQLAlchemy; extra == "test"
Requires-Dist: azure-core; extra == "test"
Requires-Dist: azure-identity; extra == "test"
Requires-Dist: azure-storage-blob; extra == "test"
Requires-Dist: behave>=1.2.6; extra == "test"
Requires-Dist: behavex>=3.0.0; extra == "test"
Requires-Dist: boto3>=1.34.143; extra == "test"
Requires-Dist: botocore; extra == "test"
Requires-Dist: build>=0.10.0; extra == "test"
Requires-Dist: databricks-sdk>=0.55.0; extra == "test"
Requires-Dist: deltalake>=1.0.0; extra == "test"
Requires-Dist: google-api-core; extra == "test"
Requires-Dist: google-auth; extra == "test"
Requires-Dist: google-cloud-core; extra == "test"
Requires-Dist: google-cloud-storage>=2.7.0; extra == "test"
Requires-Dist: grpcio>=1.57.0; extra == "test"
Requires-Dist: psutil; extra == "test"
Requires-Dist: pydantic<=2.10.6; extra == "test"
Requires-Dist: pyiceberg[glue]>=0.9.0; extra == "test"
Requires-Dist: pyspark<4.0.0,>=3.3.0; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-mock; extra == "test"
Requires-Dist: pytest-xdist; extra == "test"
Requires-Dist: python-dotenv>=1.0.0; extra == "test"
Requires-Dist: s3transfer; extra == "test"
Requires-Dist: six>=1.16.0; extra == "test"
Requires-Dist: snowflake-connector-python; extra == "test"
Requires-Dist: urllib3; extra == "test"
Requires-Dist: pandasql>=0.7.3; extra == "test"
Provides-Extra: spark
Requires-Dist: azure-storage-blob>=12.13.1; extra == "spark"
Requires-Dist: boto3; extra == "spark"
Requires-Dist: deepdiff; extra == "spark"
Requires-Dist: google-cloud-storage>=2.7.0; extra == "spark"
Requires-Dist: google-oauth>=1.0.1; extra == "spark"
Requires-Dist: kafka-python>=2.2.11; extra == "spark"
Requires-Dist: pyspark<4.0.0,>=3.3.0; extra == "spark"
Requires-Dist: pytest>=7.1.2; extra == "spark"
Requires-Dist: pytest-cov>=3.0.0; extra == "spark"
Requires-Dist: python-dotenv>=0.20.0; extra == "spark"
Provides-Extra: streamer
Requires-Dist: boto3; extra == "streamer"
Requires-Dist: databricks-sdk>=0.55.0; extra == "streamer"
Requires-Dist: deltalake>=1.0.0; extra == "streamer"
Requires-Dist: pydantic<=2.10.6; extra == "streamer"
Dynamic: license-file

# Featureform Python Client

## Overview

Featureform’s Python client is a SDK for defining, managing and serving resources (e.g. infrastructure providers, data sources, transformations, etc.). At a high level, the API is divided into two parts:

* Registration: register data stores (e.g. PostgreSQL), data sources (e.g. tables or CSV files) as resources or get and/or list previously registered resources
* Serving: retrieve training sets and features for offline training or online inference

## Requirements

* Python 3.9-3.12

## Setting Up Your Local Development Environment

### Step 1: Install gRPC and Protocol Buffer Tooling

See grpc.io for instructions on installing the [protocol buffer compiler](https://grpc.io/docs/protoc-installation/) for your OS and language-specific plugins for [Golang](https://grpc.io/docs/languages/go/quickstart/#prerequisites) (**NOTE**: the Golang dependencies can also be installed via [Homebrew](https://brew.sh/).)

### Step 2: Create Python Virtual Environment

You may create a Python virtual environment however you prefer, but the directory name `.venv` is ignored by Git for convenience, so you may choose to create your virtual environment in the root of the project.

```shell
> python -m venv .venv && . .venv/bin/activate
(.venv) >
```

### Step 3: Upgrade pip and Install Build Dependencies

The following dependencies are required to build the client:

* [build](https://pypi.org/project/build/)
* [pytest](https://pypi.org/project/pytest/)
* [python-dotenv](https://pypi.org/project/python-dotenv/)
* [pytest-mock](https://pypi.org/project/pytest-mock/)

```shell
(.venv) > python -m pip install --upgrade pip
(.venv) > python -m pip install -e .[test,docs]
```

### Step 4: Compile API Protocol Buffers and Python Stub

The shell script `gen_grpc.sh` has been provided for convenience. Change the file access permissions to make it executable and run it:

```shell
(.venv) > chmod +x gen_grpc.sh
(.venv) > ./gen_grpc.sh
```

### Step 5: Build Python Client and Dashboard

The shell script `pip_update.sh` has been provided for convenience. Change the file access permissions to make it executable and run it:

```shell
(.venv) > chmod +x pip_update.sh
(.venv) > ./pip_update.sh
```

### Step 6: Optionally Run Client Test Suite

To ensure your changes haven’t broken the client, run the test suite with the following make target:

```shell
(.venv) > make pytest
```

## Outcome

With steps 1-5 successfully completed, you should have the `featureform` CLI command accessible in your terminal session.

```shell
(.venv) > featureform -h
```

To further verify that your setup is complete and correct, you may optionally walk through the [Quickstart](https://docs.featureform.com/quickstart-local) tutorial. You may put the `definitions.py` file at the root of the project, which won’t be ignored by Git, or use a URL to a file (e.g. hosted on GitHub).
