from plato.v2 import AsyncPlato, Env
async def multi_env_example():
plato = AsyncPlato()
# Create session with multiple environments
session = await plato.sessions.create(
envs=[
Env.simulator("gitea", alias="git"),
Env.simulator("espocrm", alias="crm"),
]
)
try:
# Get environments
git = session.get_env("git")
crm = session.get_env("crm")
# Reset all to initial state
await session.reset()
# Execute commands on specific environments
git_result = await git.execute("git status")
crm_result = await crm.execute("php artisan migrate:status")
# Get state from all environments
state = await session.get_state()
for job_id, env_state in state.results.items():
print(f"{job_id}: {len(env_state.mutations)} mutations")
# Snapshot everything
snapshot = await session.snapshot()
finally:
await session.close()
await plato.close()