]> granicus.if.org Git - python/commitdiff
Merged revisions 71874,71882,71890 via svnmerge from
authorJeroen Ruigrok van der Werven <asmodai@in-nomine.org>
Sun, 26 Apr 2009 20:25:45 +0000 (20:25 +0000)
committerJeroen Ruigrok van der Werven <asmodai@in-nomine.org>
Sun, 26 Apr 2009 20:25:45 +0000 (20:25 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r71874 | jeroen.ruigrok | 2009-04-25 13:59:09 +0200 (za, 25 apr 2009) | 2 lines

  First attempt to document PyObject_HEAD_INIT and PyVarObject_HEAD_INIT.
........
  r71882 | jeroen.ruigrok | 2009-04-25 14:49:10 +0200 (za, 25 apr 2009) | 3 lines

  Issue #4239: adjust email examples not to use connect() and terminate with
  quit() and not close().
........
  r71890 | jeroen.ruigrok | 2009-04-25 15:07:40 +0200 (za, 25 apr 2009) | 3 lines

  Rewrite a sentence to be more in line with the rest of the documentation with
  regard to person and audience.
........

Doc/c-api/init.rst
Doc/c-api/structures.rst
Doc/includes/email-alternative.py
Doc/includes/email-dir.py
Doc/includes/email-mime.py
Doc/includes/email-simple.py

index d3a2a3b543d880c8c94606cedf2184821f9ca67d..ab4734fc6c8f97033cecb0a3226c2fd3b8d11190 100644 (file)
@@ -489,13 +489,13 @@ thread could immediately acquire the lock and store its own thread state in the
 global variable). Conversely, when acquiring the lock and restoring the thread
 state, the lock must be acquired before storing the thread state pointer.
 
-Why am I going on with so much detail about this?  Because when threads are
-created from C, they don't have the global interpreter lock, nor is there a
-thread state data structure for them.  Such threads must bootstrap themselves
-into existence, by first creating a thread state data structure, then acquiring
-the lock, and finally storing their thread state pointer, before they can start
-using the Python/C API.  When they are done, they should reset the thread state
-pointer, release the lock, and finally free their thread state data structure.
+It is important to note that when threads are created from C, they don't have
+the global interpreter lock, nor is there a thread state data structure for
+them.  Such threads must bootstrap themselves into existence, by first
+creating a thread state data structure, then acquiring the lock, and finally
+storing their thread state pointer, before they can start using the Python/C
+API.  When they are done, they should reset the thread state pointer, release
+the lock, and finally free their thread state data structure.
 
 Threads can take advantage of the :cfunc:`PyGILState_\*` functions to do all of
 the above automatically.  The typical idiom for calling into Python from a C
index b654eb71d7ba80da9a888c6808fa0f1b8cf33f7f..704896883bcc568329fdc539fa6b263c4b1f4af2 100644 (file)
@@ -69,7 +69,24 @@ These macros are used in the definition of :ctype:`PyObject` and
    Note that :cmacro:`PyObject_HEAD` is part of the expansion, and that its own
    expansion varies depending on the definition of :cmacro:`Py_TRACE_REFS`.
 
-.. cmacro:: PyObject_HEAD_INIT
+
+.. cmacro:: PyObject_HEAD_INIT(type)
+
+   This is a macro which expands to initialization values for a new
+   :ctype:`PyObject` type.  This macro expands to::
+
+      _PyObject_EXTRA_INIT
+      1, type,
+
+
+.. cmacro:: PyVarObject_HEAD_INIT(type, size)
+
+   This is a macro which expands to initialization values for a new
+   :ctype:`PyVarObject` type, including the :attr:`ob_size` field.
+   This macro expands to::
+
+      _PyObject_EXTRA_INIT
+      1, type, size,
 
 
 .. ctype:: PyCFunction
index d941323937647b5e5814b605c8b7cbf9c5b0ab3e..82e3ffa3b3a09a0bfa9cef66ccdb208975c06f91 100644 (file)
@@ -45,4 +45,4 @@ s = smtplib.SMTP('localhost')
 # sendmail function takes 3 arguments: sender's address, recipient's address
 # and message to send - here it is sent as one string.
 s.sendmail(me, you, msg.as_string())
-s.close()
+s.quit()
index c04f57d6414cb9a580fedf0c3611c2fee1ae5776..e67de61dcfbf0e9e0d97746a3ec137032b4c3714 100644 (file)
@@ -106,9 +106,8 @@ must be running an SMTP server.
         fp.close()
     else:
         s = smtplib.SMTP()
-        s.connect()
         s.sendmail(opts.sender, opts.recipients, composed)
-        s.close()
+        s.quit()
 
 
 if __name__ == '__main__':
index 5097253749a4a0d17b3ef1ed78e99e227ba47638..f64df83b4d89e8a4d05fa5c02bb2fb7ab0d14cce 100644 (file)
@@ -27,6 +27,5 @@ for file in pngfiles:
 
 # Send the email via our own SMTP server.
 s = smtplib.SMTP()
-s.connect()
 s.sendmail(me, family, msg.as_string())
-s.close()
+s.quit()
index 44152a4839c92062367cea2b4bbf7c1815fe9ec6..689511e4bb9f8cafcea13ac8808644cfe9a7b456 100644 (file)
@@ -20,6 +20,5 @@ msg['To'] = you
 # Send the message via our own SMTP server, but don't include the
 # envelope header.
 s = smtplib.SMTP()
-s.connect()
 s.sendmail(me, [you], msg.as_string())
-s.close()
+s.quit()