/** * Generates pack of fixes available for some unresolved import statement. Be sure to call {@link * #isApplicable(com.jetbrains.python.psi.PyImportStatementBase)} first to make sure this * statement is supported * * @param importStatementBase statement to fix * @return pack of fixes */ @NotNull public static Collection<GenerateBinaryStubsFix> generateFixes( @NotNull final PyImportStatementBase importStatementBase) { final List<String> names = importStatementBase.getFullyQualifiedObjectNames(); final List<GenerateBinaryStubsFix> result = new ArrayList<GenerateBinaryStubsFix>(names.size()); if (importStatementBase instanceof PyFromImportStatement && names.isEmpty()) { final QualifiedName qName = ((PyFromImportStatement) importStatementBase).getImportSourceQName(); if (qName != null) result.add(new GenerateBinaryStubsFix(importStatementBase, qName.toString())); } for (final String qualifiedName : names) { result.add(new GenerateBinaryStubsFix(importStatementBase, qualifiedName)); } return result; }
/** * Checks if this fix can help you to generate binary stubs * * @param importStatementBase statement to fix * @return true if this fix could work */ public static boolean isApplicable(@NotNull final PyImportStatementBase importStatementBase) { if (importStatementBase.getFullyQualifiedObjectNames().isEmpty() && !(importStatementBase instanceof PyFromImportStatement && ((PyFromImportStatement) importStatementBase).isStarImport())) { return false; } final Sdk sdk = getPythonSdk(importStatementBase); if (sdk == null) { return false; } final PythonSdkFlavor flavor = PythonSdkFlavor.getFlavor(sdk); if (flavor instanceof IronPythonSdkFlavor) { return true; } return isGtk(importStatementBase); }