Project Administration
Manage the lifecycle of projects in Flyte to organize your tasks, workflows, and resources. Projects serve as the top-level container for all entities in a Flyte deployment.
Initialize the Flyte Client
Before performing any project administration tasks, you must initialize the Flyte client to establish a connection with the backend.
import flyte
# Initialize connection to the Flyte backend
flyte.init(endpoint="localhost:30080")
Create a New Project
Use the Project.create method to define a new project. You must provide a unique identifier and a display name.
from flyte.remote import Project
# Create a project with metadata and labels
new_project = Project.create(
id="ml-research",
name="Machine Learning Research",
description="Project for tracking experimental ML models",
labels={"team": "data-science", "priority": "high"}
)
print(f"Created project: {new_project.pb2.id}")
Retrieve and List Projects
You can retrieve a specific project by its ID or iterate through all existing projects.
from flyte.remote import Project
# Get a single project by ID
project = Project.get(name="ml-research")
print(f"Project Name: {project.pb2.name}")
# List all active projects
print("Active Projects:")
for p in Project.listall():
print(f"- {p.pb2.id}: {p.pb2.name}")
# List archived projects
print("Archived Projects:")
for p in Project.listall(archived=True):
print(f"- {p.pb2.id}")
Update Project Metadata
The Project.update method allows you to modify the display name, description, labels, or state of an existing project.
from flyte.remote import Project
# Update project description and labels
Project.update(
id="ml-research",
description="Updated description for the research project",
labels={"team": "data-science", "status": "active"}
)
Archive and Unarchive Projects
Archiving a project hides it from the default list and prevents new resources from being created within it. You can use the dedicated instance methods or the state parameter in update.
from flyte.remote import Project
project = Project.get(name="ml-research")
# Archive the project
project.archive()
# Alternatively, archive via the class method
Project.update(id="ml-research", state="archived")
# Unarchive (activate) the project
project.unarchive()
Troubleshooting and Best Practices
Client Initialization
All Project methods require the Flyte client to be initialized. If you encounter errors related to missing clients, ensure flyte.init() or flyte.init_from_config() has been called at the start of your script.
Domain Rejection
When updating a project, the backend explicitly rejects requests that include domain information. The Project.update implementation in this SDK automatically handles this by clearing the domains field from the underlying protobuf before sending the update request.
Listing Defaults
By default, Project.listall() only returns active projects. To see projects that have been archived, you must explicitly pass archived=True.
Label Replacement
When updating labels via Project.update(labels={...}), the provided dictionary replaces all existing labels for that project rather than merging with them.