diff --git a/CHANGELOG.md b/CHANGELOG.md index 93ca5506e5e..6420c644de4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # _3.97_ (2025-10-16) +- **(Bug Fix)** add support for python3.13 # _3.96_ (2025-10-02) - **(Bug Fix)** remove findings message from chat even when all issues are ignored diff --git a/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt index 66da37f6bd0..1e200de2de1 100644 --- a/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt +++ b/plugins/core/core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt @@ -31,6 +31,7 @@ enum class LambdaRuntime( PYTHON3_10(Runtime.PYTHON3_10, minSamDebugging = "1.78.0", minSamInit = "1.78.0", architectures = ARM_COMPATIBLE), PYTHON3_11(Runtime.PYTHON3_11, minSamDebugging = "1.87.0", minSamInit = "1.87.0", architectures = ARM_COMPATIBLE), PYTHON3_12(Runtime.PYTHON3_12, minSamDebugging = "1.103.0", minSamInit = "1.103.0", architectures = ARM_COMPATIBLE), + PYTHON3_13(Runtime.PYTHON3_13, minSamDebugging = "1.129.0", minSamInit = "1.129.0", architectures = ARM_COMPATIBLE), DOTNET6_0(Runtime.DOTNET6, minSamDebugging = "1.40.1", minSamInit = "1.40.1", architectures = ARM_COMPATIBLE), ; diff --git a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/lambda/python/PythonLocalLambdaRunConfigurationIntegrationTest.kt b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/lambda/python/PythonLocalLambdaRunConfigurationIntegrationTest.kt index 6800d5ce31b..29623120ab5 100644 --- a/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/lambda/python/PythonLocalLambdaRunConfigurationIntegrationTest.kt +++ b/plugins/toolkit/jetbrains-core/it/software/aws/toolkits/jetbrains/services/lambda/python/PythonLocalLambdaRunConfigurationIntegrationTest.kt @@ -48,6 +48,7 @@ class PythonLocalLambdaRunConfigurationIntegrationTest(private val runtime: Runt arrayOf(Runtime.PYTHON3_10), arrayOf(Runtime.PYTHON3_11), arrayOf(Runtime.PYTHON3_12), + arrayOf(Runtime.PYTHON3_13), ) } diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonDebugSupport.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonDebugSupport.kt index 4547655f6a2..b8896cfa8f4 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonDebugSupport.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonDebugSupport.kt @@ -106,6 +106,13 @@ class Python312ImageDebugSupport : PythonImageDebugSupport() { override val bootstrapPath: String = "/var/runtime/bootstrap.py" } +class Python313ImageDebugSupport : PythonImageDebugSupport() { + override val id: String = LambdaRuntime.PYTHON3_13.toString() + override fun displayName() = LambdaRuntime.PYTHON3_13.toString().capitalize() + override val pythonPath: String = "/var/lang/bin/python3.13" + override val bootstrapPath: String = "/var/runtime/bootstrap.py" +} + private const val DEBUGGER_VOLUME_PATH = "/tmp/lambci_debug_files" private fun createDebugProcess( diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroup.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroup.kt index 4cd17e72e7c..6bf65ddfac6 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroup.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroup.kt @@ -26,11 +26,13 @@ class PythonRuntimeGroup : SdkBasedRuntimeGroup() { LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11, LambdaRuntime.PYTHON3_12 + LambdaRuntime.PYTHON3_13 ) override fun runtimeForSdk(sdk: Sdk): LambdaRuntime? = when { !PythonSdkUtil.isPythonSdk(sdk) -> null + PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON313) -> LambdaRuntime.PYTHON3_13 PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON312) -> LambdaRuntime.PYTHON3_12 PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON311) -> LambdaRuntime.PYTHON3_11 PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON310) -> LambdaRuntime.PYTHON3_10 diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonSamProjectWizard.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonSamProjectWizard.kt index c22e155b868..0ce052170ff 100644 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonSamProjectWizard.kt +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonSamProjectWizard.kt @@ -23,9 +23,9 @@ import software.aws.toolkits.jetbrains.services.lambda.wizard.TemplateParameters import software.aws.toolkits.resources.message private val pythonTemplateRuntimes = - setOf(LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11, LambdaRuntime.PYTHON3_12) + setOf(LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11, LambdaRuntime.PYTHON3_12, LambdaRuntime.PYTHON3_13) private val eventBridgeTemplateRuntimes = - setOf(LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11, LambdaRuntime.PYTHON3_12) + setOf(LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11, LambdaRuntime.PYTHON3_12, LambdaRuntime.PYTHON3_13) class PythonSamProjectWizard : SamProjectWizard { override fun createSdkSelectionPanel(projectLocation: TextFieldWithBrowseButton?): SdkSelector = when { diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonHandlerCompletionProviderTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonHandlerCompletionProviderTest.kt index 86587e139df..528aea82e10 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonHandlerCompletionProviderTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonHandlerCompletionProviderTest.kt @@ -39,4 +39,10 @@ class PythonHandlerCompletionProviderTest { val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.PYTHON3_11) assertThat(provider.isCompletionSupported).isFalse() } + + @Test + fun completionIsNotSupportedPython313() { + val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.PYTHON3_13) + assertThat(provider.isCompletionSupported).isFalse() + } } diff --git a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroupTest.kt b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroupTest.kt index 56b4e5e8b57..6e24bc5cb65 100644 --- a/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroupTest.kt +++ b/plugins/toolkit/jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroupTest.kt @@ -57,4 +57,13 @@ class PythonRuntimeGroupTest { assertThat(sut.determineRuntime(module)).isEqualTo(LambdaRuntime.PYTHON3_12) } + + @Test + fun testRuntimeDetection313() { + val module = projectRule.module + // PythonCodeInsightTestFixtureRule already sets SDK to ? + // projectRule.setModuleSdk(module, PyTestSdk.create("?")) + + assertThat(sut.determineRuntime(module)).isEqualTo(LambdaRuntime.PYTHON3_13) + } }