Project & Workspace

Overview

The Project and Workspace features in Seeknal provide a structured way to manage data engineering tasks and workflows. They allow users to organize their work, define data transformations, and maintain context across different tasks.

Project seeknal.project

Overview

The Project feature is designed to manage data projects effectively. It serves as a container for:

Component
Description

Project Name

The name of the project, which is used to identify it within the framework.

Project Description

A brief description of the project, providing context and purpose.

Project ID

A unique identifier for the project, used for retrieval and updates.

The Project class provides methods to create, update, and list projects, ensuring that all project-related information is organized and accessible.

Project Class

The Project class encapsulates the business logic for managing data projects within the Seeknal framework. It interacts with the ProjectRequest to perform CRUD operations and manage project-related data.

Initialization

__init__(self, name: str, description: str = "")

Initializes the project with a name and an optional description. The name is converted to snake_case format for consistency.

Methods

get_or_create(self) -> Project

Retrieves an existing project by name or creates a new one if it does not exist.

  • Updates the context with the current project ID.

  • Returns the Project object.

update(self, name: Optional[str] = None, description: Optional[str] = None) -> Project

Updates the project details.

  • Raises a ValueError if the project ID is not set.

  • Raises a ProjectNotFoundError if the project does not exist.

  • Returns the updated Project object.

list() -> None

Lists all projects associated with the current context.

  • Displays project names, descriptions, and timestamps in a tabular format.

get_by_id(self, id: int) -> Project

Retrieves a project by its ID.

  • Raises a ProjectNotFoundError if the project does not exist.

  • Returns the Project object.

Workspace seeknal.workspace

Overview

The Workspace feature allows users to create and manage isolated environments within their projects. It serves as a container for:

Component
Description

Workspace Name

TThe name of the workspace, which defaults to the username if not provided.

Workspace Description

A brief description of the workspace, providing context and purpose..

Is Private

A boolean indicating whether the workspace is private or shared.

Workspace ID

A unique identifier for the workspace, used for retrieval and updates.

The Workspace class provides methods to create, attach offline stores, and retrieve the current workspace, ensuring that users can work on specific tasks or datasets without interference from other projects.

Workspace Class

The Workspace class manages workspace-related operations within the Seeknal framework. It allows users to create and manage isolated environments for their projects.

Initialization

__init__(self, name: Optional[str] = None, description: str = "", private: bool = False)

Initializes the workspace with a name, description, and privacy setting. The name defaults to the username if not provided and is converted to snake_case format.

Methods

get_or_create(self) -> Workspace

Retrieves an existing workspace by name and project ID or creates a new one if it does not exist.

  • Updates the context with the current workspace ID.

  • Returns the Workspace object.

attach_offline_store(self, offline_store: OfflineStore) -> Workspace

Attaches an offline store to the workspace and saves the association.

  • Returns the updated Workspace object.

current() -> Workspace

Retrieves the current workspace based on the context.

  • Returns the Workspace object.

Example

Seeknal organizes pipelines through Projects and Workspaces, allowing you to separate resources for different teams or environments.

from seeknal.project import Project
from seeknal.workspace import Workspace
def initialize_project():
    project = Project(name="demo_project", description="demo project")
    project.get_or_create()
    Workspace(name="dev", description="dev workspace").get_or_create()
    return Workspace.current()

Last updated