diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index e1f125e93..4347ec797 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -33,13 +33,14 @@ jobs: Hosting.GoFeatureFlag.Tests, Hosting.Golang.Tests, Hosting.Java.Tests, - Hosting.Keycloak.Extensions.Tests, Hosting.k6.Tests, + Hosting.Keycloak.Extensions.Tests, Hosting.KurrentDB.Tests, Hosting.LavinMQ.Tests, Hosting.MailPit.Tests, Hosting.McpInspector.Tests, Hosting.Meilisearch.Tests, + Hosting.Minio.Tests, Hosting.MongoDB.Extensions.Tests, Hosting.MySql.Extensions.Tests, Hosting.Ngrok.Tests, @@ -55,9 +56,8 @@ jobs: Hosting.Rust.Tests, Hosting.Solr.Tests, Hosting.SqlDatabaseProjects.Tests, - Hosting.SqlServer.Extensions.Tests, Hosting.Sqlite.Tests, - Hosting.Minio.Tests, + Hosting.SqlServer.Extensions.Tests, Hosting.SurrealDb.Tests, # Client integration tests @@ -67,9 +67,9 @@ jobs: Meilisearch.Tests, Microsoft.Data.Sqlite.Tests, Microsoft.EntityFrameworkCore.Sqlite.Tests, + Minio.Client.Tests, OllamaSharp.Tests, RavenDB.Client.Tests, - Minio.Client.Tests, SurrealDb.Tests, ] diff --git a/CommunityToolkit.Aspire.slnx b/CommunityToolkit.Aspire.slnx index e9eca42af..c37a57002 100644 --- a/CommunityToolkit.Aspire.slnx +++ b/CommunityToolkit.Aspire.slnx @@ -59,10 +59,10 @@ - - - - + + + + @@ -130,9 +130,6 @@ - - - @@ -211,7 +208,7 @@ - + @@ -246,7 +243,6 @@ - @@ -256,7 +252,7 @@ - + diff --git a/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost/Program.cs b/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost/Program.cs index 2188bca08..fd0fe3ad9 100644 --- a/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost/Program.cs +++ b/examples/python/CommunityToolkit.Aspire.Hosting.Python.Extensions.AppHost/Program.cs @@ -1,4 +1,5 @@ -#pragma warning disable CS0612 +#pragma warning disable CS0612 // Type or member is obsolete +#pragma warning disable CS0618 // Type or member is obsolete var builder = DistributedApplication.CreateBuilder(args); builder.AddUvicornApp("uvicornapp", "../uvicornapp-api", "main:app"); diff --git a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/README.md b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/README.md index 7f15402c3..e9ff639fa 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/README.md +++ b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/README.md @@ -1,5 +1,15 @@ # CommunityToolkit.Aspire.Hosting.Python.Extensions library +> **⚠️ DEPRECATION NOTICE** +> This package is deprecated as of Aspire 13.0. The functionality provided by this package is now part of the core `Aspire.Hosting.Python` package. +> +> **Migration Guide:** +> - Replace `AddUvicornApp()` calls with `Aspire.Hosting.Python.PythonAppResourceBuilderExtensions.AddUvicornApp()` +> - Replace `AddUvApp()` calls with `AddPythonApp().WithUvEnvironment()` +> - Update resource type references from `CommunityToolkit.Aspire.Hosting.Python.Extensions.UvicornAppResource` to `Aspire.Hosting.ApplicationModel.UvicornAppResource` +> +> This package will be removed in a future release. Please migrate your applications to use the core `Aspire.Hosting.Python` package. + Provides extensions methods and resource definitions for the .NET Aspire AppHost to extend the support for Python applications. Current support includes: - Uvicorn - Uv diff --git a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppHostingExtension.cs b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppHostingExtension.cs index dd3b4b1f3..c17fe189a 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppHostingExtension.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppHostingExtension.cs @@ -1,3 +1,4 @@ +using System.ComponentModel; using Aspire.Hosting.ApplicationModel; using CommunityToolkit.Aspire.Utils; @@ -18,6 +19,8 @@ public static class UvAppHostingExtension /// Optional arguments to pass to the script. /// An for the Uv application resource. /// Thrown if is null. + [Obsolete("AddUvApp is now part of Aspire.Hosting.Python. Use Aspire.Hosting.Python.PythonAppResourceBuilderExtensions.AddPythonApp with WithUvEnvironment instead. This method will be removed in a future release.")] + [EditorBrowsable(EditorBrowsableState.Never)] public static IResourceBuilder AddUvApp( this IDistributedApplicationBuilder builder, string name, @@ -30,6 +33,7 @@ public static IResourceBuilder AddUvApp( return builder.AddUvApp(name, scriptPath, projectDirectory, ".venv", scriptArgs); } + [Obsolete] private static IResourceBuilder AddUvApp(this IDistributedApplicationBuilder builder, string name, string scriptPath, diff --git a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppResource.cs b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppResource.cs index f1fc7ca91..e4e2c583e 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppResource.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppResource.cs @@ -8,6 +8,7 @@ namespace Aspire.Hosting.ApplicationModel; /// The name of the resource. /// The path to the executable used to run the python app. /// The working directory for uv. +[Obsolete("UvAppResource is now superseded by functionality in Aspire.Hosting.Python. Use Aspire.Hosting.Python.PythonAppResourceBuilderExtensions.AddPythonApp with WithUvEnvironment instead. This class will be removed in a future release.")] public class UvAppResource(string name, string executablePath, string workingDirectory) : PythonAppResource(name, executablePath, workingDirectory), IResourceWithServiceDiscovery { diff --git a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppHostingExtension.cs b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppHostingExtension.cs index 119ea5b90..b50187d27 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppHostingExtension.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppHostingExtension.cs @@ -1,5 +1,5 @@ -using Aspire.Hosting.ApplicationModel; -using Aspire.Hosting.Python; +using System.ComponentModel; +using Aspire.Hosting.ApplicationModel; using CommunityToolkit.Aspire.Utils; using UvicornAppResource = Aspire.Hosting.ApplicationModel.UvicornAppResource; @@ -20,6 +20,8 @@ public static class UvicornAppHostingExtension /// Optional arguments to pass to the script. /// An for the Uvicorn application resource. /// Thrown if is null. + [Obsolete("AddUvicornApp is now part of Aspire.Hosting.Python. Use the Aspire.Hosting.Python.PythonAppResourceBuilderExtensions.AddUvicornApp method instead. This method will be removed in a future release.")] + [EditorBrowsable(EditorBrowsableState.Never)] public static IResourceBuilder AddUvicornApp( this IDistributedApplicationBuilder builder, [ResourceName] string name, @@ -32,6 +34,7 @@ public static IResourceBuilder AddUvicornApp( return builder.AddUvicornApp(name, projectDirectory, appName, ".venv", args); } + [Obsolete] private static IResourceBuilder AddUvicornApp(this IDistributedApplicationBuilder builder, string name, string projectDirectory, diff --git a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppResource.cs b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppResource.cs index d6ef4340a..8f5200859 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppResource.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppResource.cs @@ -8,5 +8,6 @@ namespace Aspire.Hosting.ApplicationModel; /// The name of the resource. /// The path to the executable used to run the python app. /// The working directory for uvicorn. +[Obsolete("UvicornAppResource is now part of Aspire.Hosting.Python. Use Aspire.Hosting.ApplicationModel.UvicornAppResource instead. This class will be removed in a future release.")] public class UvicornAppResource(string name, string executablePath, string workingDirectory) : PythonAppResource(name, executablePath, workingDirectory), IResourceWithServiceDiscovery; \ No newline at end of file diff --git a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/VirtualEnvironment.cs b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/VirtualEnvironment.cs index 31b64c0cc..b6abaea14 100644 --- a/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/VirtualEnvironment.cs +++ b/src/CommunityToolkit.Aspire.Hosting.Python.Extensions/VirtualEnvironment.cs @@ -2,6 +2,7 @@ namespace Aspire.Hosting.ApplicationModel; +[Obsolete("VirtualEnvironment is now part of Aspire.Hosting.Python internal implementation. Use Aspire.Hosting.Python.PythonAppResourceBuilderExtensions.WithVirtualEnvironment or WithUvEnvironment instead. This class will be removed in a future release.")] internal sealed class VirtualEnvironment(string virtualEnvironmentPath) { /// diff --git a/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/AppHostTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/AppHostTests.cs index d06685860..de0d94f19 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/AppHostTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/AppHostTests.cs @@ -3,6 +3,8 @@ namespace CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests; #pragma warning disable CTASPIRE001 +#pragma warning disable CS0612 // Type or member is obsolete +#pragma warning disable CS0618 // Type or member is obsolete public class AppHostTests(AspireIntegrationTestFixture fixture) : IClassFixture> { [Theory(Skip = "To be reviewed with https://github.com/CommunityToolkit/Aspire/issues/917")] diff --git a/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/ResourceCreationTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/ResourceCreationTests.cs index 69841a702..7e08a0538 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/ResourceCreationTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests/ResourceCreationTests.cs @@ -2,7 +2,8 @@ namespace CommunityToolkit.Aspire.Hosting.Python.Extensions.Tests; -#pragma warning disable CS0612 +#pragma warning disable CS0612 // Type or member is obsolete +#pragma warning disable CS0618 // Type or member is obsolete public class ResourceCreationTests { [Fact(Skip = "Being removed with https://github.com/CommunityToolkit/Aspire/issues/917")]