-cdef int f() except -1:
+__doc__ = """
+ >>> print f()
+"""
+
+def f():
g = getattr3
+ return g.__name__
-cdef extern object g(object x) nogil
+cdef extern object g(int x) nogil
cdef void f(int x) nogil:
cdef int y
-def f():
- cdef int i
+__doc__ = """
+ >>> f(5)
+ 5
+"""
+
+def f(int a):
+ cdef int i,j
cdef int *p
+ i = a
p = &i
+ j = p[0]
+ return j
+__doc__ = """
+ >>> getg()
+ 5
+ >>> f(42)
+ >>> getg()
+ 42
+"""
+
+g = 5
+
def f(a):
- global f
- f = a
- f = 42
+ global g
+ g = a
+
+def getg():
+ return g
-def f(a, b):
- cdef int i
+__doc__ = """
+ >>> f(1, 2, 1)
+ >>> f(0, 2, 1)
+ Traceback (most recent call last):
+ AssertionError
+ >>> f(1, -1, 1)
+ Traceback (most recent call last):
+ AssertionError
+ >>> f(1, 2, 0)
+ Traceback (most recent call last):
+ AssertionError
+
+ >>> g(1, "works")
+ >>> g(0, "fails")
+ Traceback (most recent call last):
+ AssertionError: fails
+"""
+
+def f(a, b, int i):
assert a
assert a+b
assert i
-def f(a, b):
+__doc__ = """
+ >>> class Test:
+ ... def __init__(self, i):
+ ... self.i = i
+ >>> b = Test(1)
+ >>> b.spam = Test(2)
+ >>> b.spam.eggs = Test(3)
+ >>> b.spam.eggs.spam = Test(4)
+ >>> b.spam.eggs.spam.eggs = Test(5)
+
+ >>> a = f(b)
+ >>> print a.i
+ 2
+ >>> print b.i
+ 1
+ >>> print a.spam.i
+ 1
+ >>> print b.spam.i
+ 2
+ >>> print a.spam.eggs.i
+ Traceback (most recent call last):
+ AttributeError: Test instance has no attribute 'eggs'
+ >>> print b.spam.eggs.i
+ 3
+ >>> print a.spam.spam.i
+ 2
+ >>> print b.spam.spam.i
+ 1
+ >>> print a.spam.eggs.spam.i
+ Traceback (most recent call last):
+ AttributeError: Test instance has no attribute 'eggs'
+ >>> print b.spam.eggs.spam.i
+ 4
+
+ >>> a = g(b)
+ >>> print a.i
+ 3
+ >>> print b.i
+ 1
+ >>> print a.spam.i
+ 4
+ >>> print b.spam.i
+ 2
+ >>> print a.spam.eggs.i
+ 1
+ >>> print b.spam.eggs.i
+ 3
+ >>> print a.spam.spam.i
+ Traceback (most recent call last):
+ AttributeError: Test instance has no attribute 'spam'
+ >>> print b.spam.spam.i
+ 1
+ >>> print a.spam.eggs.spam.i
+ 2
+ >>> print b.spam.eggs.spam.i
+ 4
+"""
+
+def f(b):
a = b.spam
a.spam = b
+ return a
+
+def g(b):
a = b.spam.eggs
a.spam.eggs = b
-
\ No newline at end of file
+ return a
+__doc__ = """
+ >>> m = MyClass()
+ >>> m is foo(m)
+ True
+"""
+
cdef class MyClass:
pass
+__doc__ = """
+ >>> viking(5)
+ 5
+"""
+
cdef class Spam:
- cdef eggs(self):
- pass
+ cdef eggs(self, a):
+ return a
cdef Spam spam():
- pass
+ return Spam()
-def viking():
- return spam().eggs()
+def viking(a):
+ return spam().eggs(a)
+__doc__ = """
+ >>> f = foo()
+ >>> 'a' in f
+ True
+ >>> 1 in f
+ True
+"""
+
cdef class foo:
def __contains__(self, key):
+__doc__ = """
+ >>> test()
+"""
+
cdef void ftang():
cdef int x
x = 0
cdef spam(int i, obj, object object):
cdef char c
c = 0
+
+def test():
+ ftang()
+ foo(0, c'f')
+ spam(25, None, None)
+__doc__ = """
+ >>> f()
+ (5376, 67)
+"""
+
def f():
cdef int int1, int2, int3
cdef char char1
cdef long long1, long2
+ int2 = 42
+ int3 = 7
+ char1 = c'C'
+
int1 = int2 | int3
int1 = int2 ^ int3
int1 = int2 & int3
int1 = int2 >> int3
int1 = int2 << int3 | int2 >> int3
long1 = char1 | long2
-
-
\ No newline at end of file
+ return int1, long1
+__doc__ = """
+ >>> test_i()
+ >>> test_c()
+ >>> test_p()
+ >>> test_g()
+"""
+
cdef struct Grail
cdef struct Spam:
cdef Spam spam, ham
-cdef void eggs(Spam s):
+cdef void eggs_i(Spam s):
cdef int j
j = s.i
s.i = j
+cdef void eggs_c(Spam s):
+ cdef char c
+ c = s.c
+ s.c = c
+
+cdef void eggs_p(Spam s):
+ cdef float *p
+ p = s.p[0]
+ s.p[0] = p
+
+cdef void eggs_g(Spam s):
+ cdef float *p
+ p = s.p[0]
+ s.p[0] = p
+
spam = ham
+
+def test_i():
+ spam.i = 1
+ eggs_i(spam)
+
+def test_c():
+ spam.c = c'a'
+ eggs_c(spam)
+
+def test_p():
+ cdef float f
+ spam.p[0] = &f
+ eggs_p(spam)
+
+def test_g():
+ cdef Grail l
+ spam.g = &l
+ eggs_g(spam)
+__doc__ = """
+ >>> test_i()
+ >>> test_c()
+ >>> test_p()
+"""
+
cdef union Spam:
int i
char c
cdef Spam spam, ham
-cdef void eggs(Spam s):
+cdef void eggs_i(Spam s):
cdef int j
j = s.i
s.i = j
+cdef void eggs_c(Spam s):
+ cdef char c
+ c = s.c
+ s.c = c
+
+cdef void eggs_p(Spam s):
+ cdef float *p
+ p = s.p[0]
+ s.p[0] = p
+
spam = ham
+
+def test_i():
+ spam.i = 1
+ eggs_i(spam)
+
+def test_c():
+ spam.c = c'a'
+ eggs_c(spam)
+
+def test_p():
+ cdef float f
+ spam.p[0] = &f
+ eggs_p(spam)
-def f(adict, key1, value1, key2, value2):
- adict = {}
- adict = {key1:value1}
- adict = {key1:value1, key2:value2}
- adict = {key1:value1, key2:value2,}
- adict = {"parrot":"resting", "answer":42}
-
\ No newline at end of file
+__doc__ = """
+ >>> empty()
+ {}
+ >>> keyvalue(1, 2)
+ {1: 2}
+
+ >>> keyvalues(1, 2, 3, 4)
+ {1: 2, 3: 4}
+ >>> keyvalues2(1, 2, 3, 4)
+ {1: 2, 3: 4}
+
+ >>> len(constant())
+ 2
+ >>> constant()['parrot']
+ 'resting'
+ >>> constant()['answer']
+ 42
+"""
+
+def empty():
+ d = {}
+ return d
+
+def keyvalue(key, value):
+ d = {key:value}
+ return d
+
+def keyvalues(key1, value1, key2, value2):
+ d = {key1:value1, key2:value2}
+ return d
+
+def keyvalues2(key1, value1, key2, value2):
+ d = {key1:value1, key2:value2,}
+ return d
+
+def constant():
+ d = {"parrot":"resting", "answer":42}
+ return d
+
+__doc__ = """
+ >>> test()
+ 1.0
+"""
+
def test():
cdef float v[10][10]
v[1][2] = 1.0
- print v[1][2]
+ return v[1][2]
+__doc__ = """
+ >>> p = create()
+ >>> rest(p)
+ 0
+"""
+
cdef class Parrot:
cdef object name
cdef int alive
cdef class Norwegian(Parrot):
cdef object plumage_colour
-cdef void rest(Norwegian polly):
+def create():
+ cdef Parrot p
+ p = Norwegian()
+ p.alive = 1
+ return p
+
+def rest(Norwegian polly):
cdef Parrot fred
cdef object spam
+ spam = None
+
fred = polly
polly = fred
polly = spam
+ assert polly is None
+ assert fred.alive
+
spam = polly
- polly.alive = 0
+ fred.alive = 0
+
+ return fred.alive
+__doc__ = """
+ >>> len(Spam())
+ 0
+"""
+
cdef class Spam:
def __len__(self):
+__doc__ = """
+ >>> s = Silly(1,2,3, 'test')
+
+ >>> s.spam(1,2,3)
+ >>> s.spam(1,2)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (2 given)
+ >>> s.spam(1,2,3,4)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (4 given)
+ >>> s.spam(1,2,3, a=1)
+ Traceback (most recent call last):
+ TypeError: 'a' is an invalid keyword argument for this function
+
+ >>> s.grail(1,2,3)
+ >>> s.grail(1,2,3,4)
+ >>> s.grail(1,2,3,4,5,6,7,8,9)
+ >>> s.grail(1,2)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (2 given)
+ >>> s.grail(1,2,3, a=1)
+ Traceback (most recent call last):
+ TypeError: 'a' is an invalid keyword argument for this function
+
+ >>> s.swallow(1,2,3)
+ >>> s.swallow(1,2,3,4)
+ Traceback (most recent call last):
+ TypeError: function takes at most 3 positional arguments (4 given)
+ >>> s.swallow(1,2,3, a=1, b=2)
+ >>> s.swallow(1,2,3, x=1)
+ Traceback (most recent call last):
+ TypeError: keyword parameter 'x' was given by position and by name
+
+ >>> s.creosote(1,2,3)
+ >>> s.creosote(1,2,3,4)
+ >>> s.creosote(1,2,3, a=1)
+ >>> s.creosote(1,2,3,4, a=1, b=2)
+ >>> s.creosote(1,2,3,4, x=1)
+ Traceback (most recent call last):
+ TypeError: keyword parameter 'x' was given by position and by name
+"""
+
cdef class Silly:
def __init__(self, *a):
+__doc__ = """
+ >>> C().xxx(5)
+ 5
+ >>> C().xxx()
+ 'a b'
+ >>> C().xxx(42)
+ 42
+ >>> C().xxx()
+ 'a b'
+"""
+
class C:
def xxx(self, p="a b"):
- pass
+ return p
+__doc__ = """
+ >>> c(1,2,3)
+ >>> c(1,2,3,4)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (4 given)
+
+ >>> d(1,2)
+ >>> d(1,2, c=1)
+
+ >>> d(1,2,3)
+ Traceback (most recent call last):
+ TypeError: function takes at most 2 positional arguments (3 given)
+ >>> d(1,2, d=1)
+ Traceback (most recent call last):
+ TypeError: 'd' is an invalid keyword argument for this function
+
+ >>> e(1,2)
+ >>> e(1,2, c=1)
+ >>> e(1,2, d=1)
+ >>> e(1,2, c=1, d=2, e=3)
+ >>> e(1,2,3)
+ >>> e(1,2,3,4)
+ Traceback (most recent call last):
+ TypeError: function takes at most 3 positional arguments (4 given)
+
+ >>> f(1,2, c=1)
+ >>> f(1,2, c=1, d=2)
+
+ >>> f(1,2,3)
+ Traceback (most recent call last):
+ TypeError: function takes at most 2 positional arguments (3 given)
+ >>> f(1,2)
+ Traceback (most recent call last):
+ TypeError: required keyword argument 'c' is missing
+ >>> f(1,2, c=1, e=2)
+ Traceback (most recent call last):
+ TypeError: 'e' is an invalid keyword argument for this function
+
+ >>> g(1,2, c=1, f=2)
+ >>> g(1,2, c=1, e=0, f=2, d=11)
+ >>> g(1,2, c=1, f=2, e=0, x=25)
+
+ >>> g(1,2,3)
+ Traceback (most recent call last):
+ TypeError: function takes at most 2 positional arguments (3 given)
+ >>> g(1,2)
+ Traceback (most recent call last):
+ TypeError: required keyword argument 'c' is missing
+ >>> g(1,2, c=1)
+ Traceback (most recent call last):
+ TypeError: required keyword argument 'f' is missing
+
+ >>> h(1,2, c=1, f=2)
+ >>> h(1,2, c=1, f=2, e=3)
+ >>> h(1,2,3,4,5,6, c=1, f=2)
+ >>> h(1,2,3,4,5,6, c=1, f=2, e=3, x=25, y=11)
+
+ >>> h(1,2,3)
+ Traceback (most recent call last):
+ TypeError: required keyword argument 'c' is missing
+ >>> h(1,2, d=1)
+ Traceback (most recent call last):
+ TypeError: required keyword argument 'c' is missing
+"""
+
def c(a, b, c):
z = 33
+__doc__ = """
+ >>> f()
+ >>> g
+ 42
+ >>> x
+ 'spam'
+ >>> y
+ 'eggs'
+ >>> z
+ 'spameggs'
+"""
+
def f():
pass
-def f():
- cdef int int1, int2, int3
- cdef char *str2, *str3
- obj1 = 1
- obj2 = 2
- obj3 = 3
+__doc__ = """
+ >>> modobj(9,2)
+ 1
+ >>> modobj('%d', 5)
+ '5'
+
+ >>> modint(9,2)
+ 1
+"""
+
+def modobj(obj2, obj3):
+ obj1 = obj2 % obj3
+ return obj1
+
+def modint(int int2, int int3):
+ cdef int int1
int1 = int2 % int3
+ return int1
+
+cdef modptr():
+ # FIXME!!!
+ cdef char *str2, *str3
+ str2 = "spam"
+ str3 = "eggs"
+
obj1 = str2 % str3
- obj1 = obj2 % obj3
-
\ No newline at end of file
+ return obj1
+++ /dev/null
-def f(a, *p, **n):
- pass
+__doc__ = """
+ >>> test(Exception('hi'))
+ Raising: Exception('hi',)
+ Caught: <type 'exceptions.Exception'> Exception('hi',)
+"""
+
import sys
def test(obj):
+__doc__ = """
+ >>> test()
+ 1
+"""
+
cdef class Tri:
- pass
+ def test(self):
+ return 1
cdef class Curseur:
cdef Tri tri
def detail(self):
- produire_fiches(self.tri)
+ return produire_fiches(self.tri)
cdef produire_fiches(Tri tri):
- pass
+ return tri.test()
+
+def test():
+ cdef Curseur c
+ c = Curseur()
+ c.tri = Tri()
+ return c.detail()
+__doc__ = """
+ >>> c = build()
+ >>> c.method()
+ Traceback (most recent call last):
+ AssertionError: 1
+"""
+
cdef enum Mode:
a = 1
b = 2
def method(self):
assert False, self.mode
+
+def build():
+ cdef Curseur c
+ c = Curseur()
+ c.mode = a
+ return c
+__doc__ = """
+ >>>
+"""
+
cdef class Eggs:
cdef object ham
+__doc__ = """
+ >>> import re
+ >>> t
+ ('2',)
+ >>> t == re.search('(\\d+)', '-2.80 98\\n').groups()
+ True
+"""
+
+# this is a string constant test, not a test for 're'
+
import re
t = re.search('(\d+)', '-2.80 98\n').groups()
+__doc__ = """
+ >>> f()
+ 42
+"""
+
def f():
a = 42
b = a
+ return b
+__doc__ = """
+ >>> f('test')
+ >>> test_g()
+ >>> test_h(5)
+ 5
+"""
+
def f(a):
return
return a
cdef int h(a):
cdef int i
+ i = a
return i
-
\ No newline at end of file
+
+def test_g():
+ g()
+
+def test_h(i):
+ return h(i)
-def f(obj1, obj2, obj3, obj4, obj5):
+__doc__ = """
+ >>> class Test(object):
+ ... def __setitem__(self, key, value):
+ ... print key, value
+ ... def __getitem__(self, key):
+ ... print key
+ ... return self
+
+ >>> ellipsis(Test())
+ Ellipsis
+
+ >>> full(Test())
+ slice(None, None, None)
+
+ >>> select(0, Test(), 10, 20, 30)
+ slice(10, None, None)
+ slice(None, 20, None)
+ slice(None, None, 30)
+ slice(10, 20, None)
+ slice(10, None, 30)
+ slice(None, 20, 30)
+ slice(10, 20, 30)
+ slice(1, 2, 3)
+
+ >>> set(Test(), -11)
+ slice(1, 2, 3) -11
+"""
+
+def ellipsis(o):
+ obj1 = o[...]
+
+def full(o):
+ obj1 = o[::]
+
+def set(o, v):
cdef int int3, int4, int5
- obj1 = obj2[...]
- obj1 = obj2[::]
+ int3, int4, int5 = 1,2,3
+ o[int3:int4:int5] = v
+
+def select(obj1, obj2, obj3, obj4, obj5):
+ cdef int int3, int4, int5
+ int3, int4, int5 = 1,2,3
+
obj1 = obj2[obj3::]
obj1 = obj2[:obj4:]
obj1 = obj2[::obj5]
obj1 = obj2[:obj4:obj5]
obj1 = obj2[obj3:obj4:obj5]
obj1 = obj2[int3:int4:int5]
- obj1[int3:int4:int5] = obj2
-
\ No newline at end of file
+
+__doc__ = """
+ >>> spam(1,2,3)
+ >>> spam(1,2)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (2 given)
+ >>> spam(1,2,3,4)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (4 given)
+ >>> spam(1,2,3, a=1)
+ Traceback (most recent call last):
+ TypeError: 'a' is an invalid keyword argument for this function
+
+ >>> grail(1,2,3)
+ >>> grail(1,2,3,4)
+ >>> grail(1,2,3,4,5,6,7,8,9)
+ >>> grail(1,2)
+ Traceback (most recent call last):
+ TypeError: function takes exactly 3 arguments (2 given)
+ >>> grail(1,2,3, a=1)
+ Traceback (most recent call last):
+ TypeError: 'a' is an invalid keyword argument for this function
+
+ >>> swallow(1,2,3)
+ >>> swallow(1,2,3,4)
+ Traceback (most recent call last):
+ TypeError: function takes at most 3 positional arguments (4 given)
+ >>> swallow(1,2,3, a=1, b=2)
+ >>> swallow(1,2,3, x=1)
+ Traceback (most recent call last):
+ TypeError: keyword parameter 'x' was given by position and by name
+
+ >>> creosote(1,2,3)
+ >>> creosote(1,2,3,4)
+ >>> creosote(1,2,3, a=1)
+ >>> creosote(1,2,3,4, a=1, b=2)
+ >>> creosote(1,2,3,4, x=1)
+ Traceback (most recent call last):
+ TypeError: keyword parameter 'x' was given by position and by name
+"""
+
def spam(x, y, z):
pass
def creosote(x, y, z, *a, **k):
pass
-
+__doc__ = """
+ >>> f()
+ (-1, -1)
+ >>> p()
+ 0
+"""
+
def f():
cdef int int1, int2, int3
- cdef char *ptr1, *ptr2, *ptr3
obj1 = 1
obj2 = 2
obj3 = 3
+ int2 = 2
+ int3 = 3
+
int1 = int2 - int3
+ obj1 = obj2 - int3
+ return int1, obj1
+
+def p():
+ cdef int int1, int2, int3
+ cdef char *ptr1, *ptr2, *ptr3
+ int2 = 2
+ int3 = 3
+ ptr2 = "test"
+ ptr3 = ptr2
+
ptr1 = ptr2 - int3
int1 = ptr2 - ptr3
- obj1 = obj2 - int3
-
\ No newline at end of file
+ return int1
+__doc__ = """
+ >>> swallow()
+"""
+
cdef grail(char *blarg, ...):
pass
-cdef swallow():
+def swallow():
grail("spam")
grail("spam", 42)
+__doc__ = """
+ >>> x
+ 5L
+"""
+
cdef unsigned int ui
+ui = 5
x = ui