Skip to content

Commit 229ee11

Browse files
vchikoti1998rli
andauthored
Add Lambda Runtime Support for Python_3.11 (#3776)
* Add Python_3.11 support * Updated plugin versions * updated sdk dependency with latest version --------- Co-authored-by: Richard Li <[email protected]>
1 parent 95f25b3 commit 229ee11

File tree

16 files changed

+73
-8
lines changed

16 files changed

+73
-8
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Add support for Lambda runtime Python 3.11"
4+
}

core/src/software/aws/toolkits/core/lambda/LambdaRuntime.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ enum class LambdaRuntime(
3030
PYTHON3_8(Runtime.PYTHON3_8, architectures = ARM_COMPATIBLE),
3131
PYTHON3_9(Runtime.PYTHON3_9, minSamDebugging = "1.28.0", minSamInit = "1.28.0", architectures = ARM_COMPATIBLE),
3232
PYTHON3_10(Runtime.PYTHON3_10, minSamDebugging = "1.78.0", minSamInit = "1.78.0", architectures = ARM_COMPATIBLE),
33+
PYTHON3_11(Runtime.PYTHON3_11, minSamDebugging = "1.87.0", minSamInit = "1.87.0", architectures = ARM_COMPATIBLE),
3334
DOTNET5_0(null, minSamInit = "1.16.0", runtimeOverride = "dotnet5.0"),
3435
DOTNET6_0(Runtime.DOTNET6, minSamDebugging = "1.40.1", minSamInit = "1.40.1", architectures = ARM_COMPATIBLE);
3536

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apacheCommons = "2.8.0"
33
assertJ = "3.20.2" # Upgrading leads to SAM errors: https://youtrack.jetbrains.com/issue/KT-17765
44
# match with <root>/settings.gradle.kts
5-
awsSdk = "2.20.55"
5+
awsSdk = "2.20.111"
66
commonmark = "0.17.1"
77
detekt = "1.23.0"
88
intellijGradle = "1.13.2"

jetbrains-core/it/software/aws/toolkits/jetbrains/services/lambda/python/PythonLocalLambdaRunConfigurationIntegrationTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class PythonLocalLambdaRunConfigurationIntegrationTest(private val runtime: Runt
4646
arrayOf(Runtime.PYTHON3_7),
4747
arrayOf(Runtime.PYTHON3_8),
4848
arrayOf(Runtime.PYTHON3_9),
49-
arrayOf(Runtime.PYTHON3_10)
49+
arrayOf(Runtime.PYTHON3_10),
50+
arrayOf(Runtime.PYTHON3_11)
5051
)
5152
}
5253

jetbrains-core/resources/META-INF/ext-python.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.python.Python38ImageDebugSupport"/>
2424
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.python.Python39ImageDebugSupport"/>
2525
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.python.Python310ImageDebugSupport"/>
26+
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.python.Python311ImageDebugSupport"/>
2627
<sam.projectWizard id="PYTHON" implementationClass="software.aws.toolkits.jetbrains.services.lambda.python.PythonSamProjectWizard"/>
2728
</extensions>
2829
<extensions defaultExtensionNs="aws.toolkit.codewhisperer">

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonDebugSupport.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ class Python310ImageDebugSupport : PythonImageDebugSupport() {
100100
override val bootstrapPath: String = "/var/runtime/bootstrap.py"
101101
}
102102

103+
class Python311ImageDebugSupport : PythonImageDebugSupport() {
104+
override val id: String = LambdaRuntime.PYTHON3_11.toString()
105+
override fun displayName() = LambdaRuntime.PYTHON3_11.toString().capitalize()
106+
override val pythonPath: String = "/var/lang/bin/python3.11"
107+
override val bootstrapPath: String = "/var/runtime/bootstrap.py"
108+
}
109+
103110
private const val DEBUGGER_VOLUME_PATH = "/tmp/lambci_debug_files"
104111

105112
private fun createDebugProcess(

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonRuntimeGroup.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ class PythonRuntimeGroup : SdkBasedRuntimeGroup() {
2323
LambdaRuntime.PYTHON3_7,
2424
LambdaRuntime.PYTHON3_8,
2525
LambdaRuntime.PYTHON3_9,
26-
LambdaRuntime.PYTHON3_10
26+
LambdaRuntime.PYTHON3_10,
27+
LambdaRuntime.PYTHON3_11
2728
)
2829

2930
override fun runtimeForSdk(sdk: Sdk): LambdaRuntime? = when {
31+
sdk.sdkType is PythonSdkType && PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON311) -> LambdaRuntime.PYTHON3_11
3032
sdk.sdkType is PythonSdkType && PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON310) -> LambdaRuntime.PYTHON3_10
3133
sdk.sdkType is PythonSdkType && PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON39) -> LambdaRuntime.PYTHON3_9
3234
sdk.sdkType is PythonSdkType && PythonSdkType.getLanguageLevelForSdk(sdk).isAtLeast(LanguageLevel.PYTHON38) -> LambdaRuntime.PYTHON3_8

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonSamProjectWizard.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ import software.aws.toolkits.jetbrains.services.lambda.wizard.SdkSelector
2222
import software.aws.toolkits.jetbrains.services.lambda.wizard.TemplateParameters
2323
import software.aws.toolkits.resources.message
2424

25-
private val pythonTemplateRuntimes = setOf(LambdaRuntime.PYTHON3_7, LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10)
26-
private val eventBridgeTemplateRuntimes = setOf(LambdaRuntime.PYTHON3_7, LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10)
25+
private val pythonTemplateRuntimes =
26+
setOf(LambdaRuntime.PYTHON3_7, LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11)
27+
private val eventBridgeTemplateRuntimes =
28+
setOf(LambdaRuntime.PYTHON3_7, LambdaRuntime.PYTHON3_8, LambdaRuntime.PYTHON3_9, LambdaRuntime.PYTHON3_10, LambdaRuntime.PYTHON3_11)
2729

2830
class PythonSamProjectWizard : SamProjectWizard {
2931
override fun createSdkSelectionPanel(projectLocation: TextFieldWithBrowseButton?): SdkSelector = when {

jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/execution/local/LocalLambdaRunConfigurationTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ class LocalLambdaRunConfigurationTest {
654654
<option name="inputIsFile" value="false" />
655655
<option name="logicalFunctionName" />
656656
<option name="regionId" value="us-west-2" />
657-
<option name="runtime" value="python3.10" />
657+
<option name="runtime" value="python3.11" />
658658
<option name="templateFile" />
659659
<option name="useTemplate" value="false" />
660660
<method v="2" />
@@ -672,7 +672,7 @@ class LocalLambdaRunConfigurationTest {
672672
assertThat(runConfiguration.logicalId()).isNull()
673673
assertThat(runConfiguration.handler()).isEqualTo("helloworld.App::handleRequest")
674674
assertThat(runConfiguration.architecture()).isEqualTo(LambdaArchitecture.ARM64.toString())
675-
assertThat(runConfiguration.runtime()).isEqualTo(LambdaRuntime.PYTHON3_10)
675+
assertThat(runConfiguration.runtime()).isEqualTo(LambdaRuntime.PYTHON3_11)
676676
assertThat(runConfiguration.environmentVariables()).containsAllEntriesOf(mapOf("Foo" to "Bar"))
677677
assertThat(runConfiguration.regionId()).isEqualTo("us-west-2")
678678
assertThat(runConfiguration.credentialProviderId()).isEqualTo("profile:default")

jetbrains-core/tst/software/aws/toolkits/jetbrains/services/lambda/python/PythonHandlerCompletionProviderTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,10 @@ class PythonHandlerCompletionProviderTest {
3939
val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.PYTHON3_10)
4040
assertFalse(provider.isCompletionSupported)
4141
}
42+
43+
@Test
44+
fun completionIsNotSupportedPython311() {
45+
val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.PYTHON3_11)
46+
assertFalse(provider.isCompletionSupported)
47+
}
4248
}

0 commit comments

Comments
 (0)