From krthornt at uci.edu Mon Feb 1 20:03:56 2016 From: krthornt at uci.edu (Kevin Thornton) Date: Tue, 02 Feb 2016 01:03:56 +0000 Subject: [Cython] C++ structs, namespace, and auto-conversion of struct to dict Message-ID: Hi, I recently ran into an issue where I found that Cython will not generate code to auto-convert structs do dicts if the struct is declared in a C++ namespace. The issue has also been discussed here: http://stackoverflow.com/questions/29603562/auto-conversion-of-structs-to-dicts-in-cython While there are obvious workarounds, none of them are ideal. Is there a road map for addressing this issue? If not, what would it take to do so, and where in the code should one start looking? Thanks, Kevin -------------- next part -------------- An HTML attachment was scrubbed... URL: From krthornt at uci.edu Mon Feb 1 20:08:30 2016 From: krthornt at uci.edu (Kevin Thornton) Date: Tue, 02 Feb 2016 01:08:30 +0000 Subject: [Cython] Cython 0.23.4: Crash with Template Stuff In-Reply-To: References: Message-ID: Without knowing more about the "blitz" stuff, it is hard to provide detailed help. However, it looks like you have a template taking a non-typename as a parameter, which is not currently supported in Cython. In other words, the 1 in [double,1] is not a type name, and that causes Cython to give up. There is a pull request in progress to fix this issue on GitHub, but I'm not sure what the latest is on that. On Sun, Jan 31, 2016 at 11:07 PM Elizabeth Fischer wrote: > Cython is crashing on me when I compile. See below. > > -- Elizabeth > > cython --version > > Cython version 0.23.4 > > Error compiling Cython file: > ------------------------------------------------------------ > ... > # cdef int flags > > def test_double_blitz(a): > cdef vector[int] v > cdef cblitz.Array[double,1] a_b > a_b = cibmisc.np_to_blitz[double,1](a, b'var', [-1]) > ^ > ------------------------------------------------------------ > > /Users/rpfische/git/ibmisc/pylib/ibmisc.pyx:38:26: Compiler crash in > AnalyseExpressionsTransform > > ModuleNode.body = StatListNode(ibmisc.pyx:1:0) > StatListNode.stats[3] = StatListNode(ibmisc.pyx:35:0) > StatListNode.stats[0] = DefNode(ibmisc.pyx:35:0, > modifiers = [...]/0, > name = 'test_double_blitz', > num_required_args = 1, > py_wrapper_required = True, > reqd_kw_flags_cname = '0', > used = True) > File 'Nodes.py', line 430, in analyse_expressions: > StatListNode(ibmisc.pyx:36:1) > File 'Nodes.py', line 4775, in analyse_expressions: > SingleAssignmentNode(ibmisc.pyx:38:36) > File 'Nodes.py', line 4887, in analyse_types: > SingleAssignmentNode(ibmisc.pyx:38:36) > File 'ExprNodes.py', line 4640, in analyse_types: > SimpleCallNode(ibmisc.pyx:38:36, > analysed = True, > result_is_used = True, > use_managed_ref = True) > File 'ExprNodes.py', line 3109, in analyse_types: > IndexNode(ibmisc.pyx:38:26, > is_called = 1, > is_subscript = True, > result_is_used = True, > use_managed_ref = True) > File 'ExprNodes.py', line 3419, in analyse_base_and_index_types: > IndexNode(ibmisc.pyx:38:26, > is_called = 1, > is_subscript = True, > result_is_used = True, > use_managed_ref = True) > > Compiler crash traceback from this point on: > File > "/Users/rpfische/macports/mpgompi-4.9.3/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Cython/Compiler/ExprNodes.py", > line 3419, in analyse_base_and_index_types > elif len(base_type.templates) != len(self.type_indices): > TypeError: object of type 'NoneType' has no len() > make[2]: *** [pylib/ibmisc.cpp] Error 1 > make[2]: *** Deleting file `pylib/ibmisc.cpp' > make[1]: *** [pylib/CMakeFiles/ibmisc_so.dir/all] Error 2 > make: *** [all] Error 2 > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From rpf2116 at columbia.edu Tue Feb 2 00:10:55 2016 From: rpf2116 at columbia.edu (Elizabeth Fischer) Date: Tue, 2 Feb 2016 00:10:55 -0500 Subject: [Cython] Cython 0.23.4: Crash with Template Stuff In-Reply-To: References: Message-ID: I think you've figured out what's going on. Short of adding the feature, is it possible to add a better error message, rather than what looks like a random crash? -- Elizabeth On Mon, Feb 1, 2016 at 8:08 PM, Kevin Thornton wrote: > Without knowing more about the "blitz" stuff, it is hard to provide > detailed help. > > However, it looks like you have a template taking a non-typename as a > parameter, which is not currently supported in Cython. > > In other words, the 1 in [double,1] is not a type name, and that causes > Cython to give up. There is a pull request in progress to fix this issue > on GitHub, but I'm not sure what the latest is on that. > > On Sun, Jan 31, 2016 at 11:07 PM Elizabeth Fischer > wrote: > >> Cython is crashing on me when I compile. See below. >> >> -- Elizabeth >> >> cython --version >> >> Cython version 0.23.4 >> >> Error compiling Cython file: >> ------------------------------------------------------------ >> ... >> # cdef int flags >> >> def test_double_blitz(a): >> cdef vector[int] v >> cdef cblitz.Array[double,1] a_b >> a_b = cibmisc.np_to_blitz[double,1](a, b'var', [-1]) >> ^ >> ------------------------------------------------------------ >> >> /Users/rpfische/git/ibmisc/pylib/ibmisc.pyx:38:26: Compiler crash in >> AnalyseExpressionsTransform >> >> ModuleNode.body = StatListNode(ibmisc.pyx:1:0) >> StatListNode.stats[3] = StatListNode(ibmisc.pyx:35:0) >> StatListNode.stats[0] = DefNode(ibmisc.pyx:35:0, >> modifiers = [...]/0, >> name = 'test_double_blitz', >> num_required_args = 1, >> py_wrapper_required = True, >> reqd_kw_flags_cname = '0', >> used = True) >> File 'Nodes.py', line 430, in analyse_expressions: >> StatListNode(ibmisc.pyx:36:1) >> File 'Nodes.py', line 4775, in analyse_expressions: >> SingleAssignmentNode(ibmisc.pyx:38:36) >> File 'Nodes.py', line 4887, in analyse_types: >> SingleAssignmentNode(ibmisc.pyx:38:36) >> File 'ExprNodes.py', line 4640, in analyse_types: >> SimpleCallNode(ibmisc.pyx:38:36, >> analysed = True, >> result_is_used = True, >> use_managed_ref = True) >> File 'ExprNodes.py', line 3109, in analyse_types: >> IndexNode(ibmisc.pyx:38:26, >> is_called = 1, >> is_subscript = True, >> result_is_used = True, >> use_managed_ref = True) >> File 'ExprNodes.py', line 3419, in analyse_base_and_index_types: >> IndexNode(ibmisc.pyx:38:26, >> is_called = 1, >> is_subscript = True, >> result_is_used = True, >> use_managed_ref = True) >> >> Compiler crash traceback from this point on: >> File >> "/Users/rpfische/macports/mpgompi-4.9.3/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Cython/Compiler/ExprNodes.py", >> line 3419, in analyse_base_and_index_types >> elif len(base_type.templates) != len(self.type_indices): >> TypeError: object of type 'NoneType' has no len() >> make[2]: *** [pylib/ibmisc.cpp] Error 1 >> make[2]: *** Deleting file `pylib/ibmisc.cpp' >> make[1]: *** [pylib/CMakeFiles/ibmisc_so.dir/all] Error 2 >> make: *** [all] Error 2 >> >> _______________________________________________ >> cython-devel mailing list >> cython-devel at python.org >> https://mail.python.org/mailman/listinfo/cython-devel >> > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From krthornt at uci.edu Tue Feb 2 00:32:34 2016 From: krthornt at uci.edu (Kevin Thornton) Date: Tue, 02 Feb 2016 05:32:34 +0000 Subject: [Cython] Cython 0.23.4: Crash with Template Stuff In-Reply-To: References: Message-ID: That'd be nice, but the main developers will have to weigh in on that. On Mon, Feb 1, 2016 at 21:14 Elizabeth Fischer wrote: > I think you've figured out what's going on. Short of adding the feature, > is it possible to add a better error message, rather than what looks like a > random crash? > > -- Elizabeth > > > > On Mon, Feb 1, 2016 at 8:08 PM, Kevin Thornton wrote: > >> Without knowing more about the "blitz" stuff, it is hard to provide >> detailed help. >> >> However, it looks like you have a template taking a non-typename as a >> parameter, which is not currently supported in Cython. >> >> In other words, the 1 in [double,1] is not a type name, and that causes >> Cython to give up. There is a pull request in progress to fix this issue >> on GitHub, but I'm not sure what the latest is on that. >> >> On Sun, Jan 31, 2016 at 11:07 PM Elizabeth Fischer >> wrote: >> >>> Cython is crashing on me when I compile. See below. >>> >>> -- Elizabeth >>> >>> cython --version >>> >>> Cython version 0.23.4 >>> >>> Error compiling Cython file: >>> ------------------------------------------------------------ >>> ... >>> # cdef int flags >>> >>> def test_double_blitz(a): >>> cdef vector[int] v >>> cdef cblitz.Array[double,1] a_b >>> a_b = cibmisc.np_to_blitz[double,1](a, b'var', [-1]) >>> ^ >>> ------------------------------------------------------------ >>> >>> /Users/rpfische/git/ibmisc/pylib/ibmisc.pyx:38:26: Compiler crash in >>> AnalyseExpressionsTransform >>> >>> ModuleNode.body = StatListNode(ibmisc.pyx:1:0) >>> StatListNode.stats[3] = StatListNode(ibmisc.pyx:35:0) >>> StatListNode.stats[0] = DefNode(ibmisc.pyx:35:0, >>> modifiers = [...]/0, >>> name = 'test_double_blitz', >>> num_required_args = 1, >>> py_wrapper_required = True, >>> reqd_kw_flags_cname = '0', >>> used = True) >>> File 'Nodes.py', line 430, in analyse_expressions: >>> StatListNode(ibmisc.pyx:36:1) >>> File 'Nodes.py', line 4775, in analyse_expressions: >>> SingleAssignmentNode(ibmisc.pyx:38:36) >>> File 'Nodes.py', line 4887, in analyse_types: >>> SingleAssignmentNode(ibmisc.pyx:38:36) >>> File 'ExprNodes.py', line 4640, in analyse_types: >>> SimpleCallNode(ibmisc.pyx:38:36, >>> analysed = True, >>> result_is_used = True, >>> use_managed_ref = True) >>> File 'ExprNodes.py', line 3109, in analyse_types: >>> IndexNode(ibmisc.pyx:38:26, >>> is_called = 1, >>> is_subscript = True, >>> result_is_used = True, >>> use_managed_ref = True) >>> File 'ExprNodes.py', line 3419, in analyse_base_and_index_types: >>> IndexNode(ibmisc.pyx:38:26, >>> is_called = 1, >>> is_subscript = True, >>> result_is_used = True, >>> use_managed_ref = True) >>> >>> Compiler crash traceback from this point on: >>> File >>> "/Users/rpfische/macports/mpgompi-4.9.3/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Cython/Compiler/ExprNodes.py", >>> line 3419, in analyse_base_and_index_types >>> elif len(base_type.templates) != len(self.type_indices): >>> TypeError: object of type 'NoneType' has no len() >>> make[2]: *** [pylib/ibmisc.cpp] Error 1 >>> make[2]: *** Deleting file `pylib/ibmisc.cpp' >>> make[1]: *** [pylib/CMakeFiles/ibmisc_so.dir/all] Error 2 >>> make: *** [all] Error 2 >>> >>> _______________________________________________ >>> cython-devel mailing list >>> cython-devel at python.org >>> https://mail.python.org/mailman/listinfo/cython-devel >>> >> >> _______________________________________________ >> cython-devel mailing list >> cython-devel at python.org >> https://mail.python.org/mailman/listinfo/cython-devel >> >> > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From robertwb at gmail.com Tue Feb 2 03:39:01 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Tue, 2 Feb 2016 00:39:01 -0800 Subject: [Cython] Cython 0.23.4: Crash with Template Stuff In-Reply-To: References: Message-ID: +1 to a better error message. Pull requests accepted :). As for actually implementing this feature, the pull request has been bogged down in trying to accept expressions and types in exactly the right places. (It's messy because one needs both Fizzle[bubble*] and Fizzle[bubble*bubble] to parse... On Mon, Feb 1, 2016 at 9:32 PM, Kevin Thornton wrote: > That'd be nice, but the main developers will have to weigh in on that. > > On Mon, Feb 1, 2016 at 21:14 Elizabeth Fischer wrote: >> >> I think you've figured out what's going on. Short of adding the feature, >> is it possible to add a better error message, rather than what looks like a >> random crash? >> >> -- Elizabeth >> >> >> >> On Mon, Feb 1, 2016 at 8:08 PM, Kevin Thornton wrote: >>> >>> Without knowing more about the "blitz" stuff, it is hard to provide >>> detailed help. >>> >>> However, it looks like you have a template taking a non-typename as a >>> parameter, which is not currently supported in Cython. >>> >>> In other words, the 1 in [double,1] is not a type name, and that causes >>> Cython to give up. There is a pull request in progress to fix this issue on >>> GitHub, but I'm not sure what the latest is on that. >>> >>> On Sun, Jan 31, 2016 at 11:07 PM Elizabeth Fischer >>> wrote: >>>> >>>> Cython is crashing on me when I compile. See below. >>>> >>>> -- Elizabeth >>>> >>>> cython --version >>>> >>>> Cython version 0.23.4 >>>> >>>> >>>> Error compiling Cython file: >>>> ------------------------------------------------------------ >>>> ... >>>> # cdef int flags >>>> >>>> def test_double_blitz(a): >>>> cdef vector[int] v >>>> cdef cblitz.Array[double,1] a_b >>>> a_b = cibmisc.np_to_blitz[double,1](a, b'var', [-1]) >>>> ^ >>>> ------------------------------------------------------------ >>>> >>>> /Users/rpfische/git/ibmisc/pylib/ibmisc.pyx:38:26: Compiler crash in >>>> AnalyseExpressionsTransform >>>> >>>> ModuleNode.body = StatListNode(ibmisc.pyx:1:0) >>>> StatListNode.stats[3] = StatListNode(ibmisc.pyx:35:0) >>>> StatListNode.stats[0] = DefNode(ibmisc.pyx:35:0, >>>> modifiers = [...]/0, >>>> name = 'test_double_blitz', >>>> num_required_args = 1, >>>> py_wrapper_required = True, >>>> reqd_kw_flags_cname = '0', >>>> used = True) >>>> File 'Nodes.py', line 430, in analyse_expressions: >>>> StatListNode(ibmisc.pyx:36:1) >>>> File 'Nodes.py', line 4775, in analyse_expressions: >>>> SingleAssignmentNode(ibmisc.pyx:38:36) >>>> File 'Nodes.py', line 4887, in analyse_types: >>>> SingleAssignmentNode(ibmisc.pyx:38:36) >>>> File 'ExprNodes.py', line 4640, in analyse_types: >>>> SimpleCallNode(ibmisc.pyx:38:36, >>>> analysed = True, >>>> result_is_used = True, >>>> use_managed_ref = True) >>>> File 'ExprNodes.py', line 3109, in analyse_types: >>>> IndexNode(ibmisc.pyx:38:26, >>>> is_called = 1, >>>> is_subscript = True, >>>> result_is_used = True, >>>> use_managed_ref = True) >>>> File 'ExprNodes.py', line 3419, in analyse_base_and_index_types: >>>> IndexNode(ibmisc.pyx:38:26, >>>> is_called = 1, >>>> is_subscript = True, >>>> result_is_used = True, >>>> use_managed_ref = True) >>>> >>>> Compiler crash traceback from this point on: >>>> File >>>> "/Users/rpfische/macports/mpgompi-4.9.3/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Cython/Compiler/ExprNodes.py", >>>> line 3419, in analyse_base_and_index_types >>>> elif len(base_type.templates) != len(self.type_indices): >>>> TypeError: object of type 'NoneType' has no len() >>>> make[2]: *** [pylib/ibmisc.cpp] Error 1 >>>> make[2]: *** Deleting file `pylib/ibmisc.cpp' >>>> make[1]: *** [pylib/CMakeFiles/ibmisc_so.dir/all] Error 2 >>>> make: *** [all] Error 2 >>>> >>>> _______________________________________________ >>>> cython-devel mailing list >>>> cython-devel at python.org >>>> https://mail.python.org/mailman/listinfo/cython-devel >>> >>> >>> _______________________________________________ >>> cython-devel mailing list >>> cython-devel at python.org >>> https://mail.python.org/mailman/listinfo/cython-devel >>> >> >> _______________________________________________ >> cython-devel mailing list >> cython-devel at python.org >> https://mail.python.org/mailman/listinfo/cython-devel > > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > From robertwb at gmail.com Tue Feb 2 03:55:47 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Tue, 2 Feb 2016 00:55:47 -0800 Subject: [Cython] C++ structs, namespace, and auto-conversion of struct to dict In-Reply-To: References: Message-ID: On Mon, Feb 1, 2016 at 5:03 PM, Kevin Thornton wrote: > Hi, > > I recently ran into an issue where I found that Cython will not generate > code to auto-convert structs do dicts if the struct is declared in a C++ > namespace. > > The issue has also been discussed here: > http://stackoverflow.com/questions/29603562/auto-conversion-of-structs-to-dicts-in-cython > > While there are obvious workarounds, none of them are ideal. > > Is there a road map for addressing this issue? I simply didn't know about it. > If not, what would it take > to do so, and where in the code should one start looking? https://github.com/cython/cython/commit/fa946e8435a4dcc3497fc7b0f4e87256d40844ba From krthornt at uci.edu Tue Feb 2 07:40:51 2016 From: krthornt at uci.edu (Kevin Thornton) Date: Tue, 02 Feb 2016 12:40:51 +0000 Subject: [Cython] C++ structs, namespace, and auto-conversion of struct to dict In-Reply-To: References: Message-ID: Great--thanks! On Tue, Feb 2, 2016 at 12:56 AM Robert Bradshaw wrote: > On Mon, Feb 1, 2016 at 5:03 PM, Kevin Thornton wrote: > > Hi, > > > > I recently ran into an issue where I found that Cython will not generate > > code to auto-convert structs do dicts if the struct is declared in a C++ > > namespace. > > > > The issue has also been discussed here: > > > http://stackoverflow.com/questions/29603562/auto-conversion-of-structs-to-dicts-in-cython > > > > While there are obvious workarounds, none of them are ideal. > > > > Is there a road map for addressing this issue? > > I simply didn't know about it. > > > If not, what would it take > > to do so, and where in the code should one start looking? > > > https://github.com/cython/cython/commit/fa946e8435a4dcc3497fc7b0f4e87256d40844ba > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From marvin.ritter at gmail.com Mon Feb 1 17:56:03 2016 From: marvin.ritter at gmail.com (Marvin Ritter) Date: Mon, 1 Feb 2016 17:56:03 -0500 Subject: [Cython] Bug: Typed Memoryview and unicode string typ Message-ID: Hi, First off all thanks to all of you for this awesome tool, it is working great and I love it :) Also the idea looks cool, I haven't been able to use typed memories views as they seem broken for my setup: Cython 0.23.4 Python 3.4 (and 3.5) Compiler directive: c_string_type=unicode (which should be the same as str in Python 3.x) Steps: cdef int* ptr = malloc(sizeof(int) * 10) memView = ptr Result: Compiles, but will raise a TypeError('expected bytes, str found') at runtime I attached a minimal example. Note that if you change the c_string_type to 'bytes' it will work fine. Best Marvin -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: cython-string_type.zip Type: application/zip Size: 1439 bytes Desc: not available URL: From marvin.ritter at gmail.com Mon Feb 1 18:22:46 2016 From: marvin.ritter at gmail.com (Marvin Ritter) Date: Mon, 1 Feb 2016 18:22:46 -0500 Subject: [Cython] NumPy C API Status? Message-ID: Hi, I have to use the NumPy C API for my current project and it seems that Cython 0.23.4 it only shipping definitions for on all version of the API. But I need some of the newer methods. What are your plans on updating? Is there anything that prevents you? And if not, how complicated is it? Could a novice like me do it? Thanks Marvin -------------- next part -------------- An HTML attachment was scrubbed... URL: From robertwb at gmail.com Tue Feb 2 12:50:01 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Tue, 2 Feb 2016 09:50:01 -0800 Subject: [Cython] NumPy C API Status? In-Reply-To: References: Message-ID: On Mon, Feb 1, 2016 at 3:22 PM, Marvin Ritter wrote: > Hi, > > I have to use the NumPy C API for my current project and it seems that > Cython 0.23.4 it only shipping definitions for on all version of the API. > But I need some of the newer methods. > > What are your plans on updating? Is there anything that prevents you? > And if not, how complicated is it? Could a novice like me do it? Back when this was being actively worked on, the "new" API was so new that we didn't want to make it a dependency, but those days are long past. It would be trivial to add new methods (etc.) to the pxd file at https://github.com/cython/cython/blob/master/Cython/Includes/numpy/__init__.pxd . Updating the buffer support (e.g. used when writing np.ndarray[int]) to use the new API would be welcome too, but more involved. From marvin.ritter at gmail.com Tue Feb 2 13:43:40 2016 From: marvin.ritter at gmail.com (Marvin Ritter) Date: Tue, 2 Feb 2016 13:43:40 -0500 Subject: [Cython] NumPy C API Status? In-Reply-To: References: Message-ID: Ok, I can update the numpy/__init__.pxd to match the new API and create a pull request for it. How do we want to handle the deprecated methods and types? 1.7 not only added new stuff it also changed return values and type names. If we remove old names user will be forced to update their code. Otherwise we can delay it until NumPy drops the old API. Updating the buffer support sounds like a good idea to me, we would get rid of the deprecation warning, but I think I'm not qualified enough for it. On Tue, Feb 2, 2016 at 12:50 PM, Robert Bradshaw wrote: > On Mon, Feb 1, 2016 at 3:22 PM, Marvin Ritter > wrote: > > Hi, > > > > I have to use the NumPy C API for my current project and it seems that > > Cython 0.23.4 it only shipping definitions for on all version of the API. > > But I need some of the newer methods. > > > > What are your plans on updating? Is there anything that prevents you? > > And if not, how complicated is it? Could a novice like me do it? > > Back when this was being actively worked on, the "new" API was so new > that we didn't want to make it a dependency, but those days are long > past. > > It would be trivial to add new methods (etc.) to the pxd file at > > https://github.com/cython/cython/blob/master/Cython/Includes/numpy/__init__.pxd > . Updating the buffer support (e.g. used when writing np.ndarray[int]) > to use the new API would be welcome too, but more involved. > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From robertwb at gmail.com Tue Feb 2 14:36:58 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Tue, 2 Feb 2016 11:36:58 -0800 Subject: [Cython] NumPy C API Status? In-Reply-To: References: Message-ID: On Tue, Feb 2, 2016 at 10:43 AM, Marvin Ritter wrote: > Ok, I can update the numpy/__init__.pxd to match the new API and create a > pull request for it. How do we want to handle the deprecated methods and > types? 1.7 not only added new stuff it also changed return values and type > names. If we remove old names user will be forced to update their code. > Otherwise we can delay it until NumPy drops the old API. How about you create a pull request to better visualize exactly what changed. We may need to create two separate numpy files, but ideally we'd be able to do it in such a way that people could migrate their code over before we delete the old definitions. > Updating the buffer support sounds like a good idea to me, we would get rid > of the deprecation warning, but I think I'm not qualified enough for it. Wouldn't hurt to give it a go. IIRC, many of the changes were moving from using direct access (e.g. of structs) to using macros. > On Tue, Feb 2, 2016 at 12:50 PM, Robert Bradshaw wrote: >> >> On Mon, Feb 1, 2016 at 3:22 PM, Marvin Ritter >> wrote: >> > Hi, >> > >> > I have to use the NumPy C API for my current project and it seems that >> > Cython 0.23.4 it only shipping definitions for on all version of the >> > API. >> > But I need some of the newer methods. >> > >> > What are your plans on updating? Is there anything that prevents you? >> > And if not, how complicated is it? Could a novice like me do it? >> >> Back when this was being actively worked on, the "new" API was so new >> that we didn't want to make it a dependency, but those days are long >> past. >> >> It would be trivial to add new methods (etc.) to the pxd file at >> >> https://github.com/cython/cython/blob/master/Cython/Includes/numpy/__init__.pxd >> . Updating the buffer support (e.g. used when writing np.ndarray[int]) >> to use the new API would be welcome too, but more involved. >> _______________________________________________ >> cython-devel mailing list >> cython-devel at python.org >> https://mail.python.org/mailman/listinfo/cython-devel > > > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > From ndbecker2 at gmail.com Thu Feb 4 07:04:07 2016 From: ndbecker2 at gmail.com (Neal Becker) Date: Thu, 04 Feb 2016 07:04:07 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 Message-ID: Anyone able to shed any light on this? Here are the logs: https://kojipkgs.fedoraproject.org//work/tasks/4202/12804202/build.log From robertwb at gmail.com Thu Feb 4 19:53:03 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Thu, 4 Feb 2016 16:53:03 -0800 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: Try this: https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 On Thu, Feb 4, 2016 at 4:04 AM, Neal Becker wrote: > Anyone able to shed any light on this? Here are the logs: > > https://kojipkgs.fedoraproject.org//work/tasks/4202/12804202/build.log > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel From ndbecker2 at gmail.com Fri Feb 5 07:13:27 2016 From: ndbecker2 at gmail.com (Neal Becker) Date: Fri, 05 Feb 2016 07:13:27 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 References: Message-ID: Robert Bradshaw wrote: > Try this: > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 What's the easiest way to grab this in the form of a diff? I don't see anything in the ui on github to do this (other than cut + paste + manually edit) From xnox at ubuntu.com Fri Feb 5 08:35:09 2016 From: xnox at ubuntu.com (Dimitri John Ledkov) Date: Fri, 5 Feb 2016 13:35:09 +0000 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: On 5 February 2016 at 12:13, Neal Becker wrote: > Robert Bradshaw wrote: > >> Try this: >> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 > > What's the easiest way to grab this in the form of a diff? I don't see > anything in the ui on github to do this (other than cut + paste + manually > edit) > Append .patch to get a wgetable git format-patch formated patch. So: https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch Should be what you are after. -- Regards, Dimitri. From ndbecker2 at gmail.com Fri Feb 5 09:37:08 2016 From: ndbecker2 at gmail.com (Neal Becker) Date: Fri, 05 Feb 2016 09:37:08 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 References: Message-ID: Dimitri John Ledkov wrote: > On 5 February 2016 at 12:13, Neal Becker > wrote: >> Robert Bradshaw wrote: >> >>> Try this: >>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >> >> What's the easiest way to grab this in the form of a diff? I don't see >> anything in the ui on github to do this (other than cut + paste + >> manually edit) >> > > Append .patch to get a wgetable git format-patch formated patch. So: > > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch > > Should be what you are after. > Better I suppose, now there is just 1 error: compiling (cpp) and running complex_numbers_c89_T398 https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log From robertwb at gmail.com Fri Feb 5 16:18:21 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Fri, 5 Feb 2016 13:18:21 -0800 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: Oh, I see what the issue is. Sorry. Try this (on top of the previous): https://github.com/cython/cython/commit/a2bec15e0db9ebdd22504268c15bfa059b44f72f On Fri, Feb 5, 2016 at 6:37 AM, Neal Becker wrote: > Dimitri John Ledkov wrote: > >> On 5 February 2016 at 12:13, Neal Becker >> wrote: >>> Robert Bradshaw wrote: >>> >>>> Try this: >>>> >>> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >>> >>> What's the easiest way to grab this in the form of a diff? I don't see >>> anything in the ui on github to do this (other than cut + paste + >>> manually edit) >>> >> >> Append .patch to get a wgetable git format-patch formated patch. So: >> >> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch >> >> Should be what you are after. >> > > Better I suppose, now there is just 1 error: > > compiling (cpp) and running complex_numbers_c89_T398 > > https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel From ndbecker2 at gmail.com Fri Feb 5 21:15:42 2016 From: ndbecker2 at gmail.com (Neal Becker) Date: Fri, 05 Feb 2016 21:15:42 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 References: Message-ID: Robert Bradshaw wrote: > Oh, I see what the issue is. Sorry. Try this (on top of the previous): > https://github.com/cython/cython/commit/a2bec15e0db9ebdd22504268c15bfa059b44f72f > > On Fri, Feb 5, 2016 at 6:37 AM, Neal Becker > wrote: >> Dimitri John Ledkov wrote: >> >>> On 5 February 2016 at 12:13, Neal Becker >>> wrote: >>>> Robert Bradshaw wrote: >>>> >>>>> Try this: >>>>> >>>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >>>> >>>> What's the easiest way to grab this in the form of a diff? I don't see >>>> anything in the ui on github to do this (other than cut + paste + >>>> manually edit) >>>> >>> >>> Append .patch to get a wgetable git format-patch formated patch. So: >>> >>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch >>> >>> Should be what you are after. >>> >> >> Better I suppose, now there is just 1 error: >> >> compiling (cpp) and running complex_numbers_c89_T398 >> >> https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log >> >> _______________________________________________ >> cython-devel mailing list >> cython-devel at python.org >> https://mail.python.org/mailman/listinfo/cython-devel Much better, but still 1 more problem: https://kojipkgs.fedoraproject.org//work/tasks/4695/12894695/build.log But it did complete build on my fedora 23 x86_64 laptop, the only diff should be gcc6. From robertwb at gmail.com Sat Feb 6 03:24:08 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Sat, 6 Feb 2016 00:24:08 -0800 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: ====================================================================== FAIL: runTest (__main__.EndToEndTest) End-to-end asyncio_generators ---------------------------------------------------------------------- Traceback (most recent call last): File "runtests.py", line 1417, in runTest self.assertEqual(0, res, "non-zero exit status") AssertionError: 0 != 1 : non-zero exit status ---------------------------------------------------------------------- Not sure about this one (especially why it would be compiler dependent). On Fri, Feb 5, 2016 at 6:15 PM, Neal Becker wrote: > Robert Bradshaw wrote: > >> Oh, I see what the issue is. Sorry. Try this (on top of the previous): >> > https://github.com/cython/cython/commit/a2bec15e0db9ebdd22504268c15bfa059b44f72f >> >> On Fri, Feb 5, 2016 at 6:37 AM, Neal Becker >> wrote: >>> Dimitri John Ledkov wrote: >>> >>>> On 5 February 2016 at 12:13, Neal Becker >>>> wrote: >>>>> Robert Bradshaw wrote: >>>>> >>>>>> Try this: >>>>>> >>>>> >>> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >>>>> >>>>> What's the easiest way to grab this in the form of a diff? I don't see >>>>> anything in the ui on github to do this (other than cut + paste + >>>>> manually edit) >>>>> >>>> >>>> Append .patch to get a wgetable git format-patch formated patch. So: >>>> >>>> >>> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch >>>> >>>> Should be what you are after. >>>> >>> >>> Better I suppose, now there is just 1 error: >>> >>> compiling (cpp) and running complex_numbers_c89_T398 >>> >>> https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log >>> >>> _______________________________________________ >>> cython-devel mailing list >>> cython-devel at python.org >>> https://mail.python.org/mailman/listinfo/cython-devel > > Much better, but still 1 more problem: > https://kojipkgs.fedoraproject.org//work/tasks/4695/12894695/build.log > > But it did complete build on my fedora 23 x86_64 laptop, the only diff > should be gcc6. > > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel From nils.werner at gmail.com Fri Feb 5 15:43:32 2016 From: nils.werner at gmail.com (Nils Werner) Date: Fri, 5 Feb 2016 21:43:32 +0100 Subject: [Cython] import-free setuptools integration Message-ID: I have implemented some very simple setuptools integration that circumvents the requirement to `import cython` in `setup.py` entirely, doing away with the century-old problem of having to importing requirements during installation: This implementation is inspired by CFFI's setuptools integration: . They do not require you to `import cffi` but simply define an additional keyword argument `cffi_modules` for `setup()`. This additional keyword argument _does not raise errors when cffi is not installed yet_ but can be used once cffi is there (as defined in `setup_requires`). Later setuptools will call cffi and have it do whatever it wants with the contents of the argument. Cython can do the exact same. Below you have the usual `setup.py`, with the chicken and egg `import` problem and a few `Extensions` that need to be `cythonize`d: import setuptools from Cython.Build import cythonize # this will fail if cython is not present prior to running `pip install this` from setuptools.extension import Extension extensions = [ Extension("fib", ["fib.pyx"]), Extension("fib2", ["fib2.pyx"]), ] setuptools.setup( name='example', version="1.0.0", packages=setuptools.find_packages(), setup_requires=['cython'], install_requires=['cython'], ext_modules=cythonize(extensions), ) With the changes I am proposing the usual ext_modules=cythonize(extensions), can be replaced with cython_modules=extensions, removing the need for `from Cython.Build import cythonize` and solving the import problem: import setuptools from setuptools.extension import Extension extensions = [ Extension("fib", ["fib.pyx"]), Extension("fib2", ["fib2.pyx"]), ] setuptools.setup( name='example', version="1.0.0", setup_requires=['cython'], # we must later require a Cython version that has this kind of integration install_requires=['cython'], cython_modules=extensions, ) This allows a nicer automated installation of tools that depend on cython and also allows end users to keep their `setup.py` cleaner and leaner. Additionally, I have also extended `cythonize()` a bit and thus allow for definitions like: import setuptools from setuptools.extension import Extension extensions = [ Extension("fib", ["fib.c"]), Extension("fib2", ["fib2.c"]), ] setuptools.setup( name='example', version="1.0.0", extras_require={'cython': ['cython']}, ext_modules=extensions, cython_modules=extensions, ) This will automatically compile pyx->c if cython is installed and a re-compilation is needed. Otherwise it will merely compile c->so. This allows devs to ship the generated C-code (as you suggest per your docs) but takes the heuristic to find out whether to compile pyx->C->so or only C->so completely out of `setup.py` and under control of cython. The change is written to be backwards compatible: - Using `cython_modules` is entirely optional and not using it is sideeffect-free - Having `cythonize()` internally automatically compile *.pyx files when *.c files are provided is disabled by default and must be enabled using the `replace_extension` keyword argument (`cython_modules` enables that option). -------------- next part -------------- An HTML attachment was scrubbed... URL: From ndbecker2 at gmail.com Sat Feb 6 12:46:11 2016 From: ndbecker2 at gmail.com (Neal Becker) Date: Sat, 06 Feb 2016 12:46:11 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 References: Message-ID: Robert Bradshaw wrote: > ====================================================================== > FAIL: runTest (__main__.EndToEndTest) > End-to-end asyncio_generators > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "runtests.py", line 1417, in runTest > self.assertEqual(0, res, "non-zero exit status") > AssertionError: 0 != 1 : non-zero exit status > ---------------------------------------------------------------------- > > Not sure about this one (especially why it would be compiler dependent). > > > On Fri, Feb 5, 2016 at 6:15 PM, Neal Becker > wrote: >> Robert Bradshaw wrote: >> >>> Oh, I see what the issue is. Sorry. Try this (on top of the previous): >>> >> https://github.com/cython/cython/commit/a2bec15e0db9ebdd22504268c15bfa059b44f72f >>> >>> On Fri, Feb 5, 2016 at 6:37 AM, Neal Becker >>> wrote: >>>> Dimitri John Ledkov wrote: >>>> >>>>> On 5 February 2016 at 12:13, Neal Becker >>>>> wrote: >>>>>> Robert Bradshaw wrote: >>>>>> >>>>>>> Try this: >>>>>>> >>>>>> >>>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >>>>>> >>>>>> What's the easiest way to grab this in the form of a diff? I don't >>>>>> see anything in the ui on github to do this (other than cut + paste + >>>>>> manually edit) >>>>>> >>>>> >>>>> Append .patch to get a wgetable git format-patch formated patch. So: >>>>> >>>>> >>>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch >>>>> >>>>> Should be what you are after. >>>>> >>>> >>>> Better I suppose, now there is just 1 error: >>>> >>>> compiling (cpp) and running complex_numbers_c89_T398 >>>> >>>> https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log >>>> >>>> _______________________________________________ >>>> cython-devel mailing list >>>> cython-devel at python.org >>>> https://mail.python.org/mailman/listinfo/cython-devel >> >> Much better, but still 1 more problem: >> https://kojipkgs.fedoraproject.org//work/tasks/4695/12894695/build.log >> >> But it did complete build on my fedora 23 x86_64 laptop, the only diff >> should be gcc6. I disabled tests for python3 again - the async test also failed before. Maybe something to do with the testing environment. From xnox at ubuntu.com Sun Feb 7 03:02:16 2016 From: xnox at ubuntu.com (Dimitri John Ledkov) Date: Sun, 7 Feb 2016 08:02:16 +0000 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: On 6 February 2016 at 17:46, Neal Becker wrote: > Robert Bradshaw wrote: > >> ====================================================================== >> FAIL: runTest (__main__.EndToEndTest) >> End-to-end asyncio_generators >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "runtests.py", line 1417, in runTest >> self.assertEqual(0, res, "non-zero exit status") >> AssertionError: 0 != 1 : non-zero exit status >> ---------------------------------------------------------------------- >> >> Not sure about this one (especially why it would be compiler dependent). >> >> >> On Fri, Feb 5, 2016 at 6:15 PM, Neal Becker >> wrote: >>> Robert Bradshaw wrote: >>> >>>> Oh, I see what the issue is. Sorry. Try this (on top of the previous): >>>> >>> > https://github.com/cython/cython/commit/a2bec15e0db9ebdd22504268c15bfa059b44f72f >>>> >>>> On Fri, Feb 5, 2016 at 6:37 AM, Neal Becker >>>> wrote: >>>>> Dimitri John Ledkov wrote: >>>>> >>>>>> On 5 February 2016 at 12:13, Neal Becker >>>>>> wrote: >>>>>>> Robert Bradshaw wrote: >>>>>>> >>>>>>>> Try this: >>>>>>>> >>>>>>> >>>>> >>> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >>>>>>> >>>>>>> What's the easiest way to grab this in the form of a diff? I don't >>>>>>> see anything in the ui on github to do this (other than cut + paste + >>>>>>> manually edit) >>>>>>> >>>>>> >>>>>> Append .patch to get a wgetable git format-patch formated patch. So: >>>>>> >>>>>> >>>>> >>> > https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch >>>>>> >>>>>> Should be what you are after. >>>>>> >>>>> >>>>> Better I suppose, now there is just 1 error: >>>>> >>>>> compiling (cpp) and running complex_numbers_c89_T398 >>>>> >>>>> https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log >>>>> >>>>> _______________________________________________ >>>>> cython-devel mailing list >>>>> cython-devel at python.org >>>>> https://mail.python.org/mailman/listinfo/cython-devel >>> >>> Much better, but still 1 more problem: >>> https://kojipkgs.fedoraproject.org//work/tasks/4695/12894695/build.log >>> >>> But it did complete build on my fedora 23 x86_64 laptop, the only diff >>> should be gcc6. > > I disabled tests for python3 again - the async test also failed before. > Maybe something to do with the testing environment. > async tests are failing with async module from python 3.5.1+ In ubuntu, i've disabled just those. Reported both to cython and async upstream. Looks like not fixed yet. -- Regards, Dimitri. From ndbecker2 at gmail.com Sun Feb 7 09:06:54 2016 From: ndbecker2 at gmail.com (Neal Becker) Date: Sun, 07 Feb 2016 09:06:54 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 References: Message-ID: Dimitri John Ledkov wrote: > On 6 February 2016 at 17:46, Neal Becker > wrote: >> Robert Bradshaw wrote: >> >>> ====================================================================== >>> FAIL: runTest (__main__.EndToEndTest) >>> End-to-end asyncio_generators >>> ---------------------------------------------------------------------- >>> Traceback (most recent call last): >>> File "runtests.py", line 1417, in runTest >>> self.assertEqual(0, res, "non-zero exit status") >>> AssertionError: 0 != 1 : non-zero exit status >>> ---------------------------------------------------------------------- >>> >>> Not sure about this one (especially why it would be compiler dependent). >>> >>> >>> On Fri, Feb 5, 2016 at 6:15 PM, Neal Becker >>> wrote: >>>> Robert Bradshaw wrote: >>>> >>>>> Oh, I see what the issue is. Sorry. Try this (on top of the previous): >>>>> >>>> >> https://github.com/cython/cython/commit/a2bec15e0db9ebdd22504268c15bfa059b44f72f >>>>> >>>>> On Fri, Feb 5, 2016 at 6:37 AM, Neal Becker >>>>> wrote: >>>>>> Dimitri John Ledkov wrote: >>>>>> >>>>>>> On 5 February 2016 at 12:13, Neal Becker >>>>>>> wrote: >>>>>>>> Robert Bradshaw wrote: >>>>>>>> >>>>>>>>> Try this: >>>>>>>>> >>>>>>>> >>>>>> >>>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7 >>>>>>>> >>>>>>>> What's the easiest way to grab this in the form of a diff? I don't >>>>>>>> see anything in the ui on github to do this (other than cut + paste >>>>>>>> + manually edit) >>>>>>>> >>>>>>> >>>>>>> Append .patch to get a wgetable git format-patch formated patch. So: >>>>>>> >>>>>>> >>>>>> >>>> >> https://github.com/cython/cython/commit/bd43a6a2c93443792d07caeb9647eab5a75858b7.patch >>>>>>> >>>>>>> Should be what you are after. >>>>>>> >>>>>> >>>>>> Better I suppose, now there is just 1 error: >>>>>> >>>>>> compiling (cpp) and running complex_numbers_c89_T398 >>>>>> >>>>>> https://kojipkgs.fedoraproject.org//work/tasks/3468/12893468/build.log >>>>>> >>>>>> _______________________________________________ >>>>>> cython-devel mailing list >>>>>> cython-devel at python.org >>>>>> https://mail.python.org/mailman/listinfo/cython-devel >>>> >>>> Much better, but still 1 more problem: >>>> https://kojipkgs.fedoraproject.org//work/tasks/4695/12894695/build.log >>>> >>>> But it did complete build on my fedora 23 x86_64 laptop, the only diff >>>> should be gcc6. >> >> I disabled tests for python3 again - the async test also failed before. >> Maybe something to do with the testing environment. >> > > async tests are failing with async module from python 3.5.1+ > > In ubuntu, i've disabled just those. Reported both to cython and async > upstream. Looks like not fixed yet. > How can I disable just those? Do you have a patch? From toddrme2178 at gmail.com Sun Feb 7 10:15:32 2016 From: toddrme2178 at gmail.com (Todd Rme) Date: Sun, 7 Feb 2016 16:15:32 +0100 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: On Feb 7, 2016 9:02 AM, "Dimitri John Ledkov" wrote: > > On 6 February 2016 at 17:46, Neal Becker wrote: > > > > I disabled tests for python3 again - the async test also failed before. > > Maybe something to do with the testing environment. > > > > async tests are failing with async module from python 3.5.1+ > > In ubuntu, i've disabled just those. Reported both to cython and async > upstream. Looks like not fixed yet. For openSUSE I am still holding out for a proper fix (although I am not sure how much longer we can put things off). I consider the failure to be a serious one. The tests are failing because the new await command doesn't return anything in cython with python 3.5.1+, although it works fine in ordinary python cython under python 3.5.0. This can lead to subtle failures in code, depending on what sort of return values the code is prepared for. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan_ml at behnel.de Sun Feb 7 14:05:06 2016 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sun, 7 Feb 2016 20:05:06 +0100 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: References: Message-ID: <56B79562.2030805@behnel.de> Robert Bradshaw schrieb am 06.02.2016 um 09:24: > ====================================================================== > FAIL: runTest (__main__.EndToEndTest) > End-to-end asyncio_generators > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "runtests.py", line 1417, in runTest > self.assertEqual(0, res, "non-zero exit status") > AssertionError: 0 != 1 : non-zero exit status > ---------------------------------------------------------------------- > > Not sure about this one (especially why it would be compiler dependent). It's not compiler dependent. It's an incompatibility between Cython and CPython's asyncio. Might be related to the fact that asyncio's Future is both iterable and awaitable. Or something else... I looked into it but couldn't figure it out yet. Stefan From greg.ewing at canterbury.ac.nz Sun Feb 7 15:38:27 2016 From: greg.ewing at canterbury.ac.nz (Greg Ewing) Date: Mon, 08 Feb 2016 09:38:27 +1300 Subject: [Cython] import-free setuptools integration In-Reply-To: References: Message-ID: <56B7AB43.7030400@canterbury.ac.nz> Nils Werner wrote: > - Having `cythonize()` internally automatically compile *.pyx files > when *.c files > are provided is disabled by default and must be enabled using the > `replace_extension` > keyword argument (`cython_modules` enables that option). I'd be happier if it were still disabled by default even then. If I'm simply installing a package, I do *not* want it to try to recompile any .pyx files just because I happen to have cython installed. I know that isn't supposed to happen unless the .pyx is newer than the .c, but I wouldn't like to rely on that. There's a big difference between using a package and modifying it, and I'd rather be explicit about when I'm doing the latter. -- Greg From raniere at ime.unicamp.br Mon Feb 8 09:09:17 2016 From: raniere at ime.unicamp.br (Raniere Silva) Date: Mon, 8 Feb 2016 12:09:17 -0200 Subject: [Cython] Google Summer of Code 2016, GSoC2016 Message-ID: <20160208140917.GU1293@buriti.rgaiacs.com> Hi all, Since Cython is a NumFOCUS affiliated project and NumFOCUS will apply to be a mentoring organization on GSoC I want to know (1) if Cython is planning to apply this year and (2) if want to apply under NumFOCUS umbrella. Cython is welcome and encouraged to apply as separate mentoring organizations directly with Google. We're happy to help you fill out your application and improve your ideas pages, as well as link your page to help students find you. We may also be able to be a reference for you. It is totally fine if you want to use the NumFOCUS umbrella org as a backup plan in case you don't get selected and we do! Cheers, Raniere -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: From yury at shurup.com Tue Feb 9 16:14:37 2016 From: yury at shurup.com (Yury V. Zaytsev) Date: Tue, 09 Feb 2016 22:14:37 +0100 Subject: [Cython] iterators / libcpp container definitions cleanup, any clues? Message-ID: <1455052477.2763.164.camel@newpride> Hi, I've been looking into libcpp container definitions and found that they are kind of messy, in particular, iterators are defined as nested classes for every container. This leads to code duplication, and for certain containers some overloaded methods seem to be missing or conversely declared, but not provided. I was trying to have a stab at cleaning this up and offering patches, but I'm confused as to how to proceed. At first, I thought that I could turn concepts into a hierarchy of inherited classes in `iterator.pxd` like _ForwardIterator -> _BidirectionalIterator -> _RandomAccessIterator and inherit container iterators from those classes. It seems that this is a bad idea for several reasons: 1) Apparently, there are some problems with inheritance, overload resolution and type deduction, e.g. such that Cython deduces `_RandomAccessIterator` as a result type for a + operation instead of `vector[int].iterator` (which inherits from _RandomAccessIterator). 2) Cython thinks these are real classes and uses them in explicit template arguments in generated C++ code. The combination of (1) and (2) causes a lot of fail. The only other possibility that crossed my mind so far was to use the old "include" for code reuse and create files like _RandomAccessIterator.pxi, _RandomAccessIteratorConst.pxi, etc. and include their contents in the container definitions. Sounds terrible, and I guess this wouldn't get merged, even if I get that to work. Now, are there better approaches that I've overlooked? -- Sincerely yours, Yury V. Zaytsev From yury at shurup.com Wed Feb 10 05:42:45 2016 From: yury at shurup.com (Yury V. Zaytsev) Date: Wed, 10 Feb 2016 11:42:45 +0100 (CET) Subject: [Cython] Bug: compilation failure with "Template parameter not a type" for pointer & reference types Message-ID: Hi, I came across the following bug, while trying to implement iterator versions of std::string members, for which a simple reproducer is below. If the return type of a function is a normal type, then everything is fine, but if it's a pointer or reference type, then Cython refuses to compile it. Could something please be done about that? Many thanks! Error compiling Cython file: ------------------------------------------------------------ ... cdef extern from * nogil: cdef cppclass test: void assign[input_iterator](input_iterator, input_iterator) char assign[input_iterator](input_iterator, input_iterator) char* assign[input_iterator](input_iterator, input_iterator) char& assign[input_iterator](input_iterator, input_iterator) ^ ------------------------------------------------------------ notatype.pyx:6:35: Template parameter not a type -- Sincerely yours, Yury V. Zaytsev From yury at shurup.com Wed Feb 10 05:59:40 2016 From: yury at shurup.com (Yury V. Zaytsev) Date: Wed, 10 Feb 2016 11:59:40 +0100 (CET) Subject: [Cython] Bug: compilation failure with "Template parameter not a type" for pointer & reference types In-Reply-To: References: Message-ID: On Wed, 10 Feb 2016, Yury V. Zaytsev wrote: > If the return type of a function is a normal type, then everything is > fine, but if it's a pointer or reference type, then Cython refuses to > compile it. I've just found out that apparently this happens because Cython misparses function definition as an array declaration, but luckily a safety check kicks in. An obvious workaround is: ctypedef char* r1 ctypedef char& r2 cdef extern from * nogil: cdef cppclass test: r1 assign[input_iterator](input_iterator, input_iterator) r2 assign[input_iterator](input_iterator, input_iterator) which compiles just fine. Unfortunately, I'm not well-versed enough with the parser to provide a patch... Hope that helps to fix the problem for good though! -- Sincerely yours, Yury V. Zaytsev From yury at shurup.com Wed Feb 10 08:19:11 2016 From: yury at shurup.com (Yury V. Zaytsev) Date: Wed, 10 Feb 2016 14:19:11 +0100 (CET) Subject: [Cython] Bug: compilation failure with "Template parameter not a type" for pointer & reference types In-Reply-To: References: Message-ID: On Wed, 10 Feb 2016, Yury V. Zaytsev wrote: > Hope that helps to fix the problem for good though! Apparently a separate, but related bug: when C++ class constructor is templated, Cython fails to compile the code. However, if I specify a return type (irrespectively of what type is), it seems to work and some meaningful code is generated: cdef extern from * nogil: cdef cppclass test: test test() test test[input_iterator](input_iterator, input_iterator) Original error messages below: Error compiling Cython file: ------------------------------------------------------------ ... cdef extern from * nogil: cdef cppclass test: test() test[input_iterator](input_iterator, input_iterator) ^ ------------------------------------------------------------ notatype.pyx:9:27: undeclared name not builtin: input_iterator Error compiling Cython file: ------------------------------------------------------------ ... cdef extern from * nogil: cdef cppclass test: test() test[input_iterator](input_iterator, input_iterator) ^ ------------------------------------------------------------ notatype.pyx:9:27: Array dimension not integer Error compiling Cython file: ------------------------------------------------------------ ... cdef extern from * nogil: cdef cppclass test: test() test[input_iterator](input_iterator, input_iterator) ^ ------------------------------------------------------------ notatype.pyx:9:28: Missing name in declaration. -- Sincerely yours, Yury V. Zaytsev From yury at shurup.com Thu Feb 11 07:34:27 2016 From: yury at shurup.com (Yury V. Zaytsev) Date: Thu, 11 Feb 2016 13:34:27 +0100 (CET) Subject: [Cython] Compiler crash in AnalyseExpressionsTransform / overload resolution with templates Message-ID: Hi, I'm trying to improve the declarations in libcpp.string and cover them with unit tests. In this process, I've stumbled upon a compiler crash in overload resolution. A simple reproducer below; if the last line is uncommented, the code compiles just fine: cdef extern from *: cdef cppclass string_helper: cppclass iterator: pass string_helper& insert(size_t, char*, size_t) iterator insert[input_iterator](iterator, input_iterator, input_iterator) def test_insert(): cdef string_helper s cdef string_helper.iterator it s.insert[string_helper.iterator](it, it, it) s.insert(0, 0, 0) zaytsev at work:~/src/cython$ ./cython-git/cython.py --cplus crash.pyx Error compiling Cython file: ------------------------------------------------------------ ... def test_insert(): cdef string_helper s cdef string_helper.iterator it s.insert[string_helper.iterator](it, it, it) s.insert(0, 0, 0) ^ ------------------------------------------------------------ crash.pyx:13:12: Compiler crash in AnalyseExpressionsTransform ModuleNode.body = StatListNode(crash.pyx:1:0) StatListNode.stats[1] = DefNode(crash.pyx:9:0, modifiers = [...]/0, name = u'test_insert', py_wrapper_required = True, reqd_kw_flags_cname = '0', used = True) File 'Nodes.py', line 430, in analyse_expressions: StatListNode(crash.pyx:10:4) File 'Nodes.py', line 4755, in analyse_expressions: ExprStatNode(crash.pyx:13:12) File 'ExprNodes.py', line 519, in analyse_expressions: SimpleCallNode(crash.pyx:13:12, analysed = True, use_managed_ref = True) File 'ExprNodes.py', line 4938, in analyse_types: SimpleCallNode(crash.pyx:13:12, analysed = True, use_managed_ref = True) File 'ExprNodes.py', line 4992, in analyse_c_function_call: SimpleCallNode(crash.pyx:13:12, analysed = True, use_managed_ref = True) Compiler crash traceback from this point on: File "/home/zaytsev/src/cython/cython-git/Cython/Compiler/ExprNodes.py", line 4992, in analyse_c_function_call entry = PyrexTypes.best_match(args, alternatives, self.pos, env) File "/home/zaytsev/src/cython/cython-git/Cython/Compiler/PyrexTypes.py", line 4133, in best_match [pattern.type.deduce_template_params(actual) for (pattern, actual) in zip(func_type.args, arg_types)], File "/home/zaytsev/src/cython/cython-git/Cython/Compiler/PyrexTypes.py", line 3594, in deduce_template_params elif self.empty_declaration_code() == actual.template_type.empty_declaration_code(): AttributeError: 'CIntType' object has no attribute 'template_type' -- Sincerely yours, Yury V. Zaytsev From krthornt at uci.edu Thu Feb 11 07:41:08 2016 From: krthornt at uci.edu (Kevin Thornton) Date: Thu, 11 Feb 2016 12:41:08 +0000 Subject: [Cython] Cython 0.23.4 bug: C++ pairs with unsigned values inside other templates Message-ID: Hi, I've come across an odd bug while creating interfaces to existing C++ functions via Cython. If a C++ pair is contained inside of another template type, the pair cannot contain unsigned integers unless a typedef is provided for unsigned. Examples: #This works: cdef vector[pair[char,char]] doit(): cdef vector[pair[char,char]] rv return rv #This fails: cdef vector[pair[unsigned,char]] doit2(): cdef vector[pair[unsigned,char]] rv return rv #But this works: ctypedef unsigned uint cdef vector[pair[uint,uint]] doit3(): cdef vector[pair[uint,uint]] rv return rv #This fails: cdef void doit4( const vector[pair[unsigned,double]] & x): pass --Kevin -------------- next part -------------- An HTML attachment was scrubbed... URL: From stefan_ml at behnel.de Fri Feb 12 05:04:49 2016 From: stefan_ml at behnel.de (Stefan Behnel) Date: Fri, 12 Feb 2016 11:04:49 +0100 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: <56B79562.2030805@behnel.de> References: <56B79562.2030805@behnel.de> Message-ID: <56BDAE41.4020903@behnel.de> Stefan Behnel schrieb am 07.02.2016 um 20:05: > Robert Bradshaw schrieb am 06.02.2016 um 09:24: >> ====================================================================== >> FAIL: runTest (__main__.EndToEndTest) >> End-to-end asyncio_generators >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "runtests.py", line 1417, in runTest >> self.assertEqual(0, res, "non-zero exit status") >> AssertionError: 0 != 1 : non-zero exit status >> ---------------------------------------------------------------------- >> >> Not sure about this one (especially why it would be compiler dependent). > > It's not compiler dependent. It's an incompatibility between Cython and > CPython's asyncio. Might be related to the fact that asyncio's Future is > both iterable and awaitable. Or something else... I looked into it but > couldn't figure it out yet. Found it: https://github.com/cython/cython/commit/7eed8d8ff9c872bc993a37438beca0f98e3aba38 Stefan From nils.werner at gmail.com Fri Feb 12 07:13:42 2016 From: nils.werner at gmail.com (Nils Werner) Date: Fri, 12 Feb 2016 13:13:42 +0100 Subject: [Cython] import-free setuptools integration In-Reply-To: <56B7AB43.7030400@canterbury.ac.nz> References: <56B7AB43.7030400@canterbury.ac.nz> Message-ID: I understand. Maybe it is then better to remove the extension-swapping and ask the developer to specifically decide which extension is a cython_module and which is an ext_module (and potentially have duplicate definitions of the same extension): setuptools.setup( # ... ext_modules=[ Extension("pure_c", ["pure_c.c"]), Extension("mixed", ["mixed.c"]), ], cython_modules=[ Extension("mixed", ["mixed.pyx"]), Extension("pure_pyx", ["pure_pyx.pyx"]), ], ) In this case - `pure_c` will never automatically be cythonized - `mixed` may be cythonized - `pure_pyx` may be cythonized `pure_c` needs the developer to run `cythonize pure_c.pyx` before `python setup.py build_sdist`. Shipping a package without the resulting .c file will fail during installation. `mixed` may come with both .c and .pyx files - If cython is not installed setuptools will simply compile the C code. - If cython is installed it is up to `cythonize()` to decide if it wants to re-compile pyx->c first. `pure_pyx` is similar to `mixed` but it may run into non-obvious problems if cython is not installed and not defined as a `setup_requirement`: *It will silently not be built* and be missing from the final installation. I guess this won't be much of a problem though as it will most probably be found out quickly and be fixed with a simple additional line in setup.py. It might be a bit beyond the scope of what I am suggesting here but I have also been experimenting with adding another keyword argument and another command to setuptools: setuptools.setup( # ... cython_manual_modules=[ Extension("pure_c", ["pure_c.pyx"]), ], ) Combined with python setup.py build_pyx we could then automate the cythonization calls during development. This removes the overhead of remembering each of your pyx files from the developer and encourages them to *not write cython-related scripting logic* in their setup.py. In your case (you cythonize before sdist and dont want users to cythonize during install) you would define your package as setuptools.setup( # ... ext_modules=[ Extension("mixed", ["mixed.c"]), ], cython_manual_modules=[ Extension("mixed", ["mixed.pyx"]), ], ) And would run python setup.py build_pyx sdist to create a distribution file. Again, all these changes are backwards compatible as none of the current logic needs to be changed (the additional keyword argument and the command class have been appended to the GitHub PR). On Sun, Feb 7, 2016 at 9:38 PM, Greg Ewing wrote: > Nils Werner wrote: > >> - Having `cythonize()` internally automatically compile *.pyx files when >> *.c files >> are provided is disabled by default and must be enabled using the >> `replace_extension` >> keyword argument (`cython_modules` enables that option). >> > > I'd be happier if it were still disabled by default even then. > If I'm simply installing a package, I do *not* want it to > try to recompile any .pyx files just because I happen to have > cython installed. > > I know that isn't supposed to happen unless the .pyx is newer > than the .c, but I wouldn't like to rely on that. There's a > big difference between using a package and modifying it, and > I'd rather be explicit about when I'm doing the latter. > > -- > Greg > _______________________________________________ > cython-devel mailing list > cython-devel at python.org > https://mail.python.org/mailman/listinfo/cython-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yury at shurup.com Mon Feb 15 10:00:58 2016 From: yury at shurup.com (Yury V. Zaytsev) Date: Mon, 15 Feb 2016 16:00:58 +0100 (CET) Subject: [Cython] libcpp container definition cleanup Message-ID: Hi, I've recently submitted a bunch of pull requests with cleanups for libcpp.string and libcpp.vector, most importantly fixing overloads taking and/or returning iterators and C++11 methods: https://github.com/cython/cython/pull/488 https://github.com/cython/cython/pull/489 I might also manage to take a look at set / map / pair which we likewise need for our projects, but it would be great to get some feedback from the core developers first. If the dominating opinion is that I'm strongly misguided in some way, I'd appreciate a short note before I invest more work into this :-) Many thanks! -- Sincerely yours, Yury V. Zaytsev From lists at onerussian.com Sat Feb 20 22:00:16 2016 From: lists at onerussian.com (Yaroslav Halchenko) Date: Sat, 20 Feb 2016 22:00:16 -0500 Subject: [Cython] Cython-0.23.4 build failing on gcc6 for upcoming fedora 24 In-Reply-To: <56BDAE41.4020903@behnel.de> References: <56B79562.2030805@behnel.de> <56BDAE41.4020903@behnel.de> Message-ID: <20160221030016.GJ7905@onerussian.com> On Fri, 12 Feb 2016, Stefan Behnel wrote: > >> ====================================================================== > >> FAIL: runTest (__main__.EndToEndTest) > >> End-to-end asyncio_generators > >> ---------------------------------------------------------------------- > >> Traceback (most recent call last): > >> File "runtests.py", line 1417, in runTest > >> self.assertEqual(0, res, "non-zero exit status") > >> AssertionError: 0 != 1 : non-zero exit status > >> ---------------------------------------------------------------------- > >> Not sure about this one (especially why it would be compiler dependent). > > It's not compiler dependent. It's an incompatibility between Cython and > > CPython's asyncio. Might be related to the fact that asyncio's Future is > > both iterable and awaitable. Or something else... I looked into it but > > couldn't figure it out yet. > Found it: > https://github.com/cython/cython/commit/7eed8d8ff9c872bc993a37438beca0f98e3aba38 I saw that one with 0.23.4 so went for that tip 7eed8d8 of 0.23.x and it resolved it for my builds across releases and architectures UNTIL I got this bugreport pointing to failure on hurd which is also accompanied with 2 other errors which seems to do with python's incompatibility itself with hurd. Would those 2 errors lead to the failure of the test in question here? ;) https://buildd.debian.org/status/fetch.php?pkg=cython&arch=hurd-i386&ver=0.23.4%2Bgit4-g7eed8d8-1&stamp=1455917417 ====================================================================== ERROR: test_asyncio_1 (test_coroutines_pep492.CoroAsyncIOCompatTest) ---------------------------------------------------------------------- make[1]: *** [override_dh_auto_test] Error 1 make: *** [build-arch] Error 2 dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2 Traceback (most recent call last): File "tests/run/test_coroutines_pep492.pyx", line 1493, in test_coroutines_pep492.CoroAsyncIOCompatTest.test_asyncio_1 (test_coroutines_pep492.c:66658) loop = asyncio.new_event_loop() File "/usr/lib/python3.5/asyncio/events.py", line 636, in new_event_loop return get_event_loop_policy().new_event_loop() File "/usr/lib/python3.5/asyncio/events.py", line 587, in new_event_loop return self._loop_factory() File "/usr/lib/python3.5/asyncio/unix_events.py", line 49, in __init__ super().__init__(selector) File "/usr/lib/python3.5/asyncio/selector_events.py", line 49, in __init__ super().__init__() File "/usr/lib/python3.5/asyncio/base_events.py", line 224, in __init__ self._clock_resolution = time.get_clock_info('monotonic').resolution OSError: [Errno 1073741846] Invalid argument ====================================================================== ERROR: test_asyncio_1 (test_coroutines_pep492.CoroAsyncIOCompatTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "tests/run/test_coroutines_pep492.pyx", line 1493, in test_coroutines_pep492.CoroAsyncIOCompatTest.test_asyncio_1 (test_coroutines_pep492.cpp:66667) loop = asyncio.new_event_loop() File "/usr/lib/python3.5/asyncio/events.py", line 636, in new_event_loop return get_event_loop_policy().new_event_loop() File "/usr/lib/python3.5/asyncio/events.py", line 587, in new_event_loop return self._loop_factory() File "/usr/lib/python3.5/asyncio/unix_events.py", line 49, in __init__ super().__init__(selector) File "/usr/lib/python3.5/asyncio/selector_events.py", line 49, in __init__ super().__init__() File "/usr/lib/python3.5/asyncio/base_events.py", line 224, in __init__ self._clock_resolution = time.get_clock_info('monotonic').resolution OSError: [Errno 1073741846] Invalid argument ====================================================================== FAIL: runTest (__main__.EndToEndTest) End-to-end asyncio_generators ---------------------------------------------------------------------- Traceback (most recent call last): File "runtests.py", line 1417, in runTest self.assertEqual(0, res, "non-zero exit status") AssertionError: 0 != 1 : non-zero exit status ---------------------------------------------------------------------- Ran 10019 tests in 3019.340s FAILED (failures=1, errors=2) Following tests excluded because of missing dependencies on your system: Cython.Coverage if interested -- there is few other interesting failures for x32 (https://wiki.debian.org/X32Port) port: https://buildd.debian.org/status/fetch.php?pkg=cython&arch=x32&ver=0.23.4%2Bgit4-g7eed8d8-1&stamp=1455910693 -- Yaroslav O. Halchenko Center for Open Neuroscience http://centerforopenneuroscience.org Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755 Phone: +1 (603) 646-9834 Fax: +1 (603) 646-1419 WWW: http://www.linkedin.com/in/yarik From ponder at creshal.de Tue Feb 23 11:15:37 2016 From: ponder at creshal.de (Marvin Poul) Date: Tue, 23 Feb 2016 17:15:37 +0100 Subject: [Cython] Bug in 0.24.0a0: bytes passed instead of strings Message-ID: <56CC85A9.4010103@creshal.de> Hi, when trying to debug cython3 modules from gdb build also with python3, you get a error in gdb plugin code "Python Exception must be str, not bytes:". This is because in Cython.Debugger.libcython during "cy import" or "cy break" a bytes object is passed to gdb.string_to_argv, but it expects a normal str. I attached a simple fix that worked for me, but I don't know enough about the gdb's plugin system whether it will hold in all cases. The gdb version I ran into this with is 7.10.1. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-don-t-convert-string_to_argv-argument-to-bytes.patch Type: text/x-patch Size: 1396 bytes Desc: not available URL: From robertwb at gmail.com Fri Feb 26 13:08:58 2016 From: robertwb at gmail.com (Robert Bradshaw) Date: Fri, 26 Feb 2016 10:08:58 -0800 Subject: [Cython] [cython-users] Podcast Interview In-Reply-To: <9440b0e9-ba01-401e-bc81-2002c2cd1c78@googlegroups.com> References: <9440b0e9-ba01-401e-bc81-2002c2cd1c78@googlegroups.com> Message-ID: Craig Citro and I were able to join Tobias for this last month, and the podcast was recently released. Listen to it at http://pythonpodcast.com/cython-developers.html or on your favorite podcast player of choice. On Thu, Dec 31, 2015 at 6:04 AM, Denis Akhiyarov wrote: > There is also cython-develop mailing list here: > > https://mail.python.org/pipermail/cython-devel/2015-December/thread.html > > -- > > --- > You received this message because you are subscribed to the Google Groups "cython-users" group. > To unsubscribe from this group and stop receiving emails from it, send an email to cython-users+unsubscribe at googlegroups.com. > For more options, visit https://groups.google.com/d/optout.