[Pyrex] TypeError: exceptions must be strings, classes, or instances, not type

Yang Zhang yanghatespam at gmail.com
Tue Apr 22 20:59:12 CEST 2008


Yang Zhang wrote:
> Hi, I'm trying to use this Pyrex module:
> 
> http://code.google.com/p/pypcap/
> 
> but I get:
> 
> Traceback (most recent call last):
>   File "./analyze.py", line 11, in <module>
>     for x in pc: xs.append(x)
>   File "pcap.pyx", line 346, in pcap.pcap.__next__
> TypeError: exceptions must be strings, classes, or instances, not type
> 
> because the places marked "here" below are apparently doing something 
> that Pyrex can't handle:
> 
>     def __next__(self):
>         cdef pcap_pkthdr *hdr
>         cdef char *pkt
>         cdef int n
>         while 1:
>             Py_BEGIN_ALLOW_THREADS
>             n = pcap_ex_next(self.__pcap, &hdr, &pkt)
>             Py_END_ALLOW_THREADS
>             if n == 1:
>                 return (hdr.ts.tv_sec + (hdr.ts.tv_usec / 1000000.0),
>                         PyBuffer_FromMemory(pkt, hdr.caplen))
>             elif n == -1:
>                 raise KeyboardInterrupt # here
>             elif n == -2:
>                 raise StopIteration # here
> 
> Does anybody know what's going on? Are exceptions not allowed in Pyrex? 
> Is there a workaround?
> 
> Thanks in advance for any answers!

Just to clarify: I also retried with the latest pyrex (0.9.6.4), with 
the same results.  Also I'm using Python 2.5 on Ubuntu 7.10 (I tried 
with the distro-supplied pyrex initially).

-- 
Yang Zhang
http://www.mit.edu/~y_z/



More information about the Pyrex mailing list