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
seeknal.project
Overview
The Project feature is designed to manage data projects effectively. It serves as a container for:
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
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 = "")
__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
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
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
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
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
seeknal.workspace
Overview
The Workspace feature allows users to create and manage isolated environments within their projects. It serves as a container for:
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
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)
__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
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
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
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