flask-weaviate

Flask extension for Weaviate


Keywords
flask, weaviate, flask-extension
License
Other
Install
pip install flask-weaviate==1.0.1

Documentation

Flask-Weaviate

PyPI Version Code Coverage License

Flask-Weaviate is a Flask extension for integrating Weaviate into Flask applications. It provides a convenient way to manage a Weaviate client connection, supporting configuration through Flask app settings and environment variables.

Installation

Install Flask-Weaviate using pip:

pip install flask-weaviate

Usage

Initialize the extension in your Flask app:

from flask import Flask
from flask_weaviate import FlaskWeaviate

app = Flask(__name__)
weaviate = FlaskWeaviate(app)

Access the Weaviate client within your Flask app:

weaviate_client = weaviate.client
# Now you can use weaviate_client to interact with Weaviate

Automatically disconnects the Weaviate client during app context teardown.

Flask app factory:

from flask import Flask, jsonify
from flask_weaviate import FlaskWeaviate

weaviate = FlaskWeaviate()

def create_app():
    app = Flask(__name__)
    weaviate.init_app(app)

    @app.route('/')
    def index():
        # Access the Weaviate client
        client = weaviate.client

        # Now you can use client to interact with Weaviate
        # ...

        return jsonify({'message': 'Hello, Weaviate!'})

    # Your other app configurations and extensions

    return app

if __name__ == '__main__':
    create_app().run()

Configuration

The following configuration parameters can be set in the Flask app's configuration or as environment variables:

  • WEAVIATE_HTTP_HOST: Weaviate server HTTP host.
  • WEAVIATE_HTTP_PORT: Weaviate server HTTP port.
  • WEAVIATE_HTTP_SECURE: Use HTTP secure connection to the Weaviate server (True/False).
  • WEAVIATE_GRPC_HOST: Weaviate server gRPC host.
  • WEAVIATE_GRPC_PORT: Weaviate server gRPC port.
  • WEAVIATE_GRPC_SECURE: Use gRPC secure connection to the Weaviate server (True/False).
  • WEAVIATE_API_KEY: API key for authentication with Weaviate.
  • WEAVIATE_USERNAME: Username for authentication (used with password).
  • WEAVIATE_PASSWORD: Password for authentication (used with username).
  • WEAVIATE_ACCESS_TOKEN: Access token for authentication with Weaviate.
  • WEAVIATE_CONNECTION_PARAMS: Weaviate client connection parameters.
  • WEAVIATE_EMBEDDED_OPTIONS: Options for embedded Weaviate.
  • WEAVIATE_AUTH_CLIENT_SECRET: Auth client secret for Weaviate.
  • WEAVIATE_ADDITIONAL_HEADERS: Additional headers for Weaviate requests.
  • WEAVIATE_ADDITIONAL_CONFIG: Additional configuration for Weaviate.
  • WEAVIATE_SKIP_INIT_CHECKS: Skip Weaviate client initialization checks.

Connection

When any of http_host http_port http_secure grpc_host grpc_port grpc_secure is set, the connection is created with these values as connection params

Else if connection_params are given, they are used to connect

Else Weaviate is stared in Embedded mode standard (either with delivered embedded_options or defaults)

Authentication

Authentication is determined from sequence: api_key, username + password, access_token. If the first in sequence is detected the others are skipped.

Example

from flask import Flask, jsonify
from flask_weaviate import FlaskWeaviate

app = Flask(__name__)
weaviate = FlaskWeaviate(
    app,
    http_host="weaviate-server",
    http_port=80,
    http_secure=False,
    api_key="your-api-key",
    skip_init_checks=True
)

@app.route('/')
def index():
    # Access the Weaviate client
    weaviate_client = weaviate.client

    # Now you can use weaviate_client to interact with Weaviate
    # ...

    return jsonify({'message': 'Hello, Weaviate!'})

if __name__ == '__main__':
    app.run()

Teardown Function

Flask-Weaviate includes a teardown function to automatically disconnect the Weaviate client during app context teardown. This ensures proper cleanup of resources.

License

This project is licensed under the MIT License - see the LICENSE file for details.