Commit Graph

16742 Commits

Author SHA1 Message Date
Georg Brandl 0428e6cc89 Remove old overridden version of a Sphinx CSS file.
All Python-specific styling is now in the theme anyway.
2014-10-01 19:41:31 +02:00
Georg Brandl fd3a15a0cc Make pydoctheme compatible with Sphinx 1.3 HTML output changes. 2014-10-01 19:28:23 +02:00
Ned Deily 14366f3a8e Fix overlooked conf.py setting in flattening of Doc directory. 2014-09-30 18:41:37 -07:00
R David Murray 6bd68608ff #21739: mention subtle difference between loops and listcomps in tutorial.
We don't want to go into a full explanation of scopes at this point in the
tutorial, so we just mention that the loop creates or overwrites a persistent
variable while the listcomp doesn't.  Not mentioning this would lead someone
to incorrectly assume loops and listcomps were *completely* equivalent, which
would confuse them later.

Original patch by Rose Ames, tweaked to remove the word 'scope'.
2014-09-30 21:25:38 -04:00
Terry Jan Reedy b6271f2d2b Issue 22465: grammar, number agreement. 2014-09-30 19:07:49 -04:00
Georg Brandl 97e9ec688c Move Doc/tools/sphinxext content to Doc/tools, there is no need for the nested subdirectory anymore. 2014-09-30 22:51:30 +02:00
Georg Brandl 2b1a0a30c9 Dont define an empty SPHINXOPTS, which overrides a definition from the environment. 2014-09-30 22:23:57 +02:00
Georg Brandl bae334cda9 Prepare sphinx extensions for 1.3. 2014-09-30 22:17:41 +02:00
Benjamin Peterson 45d929dc64 add link to pdb source (closes #22528) 2014-09-30 16:02:06 -04:00
R David Murray 12dc0d96e0 #20135: FAQ entry for list mutation. (See also 6375bf34fff6.)
I accidentally committed this in 6375bf34fff6; this changeset addresses the
last review comments on the patch.

This is a perennial question and something someone opens a ticket for probably
every other month or so, so I'm surprised we didn't already have a FAQ entry
for it.

The original patch was written by M. Votz, refined first by Ezio Melotti and
further refined by me.
2014-09-29 10:17:28 -04:00
R David Murray 623ae29469 #10510: Fix bug in forward port of 2.7 distutils patch.
Pointed out by Arfrever.
2014-09-28 11:01:11 -04:00
Berker Peksag 9c1dba2758 Revert #22251 2014-09-28 00:00:58 +03:00
Berker Peksag 3749404ba5 Issue #22251: Fix ReST markup to avoid errors building docs. 2014-09-27 23:21:35 +03:00
R David Murray 9cc5fd7b59 #18854: make it explicit that is_multipart does not mean 'multipart/xxx'.
Original patch (and the idea of using _structure) by Abhilash Raj.
2014-09-27 15:37:40 -04:00
R David Murray 1f3a88fe55 #20974: Update version table in email intro.
Note that the email version string in 3.3 and 3.4 is inaccurate, since it
still exists but wasn't updated while the code was.
2014-09-27 14:59:36 -04:00
Berker Peksag 6c1f0ad665 Issue #17462: Add a paragraph about advantages of argparse over optparse.
Patch by Anastasia Filatova.
2014-09-26 15:34:26 +03:00
Benjamin Peterson efd713b82b allow archives for rc releases to be built (closes #22484) 2014-09-24 20:22:24 -04:00
R David Murray 22dd8334cd Improve English phrasing in asyncio task docs. 2014-09-24 11:09:09 -04:00
Benjamin Peterson eb83ffe1b3 fix error in split() examples (closes #22459)
Patch by Raúl Cumplido.
2014-09-22 22:43:50 -04:00
Georg Brandl 90d76ca765 Closes #21431: make docs depend on Sphinx 1.2 and fix pydoc-topics builder to
return Unicode strings on Python 3.
2014-09-22 21:18:24 +02:00
Jesus Cea ca2e02cfe6 Typo: headeronly -> headersonly 2014-09-22 00:43:39 +02:00
Antoine Pitrou afe8d0646c Issue #21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line buffering, rather than block buffering. 2014-09-21 21:10:56 +02:00
Georg Brandl 3f40c40dea Doc: remove invalid uses of ":option:" which will emit warnings in Sphinx 1.3. 2014-09-21 00:35:08 +02:00
R David Murray 8a97896a76 #21091: make is_attachment a method.
Since EmailMessage is a provisional API we can fix API bugs in a
maintenance release, but I used a trick suggested by Serhiy to
maintain backward compatibility with 3.4.0/1.
2014-09-20 18:05:28 -04:00
Benjamin Peterson cbfaa7b9d3 standardize pep 466 relnote style 2014-09-19 17:27:03 -04:00
Benjamin Peterson 49d77fd58a remove extra letter 2014-09-19 17:29:08 -04:00
Benjamin Peterson ce30237493 whatsnew for pep 466 ssl backport 2014-09-19 17:23:21 -04:00
Vinay Sajip 2f1cd8a7fc Issue #22436: Improved documentation for getEffectiveLevel() and getLevelName(). 2014-09-18 18:01:12 +01:00
Senthil Kumaran 15e4833662 Issue #16827: Make Interpreter introduction section of the tutorial more
focussed and move advanced section and customization information to a separate
file called appendix.

Patch credits: Jamayla Wiley, Ya-Ting Huang and James Brewer.
2014-09-18 21:30:28 +08:00
Berker Peksag 2d510e3bab Issue #14824: Update Repr.repr_TYPE documentation to use correct name mangling implementation.
Patch by Chris Rebert.
2014-09-18 06:05:14 +03:00
Ethan Furman f75805edb8 Issue21738: clarify usage of __new__ in Enum subclasses 2014-09-16 19:13:31 -07:00
Benjamin Peterson 7c8b89e156 make hg link secure 2014-09-13 01:44:34 -04:00
Vinay Sajip d1d4fbff63 Issue #22386: fixed regression. 2014-09-11 23:06:09 +01:00
Benjamin Peterson 6d46dff5b5 y2k compliance, lol (closes #22380) 2014-09-10 17:13:06 -04:00
Serhiy Storchaka 148679982f Issue #22369: Change "context manager protocol" to "context management protocol". 2014-09-10 23:43:41 +03:00
Nick Coghlan 1d52096d14 Issue #22295: Adopt 'python -m pip' as the preferred invocation 2014-09-06 20:38:23 +10:00
Nick Coghlan af117ed3d7 Issue #22346: also include asyncio PEP 411 notice in 3.4 2014-09-06 19:43:06 +10:00
Serhiy Storchaka 848c8b29f6 Issue #20643: Removed unneeded (and wrong) class directives. 2014-09-05 23:27:36 +03:00
Ned Deily 29020b155a Issue #22320: Fix broken link in the General Python FAQ.
Original patch by Josh Lynn.
2014-09-01 00:06:18 -07:00
Victor Stinner 41f3c3f226 Closes #22275: asyncio: enhance documentation of OS support 2014-08-31 14:47:37 +02:00
Benjamin Peterson e218bcbf39 getuid() returns real process id not effective (closes #22307) 2014-08-30 21:04:15 -04:00
Victor Stinner d84fd73de2 Issue #22063: Fix asyncio documentation of socket and pipe operations regarding
to non-blocking mode. The non-blocking mode does not matter when using a
ProactorEventLoop, only for SelectorEventLoop.
2014-08-26 01:01:59 +02:00
Victor Stinner 52bb949fd3 asyncio, tulip issue 203: Add _FlowControlMixin.get_write_buffer_limits() method 2014-08-26 00:22:28 +02:00
Victor Stinner d71dcbb043 asyncio: update the doc
* dev: mention that the logging must be configured at DEBUG level
* streams: drain() has no more a strange return value, it's just
  a standard coroutine
2014-08-25 17:04:12 +02:00
Terry Jan Reedy ee55826072 Issue #13540: add missing markup. 2014-08-23 22:21:47 -04:00
Terry Jan Reedy 65e3ecb3e2 Issue #22243: fix except grammar in reference. 2014-08-23 19:29:47 -04:00
Terry Jan Reedy 004e87048a Issue #22232 (partial fix): update Universal newlines Glossary entry. 2014-08-23 18:28:44 -04:00
Nick Coghlan a5bbc2ea3d Forward port PEP 466 What's New in 2.7 updates 2014-08-23 14:47:47 +10:00
Berker Peksag eb265ab873 Issue #22150: Fix deprecated-removed directive in Sphinx 1.2. 2014-08-22 18:24:29 +03:00
Zachary Ware f9dd274692 Issue #22178: Fix the date of the Windows epoch (Jan 1, 1601). 2014-08-11 15:00:48 -05:00
Victor Stinner 337e03ff78 Issue #22112, asyncio doc: replace loop.create_task(coro) with
asyncio.async(coro), mention that asyncio.async() can be used to scheduler a
coroutine, and make it clear that create_task() is only available in Python
3.4.2 and later.
2014-08-11 01:11:13 +02:00
Raymond Hettinger ac191ce1d3 Issue #22174: Clean-up grammar and ambiguities in property() docs. 2014-08-10 10:41:25 -07:00
Raymond Hettinger 31b3683d9b Issue #22180: Remove weak example 2014-08-10 10:33:03 -07:00
Nick Coghlan e4936b830c Issue #21777: separate docs for binary sequence methods 2014-08-09 16:14:04 +10:00
Ezio Melotti 79a1ffde9b #22170: avoid printing newlines twice in tutorial example. 2014-08-08 17:23:32 +03:00
Vinay Sajip 12d9ddf532 Issue #22130: Corrected fileConfig() documentation. 2014-08-05 10:34:16 +01:00
Ezio Melotti 67f6d5f4d0 #21928: clarify functools.wraps docs. 2014-08-05 08:14:28 +03:00
Ezio Melotti e4aad5ab32 #18034: update FAQ to suggest importlib.import_module instead of __import__. Patch by Wouter van Heyst. 2014-08-04 19:34:29 +03:00
Ezio Melotti 591176e544 #18588: update the timeit examples to be consistent. 2014-08-04 17:01:16 +03:00
Raymond Hettinger c6f22cc0a6 Remove unused leftover stray line 2014-08-04 00:21:11 -07:00
Raymond Hettinger c0de59bfc3 Fix markup. 2014-08-03 23:44:30 -07:00
Raymond Hettinger c566431bf0 Improve regex tokenizer example by using re.finditer().
Also, improve variable names and fix column numbers
in the generated output.
2014-08-03 23:38:54 -07:00
Jason R. Coombs b3d4c212f7 Issue #13540: Merge changes from 3.3 2014-08-03 15:26:58 -04:00
Jason R. Coombs 89e186f24e Issue #13540: Merge changes from 3.2 2014-08-03 15:26:32 -04:00
Jason R. Coombs 79690ac1d0 Issue #13540: Update references to Action class to match syntax used for other classes in this file. 2014-08-03 14:54:11 -04:00
Raymond Hettinger 400daedb13 Fix whitespace in example. 2014-08-02 22:32:10 -07:00
Victor Stinner ec2ce092a2 Issue #22063: Mention in asyncio documentation that socket operations require
the socket to be non-blocking
2014-07-29 23:12:22 +02:00
Andrew Svetlov f200ce6333 Document lock parameter for asyncio.Condition() 2014-07-26 19:50:37 +03:00
Zachary Ware 88a1977a08 Issue #22072: Fix a couple of SSL doc typos. Patch by Alex Gaynor. 2014-07-25 13:30:50 -05:00
Victor Stinner 45cff66cf6 Issue #16133: The asynchat.async_chat.handle_read() method now ignores
BlockingIOError exceptions. Initial patch written by Xavier de Gaye.

Document also in asyncore documentation that recv() may raise BlockingIOError.
2014-07-24 18:49:36 +02:00
Victor Stinner 992019c006 Backport os.rst documentation from Python 3.5. 2014-07-24 12:42:45 +02:00
Victor Stinner 6d4f4feca2 Issue #21813: Enhance documentation of the os.stat_result class. 2014-07-24 12:42:16 +02:00
Andrew Svetlov ca4f34366a Fix incomplete sentence in asyncio docs. 2014-07-24 11:36:33 +03:00
Terry Jan Reedy 9ff41803af Asyncio doc fixes: spelling, grammar, duplication. 2014-07-24 02:59:02 -04:00
Terry Jan Reedy c935a9530c Englich grammar nit. 2014-07-24 02:33:14 -04:00
Terry Jan Reedy 9f5388f24f Fix doc example bug reported on python-list by Akshay Verma. 2014-07-23 20:30:29 -04:00
Zachary Ware f012ba42fe Issue #22002: Make full use of test discovery in test sub-packages.
Adds `load_package_tests` function to test.support, uses it in test_asyncio,
test_email, test_json, test_tools, test_importlib and all test_importlib
sub-packages to implement test discovery.
2014-07-23 12:00:29 -05:00
Andrew Svetlov 588517ca63 Fix grammar 2014-07-23 11:27:17 +03:00
Serhiy Storchaka 17f5f817de Issue #15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/
now display special message when and only when there are failures.
2014-07-22 10:24:25 +03:00
Jason R. Coombs eb0ef415d5 Issue #13540: Removed redundant documentation about Action instance attributes. Updated example and documentation per recommendations by Steven Bethard in msg149524. 2014-07-20 10:52:46 -04:00
Benjamin Peterson 102488b644 args doesn't need to be a tuple (closes #17210) 2014-07-19 16:34:33 -07:00
Mark Dickinson e004c6cad5 Issue #22006: Remove outdated _thread caveat. Thanks Dan O'Reilly for the report. 2014-07-19 21:45:06 +01:00
Zachary Ware 0069eac0e5 Issue #22004: Correct an argument name. 2014-07-18 09:11:48 -05:00
Victor Stinner d55b54d5c0 asyncio, tulip issue 190: Process.communicate() now ignores
ConnectionResetError too
2014-07-17 13:12:03 +02:00
Victor Stinner cc996b5789 asyncio, tulip issue 190: Process.communicate() must ignore BrokenPipeError
If you want to handle the BrokenPipeError, you can easily reimplement
communicate().

Add also a unit test to ensure that stdin.write() + stdin.drain() raises
BrokenPipeError.
2014-07-17 12:25:27 +02:00
Berker Peksag 38bf87c7f2 Issue #21994: Fix SyntaxError in the SSLContext.check_hostname documentation. 2014-07-17 05:00:36 +03:00
Zachary Ware 8faecbfb42 Fix a minor typo in the turtle docs. Found by Brandon Passmore on docs@. 2014-07-16 14:48:48 -05:00
Raymond Hettinger 8323f68f3e Issue 21977: Minor improvements to the regexes in the tokenizer example. 2014-07-14 01:52:00 -07:00
Victor Stinner 4bfb14ac10 asyncio: Server.close() leaves client sockets open 2014-07-12 03:20:24 +02:00
Victor Stinner 8ebeb03740 asyncio: improve the documentation of servers
- Fix the documentation of Server.close(): it closes sockets
- Replace AbstractServer with Server
- Document Server.sockets attribute
2014-07-11 23:47:40 +02:00
Victor Stinner 778015b3bc asyncio: enhance documentation of platform support 2014-07-11 12:13:39 +02:00
Berker Peksag 740c730086 Issues #21948 and #16040: Fix typos. 2014-07-09 20:15:28 +03:00
Victor Stinner aea82293be Issue #21680: Document asyncio event loops 2014-07-08 23:42:38 +02:00
Victor Stinner 530ef2f069 Update asyncio documentation
- Document the new create_task() method
- "Hide" the Task class: point to the create_task() method for interoperability
- Rewrite the documentation of the Task class
- Document the "Pending task destroyed"
- Update output in debug mode of examples in the dev section
- Replace Task() with create_task() in examples
2014-07-08 12:39:10 +02:00
Ezio Melotti 898eb82696 #20135: move FAQ about mutable default arguments to the programming FAQs page. 2014-07-06 20:53:27 +03:00
Victor Stinner 63b21a8ffa Closes #21921: Fix ResourceWarning in the asyncio examples: close the event
loop at exit. Patch written by Vajrasky Kok (I modified also the "hello world"
example using a coroutine).
2014-07-05 15:38:59 +02:00
Berker Peksag 5021cb553c Issue #21920: Add a missing colon to the __main__ doc.
Patch by Stefan Tatschner.
2014-07-05 11:10:16 +03:00
Berker Peksag 3410af45f8 Add an index entry for exec() builtin.
Reported by Draic Kin on docs@.
2014-07-04 15:06:45 +03:00
Andrew Svetlov 0d50af45b6 Update docs about tp_richcompare 2014-07-03 16:07:17 +03:00
Raymond Hettinger 11cda47661 Fix guidance for subclassing collections.Set() 2014-07-03 00:31:30 +01:00
Andrew Svetlov ee750d8f8d Use try-finally idiom in example for locks in multiprocessing 2014-07-02 07:21:03 +03:00
Berker Peksag fd6400a47d Issue #13689: Remove a dead link from howto/urllib. 2014-07-01 06:02:42 +03:00
Stefan Krah bb458dbe59 Issue #21778: Clarify use of flags if PyBuffer_FillInfo() is used inside a
getbufferproc().
2014-06-30 00:15:45 +02:00
Ezio Melotti 680241ec99 Fix indentation and class name in socket howto example. 2014-06-27 16:34:14 +03:00
Ned Deily 5c867018f0 Issue #21875: Remove vestigial references to Classic Mac OS in os module docs. 2014-06-26 23:40:06 -07:00
Jesus Cea 0c4baa40ec MERGE: Closes #20872: dbm/gdbm/ndbm close methods are not documented 2014-06-25 13:06:07 +02:00
Jesus Cea ac4b7f705a Closes #20872: dbm/gdbm/ndbm close methods are not documented 2014-06-25 13:05:31 +02:00
Senthil Kumaran 99597c4d12 Correct the quopri module documentation. Mention the correct types of the
parameters on encodestring and decodestring.

Patch by Petri Lehtinen.
2014-06-25 01:12:03 -07:00
Vinay Sajip ab960f838c Fixed typo in documentation. 2014-06-25 07:30:46 +01:00
Jesus Cea ca5c7153de MERGE: Closes #21441: Reorder elements in documentation to match actual order in the code 2014-06-25 05:38:06 +02:00
Jesus Cea e8ef8b7a20 Closes #21441: Reorder elements in documentation to match actual order in the code 2014-06-25 05:37:17 +02:00
Raymond Hettinger 04ba0bb80c Issue #11974: Add tutorial section on class and instance variables
(Based on a patch from Renee Chu.)
2014-06-23 18:08:01 -07:00
Benjamin Peterson f6f78e1d9d clarify that islink only really works if python knows about symlinks (closes #13143)
Patch from Yayoi Ukai.
2014-06-22 17:59:35 -07:00
Benjamin Peterson 9b29acd1fe some timezone doc improvements (closes #16667)
From the combined efforts of Berber Peksage, Andrew Svetlov, and Yayoi Ukai.
2014-06-22 16:26:39 -07:00
Victor Stinner f328c7dc69 asyncio, Tulip issue 171: BaseEventLoop.close() now raises an exception if the
event loop is running. You must first stop the event loop and then wait until
it stopped, before closing it.
2014-06-23 01:02:37 +02:00
Victor Stinner 62511fd6d6 asyncio: document the debug mode 2014-06-23 00:36:11 +02:00
Victor Stinner 7b7120e159 asyncio: Enable the debug mode of event loops when the PYTHONASYNCIODEBUG
environment variable is set
2014-06-23 00:12:14 +02:00
Senthil Kumaran 4932e14542 issue 20091 - index entry for __main__ in runpy docs. 2014-06-20 01:37:53 -07:00
Ezio Melotti 642d4b654f #21690: fix a couple of links in the docs of the re module. Noticed by Julian Gilbey. 2014-06-20 00:52:11 +03:00
Victor Stinner d143209d7f Tulip issue 83: document more asyncio functions in docstrings 2014-06-19 17:11:49 +02:00
Victor Stinner 6bfd854ea8 Closes #21758: asyncio doc: mention explicitly that subprocess parameters are
bytes or character strings
2014-06-19 12:50:27 +02:00
Zachary Ware 8909127af2 Fix typo pointed out by cocoatomo on docs@ 2014-06-17 22:26:59 -05:00
Victor Stinner 64d750b36b asyncio: Fix pyflakes errors
- Add a missing import
- Remove an unused import
- Remove unused variables
2014-06-18 03:25:23 +02:00
Zachary Ware 0aecc18bab Fix typo reported by Jesse W on docs@ 2014-06-16 11:13:01 -05:00
Terry Jan Reedy b6d1f48c14 Issue #21559: Add alternative (historical) reason for OverflowError. 2014-06-16 03:31:00 -04:00
Terry Jan Reedy f2fb73f675 Issue #19362: Tweek len() doc and docstring to expand the indicated range of
arguments. Original patch by Gareth Rees.
2014-06-16 03:05:37 -04:00
Benjamin Peterson e58e0c7f33 clarify when the list of subdirectories is read (closes #13779) 2014-06-15 20:51:12 -07:00
Benjamin Peterson ef8abfc082 document IOBase.__del__'s behavior (closes #21764)
Patch from Nikolaus Rath.
2014-06-14 18:51:34 -07:00
Vinay Sajip e0d324d02b Issue #21752: Documented change to behaviour of logging.getLevelName(). 2014-06-14 09:26:26 +01:00
Terry Jan Reedy 6926e3e835 Issue #21726: Remove unnecessary and contextually wrong line. 2014-06-13 14:57:51 -04:00
Victor Stinner b2788fe854 Issue #16136: VMSError is done, bye bye VMS 2014-06-13 14:58:48 +02:00
Senthil Kumaran e9738239ba #21693 - Fix the broken link for pylons project. 2014-06-11 06:19:21 -07:00
Zachary Ware 5989511183 Issue #21688: Give informative error message when hhc.exe cannot be found.
Initial patch by Olive Kilburn.
2014-06-10 12:07:45 -05:00
Victor Stinner db74d982d4 Issue #21596: asyncio.wait(): mention that the sequence of futures must not
be empty.
2014-06-10 11:16:05 +02:00
Victor Stinner bb2fc5b2a5 Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoop
Add BaseEventLoop._closed attribute and use it to check if the event loop was
closed or not, instead of checking different attributes in each subclass of
BaseEventLoop.

run_forever() and run_until_complete() methods now raise a RuntimeError('Event loop is
closed') exception if the event loop was closed.

BaseProactorEventLoop.close() now also cancels "accept futures".
2014-06-10 10:23:10 +02:00
Victor Stinner 15386652bf Issue #21700: Fix asyncio doc, add DatagramProtocol 2014-06-10 09:19:26 +02:00
R David Murray 6ceca4e3d8 #20903: clarify what happens when an smtp connection timeout occurs.
Patch by Milan Oberkirch.
2014-06-09 16:41:06 -04:00
Nick Coghlan b1f59cecc9 Issue #21569: Fix incorrect cross reference 2014-06-09 13:14:54 +10:00
Benjamin Peterson 96e0430dfb document TokenError and unclosed expression behavior (closes #12063)
Patch by Amandine Lee.
2014-06-07 17:47:41 -07:00
Benjamin Peterson 4bb09c8432 specify that getuid() returns the real uid (closes #10503)
Patch by εσχατοκυριος.
2014-06-07 13:50:34 -07:00
Benjamin Peterson 9b2731bfdd document the compress_level argument to tarfile.open (closes #21404)
Patch by Katherine Busch.
2014-06-07 12:45:37 -07:00
Nick Coghlan 024b2f52bf Issue #21569: sync Python 2.7 What's New with 2.7 version 2014-06-07 23:43:00 +10:00
Nick Coghlan 1462786f00 Issue #21667: Clarify string data model description 2014-06-07 23:21:14 +10:00
Zachary Ware 780b585fbc Quash extraneous quote. 2014-06-06 09:13:18 -05:00
R David Murray 2c0781853a #21662: fix typo, improve sentence flow
Patch by Steve Dougherty.
2014-06-05 15:31:56 -04:00
R David Murray 092135ebc8 #21653: fix doc for return type of sqlite3.Row.keys(). 2014-06-05 15:16:38 -04:00
Zachary Ware 66f305b1a0 Issue #21661: Fix typo. 2014-06-05 13:41:06 -05:00
Victor Stinner f9e49dd346 Tulip issue 83, Python issue #21252: Fill some XXX docstrings in asyncio 2014-06-05 12:06:44 +02:00
Zachary Ware 2f78b84c47 Issue #21439: Fix a couple of typos. 2014-06-03 09:32:40 -05:00
Senthil Kumaran 8dc3df1b60 Update references to Python docs in the sidebar index.
Patch contributed by Auke Willem Oosterhoff.
2014-06-02 22:58:13 -07:00