PY-8473 Fixed: Recognize copy() and deepcopy() methods in code insight

Add skeletons for copy.copy and copy.deepcopy
This commit is contained in:
Semyon Proshev
2016-10-11 21:07:11 +03:00
parent 47bd411906
commit ca7ab723c1
4 changed files with 41 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
"""Skeleton for 'copy' stdlib module."""
def copy(x):
"""Return a shallow copy of x.
:type x: T
:rtype: T
"""
pass
def deepcopy(x):
"""Return a deep copy of x.
:type x: T
:rtype: T
"""
pass

View File

@@ -0,0 +1,2 @@
def copy(x):
pass

View File

@@ -0,0 +1,2 @@
def deepcopy(x):
pass

View File

@@ -1258,6 +1258,24 @@ public class PyTypeTest extends PyTestCase {
"expr = defaultdict(lambda: [])['x']\n");
}
// PY-8473
public void testCopyDotCopy() {
doMultiFileTest("A",
"import copy\n" +
"class A(object):\n" +
" pass\n" +
"expr = copy.copy(A())\n");
}
// PY-8473
public void testCopyDotDeepCopy() {
doMultiFileTest("A",
"import copy\n" +
"class A(object):\n" +
" pass\n" +
"expr = copy.deepcopy(A())\n");
}
private static List<TypeEvalContext> getTypeEvalContexts(@NotNull PyExpression element) {
return ImmutableList.of(TypeEvalContext.codeAnalysis(element.getProject(), element.getContainingFile()).withTracing(),
TypeEvalContext.userInitiated(element.getProject(), element.getContainingFile()).withTracing());