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")]