in jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/python/PythonLambdaHandlerResolver.kt [85:110]
override fun determineHandler(element: PsiElement): String? {
if (element.node?.elementType != PyTokenTypes.IDENTIFIER) {
return null
}
val project = element.project
val function = element.parent as? PyFunction ?: return null
val virtualFile = element.containingFile.virtualFile ?: return null
if (function.parent is PyFile &&
function.parameterList.parameters.size == 2 &&
// Ignore files that are considered test sources. Ignore the IDE warning, it uses IDE extension points.
!TestSourcesFilter.isTestSources(virtualFile, project) &&
// ignore pytest tests: they start with test_ by convention:
// https://pytest.readthedocs.io/en/reorganize-docs/new-docs/user/naming_conventions.html#id1
function.name?.startsWith("test_") != true
) {
val requirementsFileDir = runCatching { PythonLambdaBuilder.locateRequirementsTxt(virtualFile).parent }.getOrNull() ?: return null
val filePath = if (virtualFile.parent != requirementsFileDir) {
VfsUtil.getRelativePath(virtualFile.parent, requirementsFileDir)?.let { "$it/" } ?: return null
} else {
""
}
return "$filePath${virtualFile.nameWithoutExtension}.${function.name}"
}
return null
}