summaryrefslogtreecommitdiff
path: root/python/psi-api/src/com/jetbrains/python
diff options
context:
space:
mode:
Diffstat (limited to 'python/psi-api/src/com/jetbrains/python')
-rw-r--r--python/psi-api/src/com/jetbrains/python/PyNames.java30
-rw-r--r--python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java30
-rw-r--r--python/psi-api/src/com/jetbrains/python/psi/PyStatementPart.java8
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();
}