112 references to WriteLine
Aspire.Hosting.CodeGeneration.Python (112)
AtsPythonCodeGenerator.cs (112)
95WriteLine("# aspire.py - Capability-based Aspire SDK"); 96WriteLine("# GENERATED CODE - DO NOT EDIT"); 97WriteLine(); 98WriteLine("from __future__ import annotations"); 99WriteLine(); 100WriteLine("import os"); 101WriteLine("import sys"); 102WriteLine("from dataclasses import dataclass"); 103WriteLine("from enum import Enum"); 104WriteLine("from typing import Any, Callable, Dict, List"); 105WriteLine(); 106WriteLine("from transport import AspireClient, Handle, CapabilityError, register_callback, register_handle_wrapper, register_cancellation"); 107WriteLine("from base import AspireDict, AspireList, ReferenceExpression, ref_expr, HandleWrapperBase, ResourceBuilderBase, serialize_value"); 108WriteLine(); 118WriteLine("# ============================================================================"); 119WriteLine("# Enums"); 120WriteLine("# ============================================================================"); 121WriteLine(); 131WriteLine($"class {enumName}(str, Enum):"); 136WriteLine($" {memberName} = \"{member}\""); 138WriteLine(); 149WriteLine("# ============================================================================"); 150WriteLine("# DTOs"); 151WriteLine("# ============================================================================"); 152WriteLine(); 157WriteLine("@dataclass"); 158WriteLine($"class {dtoName}:"); 161WriteLine(" pass"); 162WriteLine(); 173WriteLine($" {propertyName}: {propertyType}{optionalSuffix}{defaultValue}"); 176WriteLine(); 177WriteLine(" def to_dict(self) -> Dict[str, Any]:"); 178WriteLine(" return {"); 183WriteLine($" \"{property.Name}\": serialize_value(self.{propertyName}),"); 185WriteLine(" }"); 186WriteLine(); 199WriteLine("# ============================================================================"); 200WriteLine("# Handle Wrappers"); 201WriteLine("# ============================================================================"); 202WriteLine(); 207WriteLine($"class {handleType.ClassName}({baseClass}):"); 208WriteLine(" def __init__(self, handle: Handle, client: AspireClient):"); 209WriteLine(" super().__init__(handle, client)"); 210WriteLine(); 221WriteLine(" pass"); 224WriteLine(); 250WriteLine($" def {methodName}({signature}) -> {returnType}:"); 253WriteLine($" \"\"\"{capability.Description}\"\"\""); 257WriteLine($" args: Dict[str, Any] = {{ \"{targetParamName}\": serialize_value(self._handle) }}"); 265WriteLine($" {parameterName}_id = register_callback({parameterName}) if {parameterName} is not None else None"); 266WriteLine($" if {parameterName}_id is not None:"); 267WriteLine($" args[\"{parameter.Name}\"] = {parameterName}_id"); 273WriteLine($" {parameterName}_id = register_cancellation({parameterName}, self._client) if {parameterName} is not None else None"); 274WriteLine($" if {parameterName}_id is not None:"); 275WriteLine($" args[\"{parameter.Name}\"] = {parameterName}_id"); 281WriteLine($" if {parameterName} is not None:"); 282WriteLine($" args[\"{parameter.Name}\"] = serialize_value({parameterName})"); 286WriteLine($" args[\"{parameter.Name}\"] = serialize_value({parameterName})"); 292WriteLine($" self._client.invoke_capability(\"{capability.CapabilityId}\", args)"); 293WriteLine(" return None"); 297WriteLine($" return self._client.invoke_capability(\"{capability.CapabilityId}\", args)"); 299WriteLine(); 333WriteLine($" @property"); 334WriteLine($" def {methodName}(self) -> {typeHint}:"); 337WriteLine($" \"\"\"{capability.Description}\"\"\""); 339WriteLine($" if not hasattr(self, '_{methodName}'):"); 340WriteLine($" self._{methodName} = {wrapperType}("); 341WriteLine($" self._handle,"); 342WriteLine($" self._client,"); 343WriteLine($" \"{capability.CapabilityId}\""); 344WriteLine($" )"); 345WriteLine($" return self._{methodName}"); 346WriteLine(); 353WriteLine("# ============================================================================"); 354WriteLine("# Handle wrapper registrations"); 355WriteLine("# ============================================================================"); 356WriteLine(); 360WriteLine($"register_handle_wrapper(\"{handleType.TypeId}\", lambda handle, client: {handleType.ClassName}(handle, client))"); 366WriteLine($"register_handle_wrapper(\"{typeId}\", lambda handle, client: {wrapperType}(handle, client))"); 369WriteLine(); 378WriteLine("# ============================================================================"); 379WriteLine("# Connection Helpers"); 380WriteLine("# ============================================================================"); 381WriteLine(); 382WriteLine("def connect() -> AspireClient:"); 383WriteLine(" socket_path = os.environ.get(\"REMOTE_APP_HOST_SOCKET_PATH\")"); 384WriteLine(" if not socket_path:"); 385WriteLine(" raise RuntimeError(\"REMOTE_APP_HOST_SOCKET_PATH environment variable not set. Run this application using `aspire run`.\")"); 386WriteLine(" client = AspireClient(socket_path)"); 387WriteLine(" client.connect()"); 388WriteLine(" client.on_disconnect(lambda: sys.exit(1))"); 389WriteLine(" return client"); 390WriteLine(); 391WriteLine($"def create_builder(options: Any | None = None) -> {builderClassName}:"); 392WriteLine(" client = connect()"); 393WriteLine(" resolved_options: Dict[str, Any] = {}"); 394WriteLine(" if options is not None:"); 395WriteLine(" if hasattr(options, \"to_dict\"):"); 396WriteLine(" resolved_options.update(options.to_dict())"); 397WriteLine(" elif isinstance(options, dict):"); 398WriteLine(" resolved_options.update(options)"); 399WriteLine(" resolved_options.setdefault(\"Args\", sys.argv[1:])"); 400WriteLine(" resolved_options.setdefault(\"ProjectDirectory\", os.environ.get(\"ASPIRE_PROJECT_DIRECTORY\", os.getcwd()))"); 401WriteLine(" result = client.invoke_capability(\"Aspire.Hosting/createBuilderWithOptions\", {\"options\": resolved_options})"); 402WriteLine(" return result"); 403WriteLine(); 404WriteLine("# Re-export commonly used types"); 405WriteLine("CapabilityError = CapabilityError"); 406WriteLine("Handle = Handle"); 407WriteLine("ReferenceExpression = ReferenceExpression"); 408WriteLine("ref_expr = ref_expr"); 409WriteLine();