diff options
Diffstat (limited to 'python/psi-api/src/com/jetbrains/python')
3 files changed, 58 insertions, 10 deletions
diff --git a/python/psi-api/src/com/jetbrains/python/PyNames.java b/python/psi-api/src/com/jetbrains/python/PyNames.java index 94e35f711c29..bd927c5d49bf 100644 --- a/python/psi-api/src/com/jetbrains/python/PyNames.java +++ b/python/psi-api/src/com/jetbrains/python/PyNames.java @@ -60,6 +60,7 @@ public class PyNames { public static final String FAKE_OLD_BASE = "___Classobj"; public static final String FAKE_GENERATOR = "__generator"; public static final String FAKE_FUNCTION = "__function"; + public static final String FAKE_METHOD = "__method"; public static final String FAKE_NAMEDTUPLE = "__namedtuple"; public static final String FUTURE_MODULE = "__future__"; @@ -471,4 +472,33 @@ public class PyNames { public static boolean isRightOperatorName(@Nullable String name) { return name != null && name.matches("__r[a-z]+__"); } + + /** + * Available in Python 3 and Python 2 starting from 2.6. + * <p/> + * Attributes {@code __doc__}, {@code __dict__} and {@code __module__} should be inherited from object. + */ + public static final ImmutableSet<String> FUNCTION_SPECIAL_ATTRIBUTES = ImmutableSet.of( + "__defaults__", + "__globals__", + "__closure__", + "__code__", + "__name__" + ); + + public static final ImmutableSet<String> LEGACY_FUNCTION_SPECIAL_ATTRIBUTES = ImmutableSet.of( + "func_defaults", + "func_globals", + "func_closure", + "func_code", + "func_name", + "func_doc", + "func_dict" + ); + + public static final ImmutableSet<String> PY3_ONLY_FUNCTION_SPECIAL_ATTRIBUTES = ImmutableSet.of("__annotations__", "__kwdefaults__"); + + public static final ImmutableSet<String> METHOD_SPECIAL_ATTRIBUTES = ImmutableSet.of("__func__", "__self__"); + + public static final ImmutableSet<String> LEGACY_METHOD_SPECIAL_ATTRIBUTES = ImmutableSet.of("im_func", "im_self", "im_class"); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java b/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java index daa8b3063014..539d3ab8df2e 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java @@ -90,8 +90,6 @@ public abstract class PyElementGenerator { @NotNull public abstract PyCallExpression createCallExpression(final LanguageLevel langLevel, String functionName); - public abstract PyImportStatement createImportStatementFromText(final LanguageLevel languageLevel, String text); - public abstract PyImportElement createImportElement(final LanguageLevel languageLevel, String name); public abstract PyFunction createProperty(final LanguageLevel languageLevel, @@ -139,4 +137,32 @@ public abstract class PyElementGenerator { */ @NotNull public abstract PsiElement createNewLine(); + + /** + * Creates import statement of form {@code from qualifier import name as alias}. + * + * @param languageLevel language level for created element + * @param qualifier from where {@code name} will be imported (module name) + * @param name text of the reference in import element + * @param alias optional alias for {@code as alias} part + * @return created {@link com.jetbrains.python.psi.PyFromImportStatement} + */ + @NotNull + public abstract PyFromImportStatement createFromImportStatement(@NotNull LanguageLevel languageLevel, + @NotNull String qualifier, + @NotNull String name, + @Nullable String alias); + + /** + * Creates import statement of form {@code import name as alias}. + * + * @param languageLevel language level for created element + * @param name text of the reference in import element (module name) + * @param alias optional alias for {@code as alias} part + * @return created {@link com.jetbrains.python.psi.PyImportStatement} + */ + @NotNull + public abstract PyImportStatement createImportStatement(@NotNull LanguageLevel languageLevel, + @NotNull String name, + @Nullable String alias); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyStatementPart.java b/python/psi-api/src/com/jetbrains/python/psi/PyStatementPart.java index a14a91ef9f9c..90ef99cec362 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyStatementPart.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyStatementPart.java @@ -15,8 +15,6 @@ */ package com.jetbrains.python.psi; -import org.jetbrains.annotations.NotNull; - /** * Abstract part of a multipart statement. * User: dcheryasov @@ -24,10 +22,4 @@ import org.jetbrains.annotations.NotNull; */ public interface PyStatementPart extends PyElement, PyStatementListContainer { PyStatementPart[] EMPTY_ARRAY = new PyStatementPart[0]; - - /** - * @return the body of the part. - */ - @NotNull - PyStatementList getStatementList(); } |