Home | History | Annotate | Download | only in cpython
      1 from cpython.ref cimport PyObject, PyTypeObject
      2 from libc.stdio cimport FILE
      3 
      4 cdef extern from "Python.h":
      5 
      6     #####################################################################
      7     # 6.1 Object Protocol
      8     #####################################################################
      9     int PyObject_Print(object o, FILE *fp, int flags) except -1
     10     # Print an object o, on file fp. Returns -1 on error. The flags
     11     # argument is used to enable certain printing options. The only
     12     # option currently supported is Py_PRINT_RAW; if given, the str()
     13     # of the object is written instead of the repr().
     14 
     15     bint PyObject_HasAttrString(object o, char *attr_name)
     16     # Returns 1 if o has the attribute attr_name, and 0
     17     # otherwise. This is equivalent to the Python expression
     18     # "hasattr(o, attr_name)". This function always succeeds.
     19 
     20     object PyObject_GetAttrString(object o, char *attr_name)
     21     # Return value: New reference.  Retrieve an attribute named
     22     # attr_name from object o. Returns the attribute value on success,
     23     # or NULL on failure. This is the equivalent of the Python
     24     # expression "o.attr_name".
     25 
     26     bint PyObject_HasAttr(object o, object attr_name)
     27     # Returns 1 if o has the attribute attr_name, and 0
     28     # otherwise. This is equivalent to the Python expression
     29     # "hasattr(o, attr_name)". This function always succeeds.
     30 
     31     object PyObject_GetAttr(object o, object attr_name)
     32     # Return value: New reference.  Retrieve an attribute named
     33     # attr_name from object o. Returns the attribute value on success,
     34     # or NULL on failure. This is the equivalent of the Python
     35     # expression "o.attr_name".
     36 
     37     int PyObject_SetAttrString(object o, char *attr_name, object v) except -1
     38     # Set the value of the attribute named attr_name, for object o, to
     39     # the value v. Returns -1 on failure. This is the equivalent of
     40     # the Python statement "o.attr_name = v".
     41 
     42     int PyObject_SetAttr(object o, object attr_name, object v) except -1
     43     # Set the value of the attribute named attr_name, for object o, to
     44     # the value v. Returns -1 on failure. This is the equivalent of
     45     # the Python statement "o.attr_name = v".
     46 
     47     int PyObject_DelAttrString(object o, char *attr_name) except -1
     48     # Delete attribute named attr_name, for object o. Returns -1 on
     49     # failure. This is the equivalent of the Python statement: "del
     50     # o.attr_name".
     51 
     52     int PyObject_DelAttr(object o, object attr_name) except -1
     53     # Delete attribute named attr_name, for object o. Returns -1 on
     54     # failure. This is the equivalent of the Python statement "del
     55     # o.attr_name".
     56 
     57     int Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT, Py_GE
     58 
     59     object PyObject_RichCompare(object o1, object o2, int opid)
     60     # Return value: New reference.
     61     # Compare the values of o1 and o2 using the operation specified by
     62     # opid, which must be one of Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT, or
     63     # Py_GE, corresponding to <, <=, ==, !=, >, or >=
     64     # respectively. This is the equivalent of the Python expression
     65     # "o1 op o2", where op is the operator corresponding to
     66     # opid. Returns the value of the comparison on success, or NULL on
     67     # failure.
     68 
     69     bint PyObject_RichCompareBool(object o1, object o2, int opid) except -1
     70     # Compare the values of o1 and o2 using the operation specified by
     71     # opid, which must be one of Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT, or
     72     # Py_GE, corresponding to <, <=, ==, !=, >, or >=
     73     # respectively. Returns -1 on error, 0 if the result is false, 1
     74     # otherwise. This is the equivalent of the Python expression "o1
     75     # op o2", where op is the operator corresponding to opid.
     76 
     77     int PyObject_Cmp(object o1, object o2, int *result) except -1
     78     # Compare the values of o1 and o2 using a routine provided by o1,
     79     # if one exists, otherwise with a routine provided by o2. The
     80     # result of the comparison is returned in result. Returns -1 on
     81     # failure. This is the equivalent of the Python statement "result
     82     # = cmp(o1, o2)".
     83 
     84     int PyObject_Compare(object o1, object o2) except *
     85     # Compare the values of o1 and o2 using a routine provided by o1,
     86     # if one exists, otherwise with a routine provided by o2. Returns
     87     # the result of the comparison on success. On error, the value
     88     # returned is undefined; use PyErr_Occurred() to detect an
     89     # error. This is equivalent to the Python expression "cmp(o1,
     90     # o2)".
     91 
     92     object PyObject_Repr(object o)
     93     # Return value: New reference.
     94     # Compute a string representation of object o. Returns the string
     95     # representation on success, NULL on failure. This is the
     96     # equivalent of the Python expression "repr(o)". Called by the
     97     # repr() built-in function and by reverse quotes.
     98 
     99     object PyObject_Str(object o)
    100     # Return value: New reference.
    101     # Compute a string representation of object o. Returns the string
    102     # representation on success, NULL on failure. This is the
    103     # equivalent of the Python expression "str(o)". Called by the
    104     # str() built-in function and by the print statement.
    105 
    106     object PyObject_Unicode(object o)
    107     # Return value: New reference.
    108     # Compute a Unicode string representation of object o. Returns the
    109     # Unicode string representation on success, NULL on failure. This
    110     # is the equivalent of the Python expression "unicode(o)". Called
    111     # by the unicode() built-in function.
    112 
    113     bint PyObject_IsInstance(object inst, object cls) except -1
    114     # Returns 1 if inst is an instance of the class cls or a subclass
    115     # of cls, or 0 if not. On error, returns -1 and sets an
    116     # exception. If cls is a type object rather than a class object,
    117     # PyObject_IsInstance() returns 1 if inst is of type cls. If cls
    118     # is a tuple, the check will be done against every entry in
    119     # cls. The result will be 1 when at least one of the checks
    120     # returns 1, otherwise it will be 0. If inst is not a class
    121     # instance and cls is neither a type object, nor a class object,
    122     # nor a tuple, inst must have a __class__ attribute -- the class
    123     # relationship of the value of that attribute with cls will be
    124     # used to determine the result of this function.
    125 
    126     # Subclass determination is done in a fairly straightforward way,
    127     # but includes a wrinkle that implementors of extensions to the
    128     # class system may want to be aware of. If A and B are class
    129     # objects, B is a subclass of A if it inherits from A either
    130     # directly or indirectly. If either is not a class object, a more
    131     # general mechanism is used to determine the class relationship of
    132     # the two objects. When testing if B is a subclass of A, if A is
    133     # B, PyObject_IsSubclass() returns true. If A and B are different
    134     # objects, B's __bases__ attribute is searched in a depth-first
    135     # fashion for A -- the presence of the __bases__ attribute is
    136     # considered sufficient for this determination.
    137 
    138     bint PyObject_IsSubclass(object derived, object cls) except -1
    139     # Returns 1 if the class derived is identical to or derived from
    140     # the class cls, otherwise returns 0. In case of an error, returns
    141     # -1. If cls is a tuple, the check will be done against every
    142     # entry in cls. The result will be 1 when at least one of the
    143     # checks returns 1, otherwise it will be 0. If either derived or
    144     # cls is not an actual class object (or tuple), this function uses
    145     # the generic algorithm described above. New in version
    146     # 2.1. Changed in version 2.3: Older versions of Python did not
    147     # support a tuple as the second argument.
    148 
    149     bint PyCallable_Check(object o)
    150     # Determine if the object o is callable. Return 1 if the object is
    151     # callable and 0 otherwise. This function always succeeds.
    152 
    153     object PyObject_Call(object callable_object, object args, object kw)
    154     # Return value: New reference.
    155     # Call a callable Python object callable_object, with arguments
    156     # given by the tuple args, and named arguments given by the
    157     # dictionary kw. If no named arguments are needed, kw may be
    158     # NULL. args must not be NULL, use an empty tuple if no arguments
    159     # are needed. Returns the result of the call on success, or NULL
    160     # on failure. This is the equivalent of the Python expression
    161     # "apply(callable_object, args, kw)" or "callable_object(*args,
    162     # **kw)".
    163 
    164     object PyObject_CallObject(object callable_object, object args)
    165     # Return value: New reference.
    166     # Call a callable Python object callable_object, with arguments
    167     # given by the tuple args. If no arguments are needed, then args
    168     # may be NULL. Returns the result of the call on success, or NULL
    169     # on failure. This is the equivalent of the Python expression
    170     # "apply(callable_object, args)" or "callable_object(*args)".
    171 
    172     object PyObject_CallFunction(object callable, char *format, ...)
    173     # Return value: New reference.
    174     # Call a callable Python object callable, with a variable number
    175     # of C arguments. The C arguments are described using a
    176     # Py_BuildValue() style format string. The format may be NULL,
    177     # indicating that no arguments are provided. Returns the result of
    178     # the call on success, or NULL on failure. This is the equivalent
    179     # of the Python expression "apply(callable, args)" or
    180     # "callable(*args)". Note that if you only pass object  args,
    181     # PyObject_CallFunctionObjArgs is a faster alternative.
    182 
    183     object PyObject_CallMethod(object o, char *method, char *format, ...)
    184     # Return value: New reference.
    185     # Call the method named method of object o with a variable number
    186     # of C arguments. The C arguments are described by a
    187     # Py_BuildValue() format string that should produce a tuple. The
    188     # format may be NULL, indicating that no arguments are
    189     # provided. Returns the result of the call on success, or NULL on
    190     # failure. This is the equivalent of the Python expression
    191     # "o.method(args)". Note that if you only pass object  args,
    192     # PyObject_CallMethodObjArgs is a faster alternative.
    193 
    194     #object PyObject_CallFunctionObjArgs(object callable, ..., NULL)
    195     object PyObject_CallFunctionObjArgs(object callable, ...)
    196     # Return value: New reference.
    197     # Call a callable Python object callable, with a variable number
    198     # of PyObject* arguments. The arguments are provided as a variable
    199     # number of parameters followed by NULL. Returns the result of the
    200     # call on success, or NULL on failure.
    201 
    202     #PyObject* PyObject_CallMethodObjArgs(object o, object name, ..., NULL)
    203     object PyObject_CallMethodObjArgs(object o, object name, ...)
    204     # Return value: New reference.
    205     # Calls a method of the object o, where the name of the method is
    206     # given as a Python string object in name. It is called with a
    207     # variable number of PyObject* arguments. The arguments are
    208     # provided as a variable number of parameters followed by
    209     # NULL. Returns the result of the call on success, or NULL on
    210     # failure.
    211 
    212     long PyObject_Hash(object o) except? -1
    213     # Compute and return the hash value of an object o. On failure,
    214     # return -1. This is the equivalent of the Python expression
    215     # "hash(o)".
    216 
    217     bint PyObject_IsTrue(object o) except -1
    218     # Returns 1 if the object o is considered to be true, and 0
    219     # otherwise. This is equivalent to the Python expression "not not
    220     # o". On failure, return -1.
    221 
    222     bint PyObject_Not(object o) except -1
    223     # Returns 0 if the object o is considered to be true, and 1
    224     # otherwise. This is equivalent to the Python expression "not
    225     # o". On failure, return -1.
    226 
    227     object PyObject_Type(object o)
    228     # Return value: New reference.
    229     # When o is non-NULL, returns a type object corresponding to the
    230     # object type of object o. On failure, raises SystemError and
    231     # returns NULL. This is equivalent to the Python expression
    232     # type(o). This function increments the reference count of the
    233     # return value. There's really no reason to use this function
    234     # instead of the common expression o->ob_type, which returns a
    235     # pointer of type PyTypeObject*, except when the incremented
    236     # reference count is needed.
    237 
    238     bint PyObject_TypeCheck(object o, PyTypeObject *type)
    239     # Return true if the object o is of type type or a subtype of
    240     # type. Both parameters must be non-NULL.
    241 
    242     Py_ssize_t PyObject_Length(object o) except -1
    243     Py_ssize_t PyObject_Size(object o) except -1
    244     # Return the length of object o. If the object o provides either
    245     # the sequence and mapping protocols, the sequence length is
    246     # returned. On error, -1 is returned. This is the equivalent to
    247     # the Python expression "len(o)".
    248 
    249     object PyObject_GetItem(object o, object key)
    250     # Return value: New reference.
    251     # Return element of o corresponding to the object key or NULL on
    252     # failure. This is the equivalent of the Python expression
    253     # "o[key]".
    254 
    255     int PyObject_SetItem(object o, object key, object v) except -1
    256     # Map the object key to the value v. Returns -1 on failure. This
    257     # is the equivalent of the Python statement "o[key] = v".
    258 
    259     int PyObject_DelItem(object o, object key) except -1
    260     # Delete the mapping for key from o. Returns -1 on failure. This
    261     # is the equivalent of the Python statement "del o[key]".
    262 
    263     int PyObject_AsFileDescriptor(object o) except -1
    264     # Derives a file-descriptor from a Python object. If the object is
    265     # an integer or long integer, its value is returned. If not, the
    266     # object's fileno() method is called if it exists; the method must
    267     # return an integer or long integer, which is returned as the file
    268     # descriptor value. Returns -1 on failure.
    269 
    270     object PyObject_Dir(object o)
    271     # Return value: New reference.
    272     # This is equivalent to the Python expression "dir(o)", returning
    273     # a (possibly empty) list of strings appropriate for the object
    274     # argument, or NULL if there was an error. If the argument is
    275     # NULL, this is like the Python "dir()", returning the names of
    276     # the current locals; in this case, if no execution frame is
    277     # active then NULL is returned but PyErr_Occurred() will return
    278     # false.
    279 
    280     object PyObject_GetIter(object o)
    281     # Return value: New reference.
    282     # This is equivalent to the Python expression "iter(o)". It
    283     # returns a new iterator for the object argument, or the object
    284     # itself if the object is already an iterator. Raises TypeError
    285     # and returns NULL if the object cannot be iterated.
    286 
    287     Py_ssize_t Py_SIZE(object o)
    288 
    289     object PyObject_Format(object obj, object format_spec)
    290     # Takes an arbitrary object and returns the result of calling
    291     # obj.__format__(format_spec).
    292     # Added in Py2.6
    293