| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | .. highlightlang:: c
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 22:58:36 +00:00
										 |  |  | .. _cporting-howto:
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | *************************************
 | 
					
						
							|  |  |  | Porting Extension Modules to Python 3
 | 
					
						
							|  |  |  | *************************************
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | :author: Benjamin Peterson
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. topic:: Abstract
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  |    Although changing the C-API was not one of Python 3's objectives,
 | 
					
						
							|  |  |  |    the many Python-level changes made leaving Python 2's API intact
 | 
					
						
							|  |  |  |    impossible.  In fact, some changes such as :func:`int` and
 | 
					
						
							|  |  |  |    :func:`long` unification are more obvious on the C level.  This
 | 
					
						
							|  |  |  |    document endeavors to document incompatibilities and how they can
 | 
					
						
							|  |  |  |    be worked around.
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Conditional compilation
 | 
					
						
							|  |  |  | =======================
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | The easiest way to compile only some code for Python 3 is to check
 | 
					
						
							|  |  |  | if :c:macro:`PY_MAJOR_VERSION` is greater than or equal to 3. ::
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    #if PY_MAJOR_VERSION >= 3
 | 
					
						
							|  |  |  |    #define IS_PY3K
 | 
					
						
							|  |  |  |    #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | API functions that are not present can be aliased to their equivalents within
 | 
					
						
							|  |  |  | conditional blocks.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Changes to Object APIs
 | 
					
						
							|  |  |  | ======================
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | Python 3 merged together some types with similar functions while cleanly
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | separating others.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | str/unicode Unification
 | 
					
						
							|  |  |  | -----------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-28 21:38:49 +01:00
										 |  |  | Python 3's :func:`str` type is equivalent to Python 2's :func:`unicode`; the C
 | 
					
						
							|  |  |  | functions are called ``PyUnicode_*`` for both.  The old 8-bit string type has become
 | 
					
						
							|  |  |  | :func:`bytes`, with C functions called ``PyBytes_*``.  Python 2.6 and later provide a compatibility header,
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | :file:`bytesobject.h`, mapping ``PyBytes`` names to ``PyString`` ones.  For best
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | compatibility with Python 3, :c:type:`PyUnicode` should be used for textual data and
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:11:56 +00:00
										 |  |  | :c:type:`PyBytes` for binary data.  It's also important to remember that
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | :c:type:`PyBytes` and :c:type:`PyUnicode` in Python 3 are not interchangeable like
 | 
					
						
							|  |  |  | :c:type:`PyString` and :c:type:`PyUnicode` are in Python 2.  The following example
 | 
					
						
							| 
									
										
										
										
											2010-10-06 10:26:05 +00:00
										 |  |  | shows best practices with regards to :c:type:`PyUnicode`, :c:type:`PyString`,
 | 
					
						
							|  |  |  | and :c:type:`PyBytes`. ::
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    #include "stdlib.h"
 | 
					
						
							|  |  |  |    #include "Python.h"
 | 
					
						
							|  |  |  |    #include "bytesobject.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    /* text example */
 | 
					
						
							|  |  |  |    static PyObject *
 | 
					
						
							|  |  |  |    say_hello(PyObject *self, PyObject *args) {
 | 
					
						
							|  |  |  |        PyObject *name, *result;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        if (!PyArg_ParseTuple(args, "U:say_hello", &name))
 | 
					
						
							|  |  |  |            return NULL;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        result = PyUnicode_FromFormat("Hello, %S!", name);
 | 
					
						
							|  |  |  |        return result;
 | 
					
						
							|  |  |  |    }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    /* just a forward */
 | 
					
						
							|  |  |  |    static char * do_encode(PyObject *);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    /* bytes example */
 | 
					
						
							|  |  |  |    static PyObject *
 | 
					
						
							|  |  |  |    encode_object(PyObject *self, PyObject *args) {
 | 
					
						
							|  |  |  |        char *encoded;
 | 
					
						
							|  |  |  |        PyObject *result, *myobj;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        if (!PyArg_ParseTuple(args, "O:encode_object", &myobj))
 | 
					
						
							|  |  |  |            return NULL;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        encoded = do_encode(myobj);
 | 
					
						
							|  |  |  |        if (encoded == NULL)
 | 
					
						
							|  |  |  |            return NULL;
 | 
					
						
							|  |  |  |        result = PyBytes_FromString(encoded);
 | 
					
						
							|  |  |  |        free(encoded);
 | 
					
						
							|  |  |  |        return result;
 | 
					
						
							|  |  |  |    }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | long/int Unification
 | 
					
						
							|  |  |  | --------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | Python 3 has only one integer type, :func:`int`.  But it actually
 | 
					
						
							|  |  |  | corresponds to Python 2's :func:`long` type--the :func:`int` type
 | 
					
						
							|  |  |  | used in Python 2 was removed.  In the C-API, ``PyInt_*`` functions
 | 
					
						
							|  |  |  | are replaced by their ``PyLong_*`` equivalents.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Module initialization and state
 | 
					
						
							|  |  |  | ===============================
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | Python 3 has a revamped extension module initialization system.  (See
 | 
					
						
							|  |  |  | :pep:`3121`.)  Instead of storing module state in globals, they should
 | 
					
						
							|  |  |  | be stored in an interpreter specific structure.  Creating modules that
 | 
					
						
							|  |  |  | act correctly in both Python 2 and Python 3 is tricky.  The following
 | 
					
						
							|  |  |  | simple example demonstrates how. ::
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    #include "Python.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    struct module_state {
 | 
					
						
							|  |  |  |        PyObject *error;
 | 
					
						
							|  |  |  |    };
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    #if PY_MAJOR_VERSION >= 3
 | 
					
						
							|  |  |  |    #define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))
 | 
					
						
							|  |  |  |    #else
 | 
					
						
							|  |  |  |    #define GETSTATE(m) (&_state)
 | 
					
						
							|  |  |  |    static struct module_state _state;
 | 
					
						
							|  |  |  |    #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    static PyObject *
 | 
					
						
							|  |  |  |    error_out(PyObject *m) {
 | 
					
						
							|  |  |  |        struct module_state *st = GETSTATE(m);
 | 
					
						
							|  |  |  |        PyErr_SetString(st->error, "something bad happened");
 | 
					
						
							|  |  |  |        return NULL;
 | 
					
						
							|  |  |  |    }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    static PyMethodDef myextension_methods[] = {
 | 
					
						
							|  |  |  |        {"error_out", (PyCFunction)error_out, METH_NOARGS, NULL},
 | 
					
						
							|  |  |  |        {NULL, NULL}
 | 
					
						
							|  |  |  |    };
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    #if PY_MAJOR_VERSION >= 3
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    static int myextension_traverse(PyObject *m, visitproc visit, void *arg) {
 | 
					
						
							|  |  |  |        Py_VISIT(GETSTATE(m)->error);
 | 
					
						
							|  |  |  |        return 0;
 | 
					
						
							|  |  |  |    }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    static int myextension_clear(PyObject *m) {
 | 
					
						
							|  |  |  |        Py_CLEAR(GETSTATE(m)->error);
 | 
					
						
							|  |  |  |        return 0;
 | 
					
						
							|  |  |  |    }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    static struct PyModuleDef moduledef = {
 | 
					
						
							|  |  |  |            PyModuleDef_HEAD_INIT,
 | 
					
						
							|  |  |  |            "myextension",
 | 
					
						
							|  |  |  |            NULL,
 | 
					
						
							|  |  |  |            sizeof(struct module_state),
 | 
					
						
							|  |  |  |            myextension_methods,
 | 
					
						
							|  |  |  |            NULL,
 | 
					
						
							|  |  |  |            myextension_traverse,
 | 
					
						
							|  |  |  |            myextension_clear,
 | 
					
						
							|  |  |  |            NULL
 | 
					
						
							|  |  |  |    };
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    #define INITERROR return NULL
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    PyObject *
 | 
					
						
							|  |  |  |    PyInit_myextension(void)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    #else
 | 
					
						
							|  |  |  |    #define INITERROR return
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    void
 | 
					
						
							|  |  |  |    initmyextension(void)
 | 
					
						
							|  |  |  |    #endif
 | 
					
						
							|  |  |  |    {
 | 
					
						
							|  |  |  |    #if PY_MAJOR_VERSION >= 3
 | 
					
						
							|  |  |  |        PyObject *module = PyModule_Create(&moduledef);
 | 
					
						
							|  |  |  |    #else
 | 
					
						
							|  |  |  |        PyObject *module = Py_InitModule("myextension", myextension_methods);
 | 
					
						
							|  |  |  |    #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        if (module == NULL)
 | 
					
						
							|  |  |  |            INITERROR;
 | 
					
						
							|  |  |  |        struct module_state *st = GETSTATE(module);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        st->error = PyErr_NewException("myextension.Error", NULL, NULL);
 | 
					
						
							|  |  |  |        if (st->error == NULL) {
 | 
					
						
							|  |  |  |            Py_DECREF(module);
 | 
					
						
							|  |  |  |            INITERROR;
 | 
					
						
							|  |  |  |        }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    #if PY_MAJOR_VERSION >= 3
 | 
					
						
							|  |  |  |        return module;
 | 
					
						
							|  |  |  |    #endif
 | 
					
						
							|  |  |  |    }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | CObject replaced with Capsule
 | 
					
						
							|  |  |  | =============================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The :c:type:`Capsule` object was introduced in Python 3.1 and 2.7 to replace
 | 
					
						
							|  |  |  | :c:type:`CObject`.  CObjects were useful,
 | 
					
						
							|  |  |  | but the :c:type:`CObject` API was problematic: it didn't permit distinguishing
 | 
					
						
							|  |  |  | between valid CObjects, which allowed mismatched CObjects to crash the
 | 
					
						
							|  |  |  | interpreter, and some of its APIs relied on undefined behavior in C.
 | 
					
						
							|  |  |  | (For further reading on the rationale behind Capsules, please see :issue:`5630`.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you're currently using CObjects, and you want to migrate to 3.1 or newer,
 | 
					
						
							|  |  |  | you'll need to switch to Capsules.
 | 
					
						
							|  |  |  | :c:type:`CObject` was deprecated in 3.1 and 2.7 and completely removed in
 | 
					
						
							|  |  |  | Python 3.2.  If you only support 2.7, or 3.1 and above, you
 | 
					
						
							|  |  |  | can simply switch to :c:type:`Capsule`.  If you need to support Python 3.0,
 | 
					
						
							|  |  |  | or versions of Python earlier than 2.7,
 | 
					
						
							|  |  |  | you'll have to support both CObjects and Capsules.
 | 
					
						
							|  |  |  | (Note that Python 3.0 is no longer supported, and it is not recommended
 | 
					
						
							|  |  |  | for production use.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following example header file :file:`capsulethunk.h` may
 | 
					
						
							|  |  |  | solve the problem for you.  Simply write your code against the
 | 
					
						
							|  |  |  | :c:type:`Capsule` API and include this header file after
 | 
					
						
							|  |  |  | :file:`Python.h`.  Your code will automatically use Capsules
 | 
					
						
							|  |  |  | in versions of Python with Capsules, and switch to CObjects
 | 
					
						
							|  |  |  | when Capsules are unavailable.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :file:`capsulethunk.h` simulates Capsules using CObjects.  However,
 | 
					
						
							|  |  |  | :c:type:`CObject` provides no place to store the capsule's "name".  As a
 | 
					
						
							|  |  |  | result the simulated :c:type:`Capsule` objects created by :file:`capsulethunk.h`
 | 
					
						
							|  |  |  | behave slightly differently from real Capsules.  Specifically:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   * The name parameter passed in to :c:func:`PyCapsule_New` is ignored.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   * The name parameter passed in to :c:func:`PyCapsule_IsValid` and
 | 
					
						
							|  |  |  |     :c:func:`PyCapsule_GetPointer` is ignored, and no error checking
 | 
					
						
							|  |  |  |     of the name is performed.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   * :c:func:`PyCapsule_GetName` always returns NULL.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-18 21:14:22 +02:00
										 |  |  |   * :c:func:`PyCapsule_SetName` always raises an exception and
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  |     returns failure.  (Since there's no way to store a name
 | 
					
						
							|  |  |  |     in a CObject, noisy failure of :c:func:`PyCapsule_SetName`
 | 
					
						
							|  |  |  |     was deemed preferable to silent failure here.  If this is
 | 
					
						
							| 
									
										
										
										
											2012-03-24 17:39:57 +01:00
										 |  |  |     inconvenient, feel free to modify your local
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  |     copy as you see fit.)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can find :file:`capsulethunk.h` in the Python source distribution
 | 
					
						
							| 
									
										
										
										
											2012-03-05 15:50:37 +01:00
										 |  |  | as :source:`Doc/includes/capsulethunk.h`.  We also include it here for
 | 
					
						
							|  |  |  | your convenience:
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. literalinclude:: ../includes/capsulethunk.h
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | Other options
 | 
					
						
							|  |  |  | =============
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you are writing a new extension module, you might consider `Cython
 | 
					
						
							| 
									
										
										
										
											2014-10-29 10:57:37 +01:00
										 |  |  | <http://cython.org/>`_.  It translates a Python-like language to C.  The
 | 
					
						
							| 
									
										
										
										
											2012-02-28 16:21:47 -08:00
										 |  |  | extension modules it creates are compatible with Python 3 and Python 2.
 | 
					
						
							| 
									
										
											  
											
												Devil merge!
Merged revisions 66561,66564,66580,66610,66614,66618,66624-66625,66628-66629,66643,66645,66660-66665 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r66561 | benjamin.peterson | 2008-09-22 17:13:29 -0500 (Mon, 22 Sep 2008) | 1 line
  clean up docs for platform's linux_distribution and dist functions
........
  r66564 | benjamin.peterson | 2008-09-23 08:32:46 -0500 (Tue, 23 Sep 2008) | 1 line
  mention how to override boolean evaluation
........
  r66580 | georg.brandl | 2008-09-24 04:47:55 -0500 (Wed, 24 Sep 2008) | 2 lines
  Indentation normalization.
........
  r66610 | andrew.kuchling | 2008-09-24 12:27:55 -0500 (Wed, 24 Sep 2008) | 1 line
  Improve wording
........
  r66614 | benjamin.peterson | 2008-09-24 17:11:59 -0500 (Wed, 24 Sep 2008) | 4 lines
  #3950 fix missing scale factors in turtle.py
  reviewers: Georg, Benjamin
........
  r66618 | benjamin.peterson | 2008-09-25 15:35:45 -0500 (Thu, 25 Sep 2008) | 1 line
  add a NEWs entry for r66614
........
  r66624 | raymond.hettinger | 2008-09-25 18:31:52 -0500 (Thu, 25 Sep 2008) | 1 line
  Fix namedtuple bug reported by Glenn Linderman.  Template did not form correctly if the field names were input in Unicode.
........
  r66625 | benjamin.peterson | 2008-09-25 21:58:36 -0500 (Thu, 25 Sep 2008) | 1 line
  add the beginnings of a C-API 2 -> 3 porting guide
........
  r66628 | benjamin.peterson | 2008-09-26 15:52:06 -0500 (Fri, 26 Sep 2008) | 1 line
  add an 'other options' section
........
  r66629 | georg.brandl | 2008-09-26 16:15:21 -0500 (Fri, 26 Sep 2008) | 2 lines
  typos.
........
  r66643 | andrew.kuchling | 2008-09-27 09:12:33 -0500 (Sat, 27 Sep 2008) | 1 line
  Add a last bunch of items
........
  r66645 | benjamin.peterson | 2008-09-27 11:23:55 -0500 (Sat, 27 Sep 2008) | 1 line
  2to3's api should be considered unstable
........
  r66660 | andrew.kuchling | 2008-09-27 17:54:08 -0500 (Sat, 27 Sep 2008) | 1 line
  #3510: future-proof text
........
  r66661 | benjamin.peterson | 2008-09-27 18:28:43 -0500 (Sat, 27 Sep 2008) | 1 line
  clarify a few things
........
  r66662 | andrew.kuchling | 2008-09-27 19:15:27 -0500 (Sat, 27 Sep 2008) | 1 line
  #1579477: mention necessity to flush output before exec'ing
........
  r66663 | andrew.kuchling | 2008-09-27 20:08:47 -0500 (Sat, 27 Sep 2008) | 1 line
  #1415508: Document two functions
........
  r66664 | benjamin.peterson | 2008-09-27 20:51:36 -0500 (Sat, 27 Sep 2008) | 1 line
  better grammar
........
  r66665 | benjamin.peterson | 2008-09-27 20:53:29 -0500 (Sat, 27 Sep 2008) | 1 line
  note the 2to3 -d could be useful for other refactoring
........
											
										 
											2008-09-28 02:06:32 +00:00
										 |  |  | 
 |