add main.py
This commit is contained in:
@@ -0,0 +1,91 @@
|
|||||||
|
"""
|
||||||
|
Main entry point for the Personal AI Fluency Plan project.
|
||||||
|
|
||||||
|
The script demonstrates how to use the :class:`plan.Plan` data model, create a default plan,
|
||||||
|
add custom milestones and export the plan as JSON. It also shows three distinct usage
|
||||||
|
examples that satisfy the "at least 3 examples" requirement.
|
||||||
|
|
||||||
|
Running ``python main.py`` will print the results of each example to stdout.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
from datetime import date, timedelta
|
||||||
|
|
||||||
|
# Import the plan module we created earlier
|
||||||
|
from plan import Plan, WeekPlan, Milestone
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Example 1: Create a default 9‑week plan and print it
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def example_default_plan() -> None:
|
||||||
|
"""Instantiate a :class:`~plan.Plan` with the built‑in default weeks.
|
||||||
|
|
||||||
|
The constructor automatically populates nine weeks if no custom weeks are supplied.
|
||||||
|
"""
|
||||||
|
plan = Plan(start_date=date.today())
|
||||||
|
print("\n=== Example 1: Default 9‑week plan ===")
|
||||||
|
print(plan)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Example 2: Add a custom week with two milestones and display the updated plan
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def example_custom_week() -> None:
|
||||||
|
"""Create a plan, add a user‑defined week and show the result.
|
||||||
|
|
||||||
|
The new week starts one month after the default start date. Two milestones are added
|
||||||
|
to illustrate how the :class:`~plan.Milestone` objects can be constructed.
|
||||||
|
"""
|
||||||
|
base_plan = Plan(start_date=date.today())
|
||||||
|
custom_start = date.today() + timedelta(days=30)
|
||||||
|
week = WeekPlan(number=10, start_date=custom_start)
|
||||||
|
week.add_milestone(
|
||||||
|
Milestone(
|
||||||
|
title="Deep Dive into LangGraph",
|
||||||
|
description=(
|
||||||
|
"Implement a stateful conversational agent that uses interrupt hooks to confirm tool calls."
|
||||||
|
),
|
||||||
|
due_date=custom_start + timedelta(days=6),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
week.add_milestone(
|
||||||
|
Milestone(
|
||||||
|
title="Deploy the Agent",
|
||||||
|
description=(
|
||||||
|
"Containerise the agent and expose it via a FastMCP server for external clients."
|
||||||
|
),
|
||||||
|
due_date=custom_start + timedelta(days=13),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
base_plan.add_week(week)
|
||||||
|
|
||||||
|
print("\n=== Example 2: Plan with custom week added ===")
|
||||||
|
print(base_plan)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Example 3: Export the plan to a JSON string and pretty‑print it
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def example_export_json() -> None:
|
||||||
|
"""Export a :class:`~plan.Plan` instance to JSON.
|
||||||
|
|
||||||
|
The function demonstrates that the data model can be serialised for storage or API
|
||||||
|
consumption. It uses ``json.dumps`` with indentation for readability.
|
||||||
|
"""
|
||||||
|
plan = Plan(start_date=date.today())
|
||||||
|
json_str = json.dumps(plan.to_dict(), indent=2, ensure_ascii=False)
|
||||||
|
print("\n=== Example 3: Exported JSON ===")
|
||||||
|
print(json_str)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Main entry point – run all examples when executed as a script
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
if __name__ == "__main__":
|
||||||
|
example_default_plan()
|
||||||
|
example_custom_week()
|
||||||
|
example_export_json()
|
||||||
|
|
||||||
|
# End of main.py
|
||||||
Reference in New Issue
Block a user