Guía de migración de complementos de Python para sesiones: mayo de 2025

SessionsPythonPlugin ha sido actualizado para utilizar la versión más reciente (2024-10-02-preliminar) de la API de sesiones dinámicas del intérprete de código de Azure. La nueva API ha introducido cambios importantes, que se reflejan en la superficie de API pública del complemento.

Esta guía de migración le ayudará a migrar el código existente a la versión más reciente del complemento.

Inicialización del complemento

La firma del constructor del complemento ha cambiado para aceptar un CancellationToken como argumento para la función authTokenProvider. Este cambio le permite cancelar el proceso de generación de tokens si es necesario:

// Before
static async Task<string> GetAuthTokenAsync()
{
    return tokenProvider.GetToken();
}

// After
static async Task<string> GetAuthTokenAsync(CancellationToken ct)
{
    return tokenProvider.GetToken(ct);
}

var plugin = new SessionsPythonPlugin(settings, httpClientFactory, GetAuthTokenAsync);

El método UploadFileAsync

La UploadFileAsync firma del método ha cambiado para representar mejor el propósito de los parámetros:

// Before
string remoteFilePath = "your_file.txt";
string? localFilePath = "C:\documents\your_file.txt";

await plugin.UploadFileAsync(remoteFilePath: remoteFilePath, localFilePath: localFilePath);

// After
string remoteFileName = "your_file.txt";
string localFilePath = "C:\documents\your_file.txt";

await plugin.UploadFileAsync(remoteFileName: remoteFileName, localFilePath: localFilePath);

El método DownloadFileAsync

Del mismo modo, la firma del DownloadFileAsync método ha cambiado para representar mejor el propósito de los parámetros:

// Before
string remoteFilePath = "your_file.txt";
await plugin.DownloadFileAsync(remoteFilePath: remoteFilePath);

// After
string remoteFileName = "your_file.txt";
await plugin.DownloadFileAsync(remoteFileName: remoteFileName);

El método ExecuteCodeAsync

La firma del ExecuteCodeAsync método ha cambiado para proporcionar una manera estructurada de trabajar con resultados de ejecución:

// Before
string result = await plugin.ExecuteCodeAsync(code: "print('Hello, world!')");

// After
SessionsPythonCodeExecutionResult result = await plugin.ExecuteCodeAsync(code: "print('Hello, world!')");
string status = result.Status;
string? executionResult = result.Result?.ExecutionResult;
string? stdout = result.Result?.StdOut;
string? stderr = result.Result?.StdErr;

La clase SessionsRemoteFileMetadata

La SessionsRemoteFileMetadata clase de modelo, usada por los UploadFileAsync métodos y ListFilesAsync , se ha actualizado para representar mejor los metadatos de los archivos y directorios remotos:

// Before
SessionsRemoteFileMetadata file = await plugin.UploadFileAsync(...);
string fileName = file.Filename;
long fileSize = file.Size;
DateTime? lastModified = file.LastModifiedTime;

// After
SessionsRemoteFileMetadata file = await plugin.UploadFileAsync(...);
string name = file.Name;
long? size = file.SizeInBytes;
DateTime lastModified = file.LastModifiedAt;