Commit Graph

2414 Commits

Author SHA1 Message Date
Serhiy Storchaka 6e08baf12d Issue #27867: Function PySlice_GetIndicesEx() is deprecated and replaced with
a macro if Py_LIMITED_API is not set or set to the value between 0x03050400
and 0x03060000 (not including) or 0x03060100 or higher.  Added functions
PySlice_Unpack() and PySlice_AdjustIndices().
2017-01-25 13:27:44 +02:00
Martin Panter 91a8866dc1 Fix grammar in doc string, RST markup 2017-01-24 00:30:06 +00:00
Victor Stinner 0e830455cb Merge 3.6 2017-01-23 12:34:00 +01:00
Victor Stinner 01f5ae7b76 Issue #26273: Document TCP_USER_TIMEOUT and TCP_CONGESTION 2017-01-23 12:30:00 +01:00
Serhiy Storchaka 2a404b63d4 Issue #28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8()
is now of type "const char *" rather of "char *".
2017-01-22 23:07:07 +02:00
Mark Dickinson 5e65cd39df Issue #29282: Backed out changeset b33012ef1417 2017-01-21 13:10:52 +00:00
Mark Dickinson d1b230e48b Issue #29282: add fused multiply-add function, math.fma. 2017-01-21 12:35:30 +00:00
Ned Deily 88f5746c22 Issue #29316: merge 3.6 2017-01-20 10:17:11 -05:00
Ned Deily 67c1cb2008 Issue #29316: Restore the provisional status of typing module and add
corresponding note to documentation. Patch by Ivan L.
2017-01-20 10:13:23 -05:00
INADA Naoki 015bce64b3 Issue #26110: Add document for LOAD_METHOD and CALL_METHOD opcode.
Changed stack layout bit for "easy to explain."
2017-01-16 17:23:30 +09:00
Martin Panter 446a498a63 Merge doc fixes from 3.6 2017-01-14 09:56:00 +00:00
Martin Panter 4659ddc433 Merge doc fixes from 3.5 2017-01-14 09:54:57 +00:00
Martin Panter 8f1378366e Avoid line breaks after hyphens, otherwise they are turned into spaces 2017-01-14 08:24:20 +00:00
Serhiy Storchaka b2d6179d55 Document Python versions in which the removed features were deprecated. 2017-01-13 21:14:40 +02:00
Serhiy Storchaka 9ed707eb4c Issue #29197: Removed deprecated function ntpath.splitunc(). 2017-01-13 20:55:05 +02:00
Serhiy Storchaka 4f76fb16b7 Issue #29210: Removed support of deprecated argument "exclude" in
tarfile.TarFile.add().
2017-01-13 13:25:24 +02:00
Serhiy Storchaka cc283378d6 Issue #29192: Removed deprecated features in the http.cookies module. 2017-01-13 09:23:15 +02:00
Serhiy Storchaka 009b0a1fac Issue #29193: A format string argument for string.Formatter.format()
is now positional-only.
2017-01-13 09:10:51 +02:00
Serhiy Storchaka d9c956fb23 Issue #20804: The unittest.mock.sentinel attributes now preserve their
identity when they are copied or pickled.
2017-01-11 20:13:03 +02:00
Martin Panter 23e5b82cf7 Issue #29239: Merge bug number from 3.6 2017-01-11 12:00:39 +00:00
Martin Panter ced4b90756 Issue #29239: Fix --enable-optimizations bug number 2017-01-11 11:56:22 +00:00
Raymond Hettinger 3d8fcfe0f5 merge 2016-12-29 23:49:41 -07:00
Raymond Hettinger 51447db47c Clearer compact dict attribution to the original proposal 2016-12-29 23:49:20 -07:00
Ned Deily 190042a48f Merge 3.6.0 release into default 2016-12-23 04:10:46 -05:00
Ned Deily 93357d8d43 Merge 3.6.0 release engineering head 2016-12-22 19:50:19 -05:00
Ned Deily 5c4568a05a Update docs and patchlevel for 3.6.0 final. 2016-12-22 18:38:47 -05:00
Serhiy Storchaka dd1da7f74a Issue #28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII
whitespace, not only spaces.  Patch by Robert Xiao.
2016-12-19 18:51:37 +02:00
Martin Panter fc29c88b5f Issue #28987: Merge doc and comment fixes from 3.6 2016-12-18 05:41:55 +00:00
Martin Panter 59b0eb524f Issue #28987: Typos, grammar, spelling in documentation 2016-12-18 01:26:53 +00:00
Serhiy Storchaka 5bb8b9134b Issue #18896: Python function can now have more than 255 parameters.
collections.namedtuple() now supports tuples with more than 255 elements.
2016-12-16 19:19:02 +02:00
Yury Selivanov 583644b742 Merge 3.6 (issue #28635) 2016-12-15 17:57:55 -05:00
Yury Selivanov 1217470984 Issue #28635: asyncio-related fixes and additions. 2016-12-15 17:56:43 -05:00
Victor Stinner 41afe9dd85 Merge 3.6 2016-12-15 16:22:19 +01:00
Victor Stinner 8320193d10 Issue #28979: Fix What's New in Python 3.6, dict
The new dict implementation is not faster, but more compact.

Patch written by Brendan Donegan.
2016-12-15 16:20:53 +01:00
Yury Selivanov f2392133eb Issue #26110: Add LOAD_METHOD/CALL_METHOD opcodes.
Special thanks to INADA Naoki for pushing the patch through
the last mile, Serhiy Storchaka for reviewing the code, and to
Victor Stinner for suggesting the idea (originally implemented
in the PyPy project).
2016-12-13 19:03:51 -05:00
Yury Selivanov 8bf85b692b Merge 3.6 (issue #28089) 2016-12-12 16:45:21 -05:00
Yury Selivanov 3432f2f47c Issue #28089: Document TCP_NODELAY in asyncio
Initial patch by Mariatta Wijaya.
2016-12-12 16:44:58 -05:00
Steve Dower 3b3a7c01bc Issue #28896: Deprecate WindowsRegistryFinder 2016-12-08 09:01:39 -08:00
Yury Selivanov ee19ab5962 Merge 3.6 (issue #28635) 2016-12-07 16:20:10 -08:00
Yury Selivanov eb58936b64 Issue #28635: Drop the note that whatsnew is incomplete 2016-12-07 16:19:56 -08:00
Steve Dower 20367420c8 Issue #28896: Deprecate WindowsRegistryFinder 2016-12-07 13:02:27 -08:00
Serhiy Storchaka 53c53ea4c5 Issue #27030: Unknown escapes in re.sub() replacement template are allowed
again.  But they still are deprecated and will be disabled in 3.7.
2016-12-06 19:15:29 +02:00
Serhiy Storchaka ff3dbe9141 Merge documentation for issue #27030 from 3.6. 2016-12-06 19:25:19 +02:00
Nick Coghlan d77e5b7211 Merge #23722 from 3.6 2016-12-05 16:59:22 +10:00
Nick Coghlan 19d246745d Issue #23722: improve __classcell__ compatibility
Handling zero-argument super() in __init_subclass__ and
__set_name__ involved moving __class__ initialisation to
type.__new__. This requires cooperation from custom
metaclasses to ensure that the new __classcell__ entry
is passed along appropriately.

The initial implementation of that change resulted in abruptly
broken zero-argument super() support in metaclasses that didn't
adhere to the new requirements (such as Django's metaclass for
Model definitions).

The updated approach adopted here instead emits a deprecation
warning for those cases, and makes them work the same way they
did in Python 3.5.

This patch also improves the related class machinery documentation
to cover these details and to include more reader-friendly
cross-references and index entries.
2016-12-05 16:47:55 +10:00
Serhiy Storchaka 853ec5d408 Issue #21818: Fixed references to classes that have names matching with module
names.
2016-12-02 23:15:42 +02:00
Serhiy Storchaka b6a6b45458 Issue #21818: Fixed references to classes that have names matching with module
names.
2016-12-02 23:15:22 +02:00
Serhiy Storchaka ee1b01a41b Issue #21818: Fixed references to classes that have names matching with module
names.
2016-12-02 23:13:53 +02:00
Serhiy Storchaka 4700d86488 Merge from 3.6. 2016-12-02 21:38:46 +02:00
Nick Coghlan 3c35fdb8fb Issue #27172: Undeprecate inspect.getfullargspec()
This is still useful for single source Python 2/3 code
migrating away from inspect.getargspec(), but that wasn't
clear with the documented deprecation in place.
2016-12-02 20:29:57 +10:00
Yury Selivanov 50c13f216e Merge 3.6 (issue #28635) 2016-11-28 11:45:58 -05:00
Yury Selivanov 27ec5bfdcb Issue #28635: Document Python 3.6 opcode changes
Thanks to Serhiy Storchaka for pointing out the missing notes.

Patch by Elvis Pranskevichus.
2016-11-28 11:45:36 -05:00
Serhiy Storchaka 214678e44b Issue #12844: More than 255 arguments can now be passed to a function. 2016-11-28 10:52:05 +02:00
Zachary Ware d070b2ddbb Merge with 3.6 2016-11-28 00:19:23 -06:00
Zachary Ware 0425fc0fad Fix grammar in whatsnew 2016-11-28 00:19:07 -06:00
Serhiy Storchaka d80c3fb17b Issue #28763: Use double hyphens (rendered as en-dashes) in numerical ranges
in the documentation.
2016-11-26 13:50:21 +02:00
Serhiy Storchaka 0264e46caa Issue #28763: Use double hyphens (rendered as en-dashes) in numerical ranges
in the documentation.
2016-11-26 13:49:59 +02:00
Serhiy Storchaka c7b1a0bbe2 Issue #28763: Use double hyphens (rendered as en-dashes) in numerical ranges
in the documentation.
2016-11-26 13:43:28 +02:00
INADA Naoki 6caaf372de Issue #28532: Add what's new entry for python -VV option 2016-11-24 17:21:47 +09:00
INADA Naoki f576343179 Issue #28532: Add what's new entry for python -VV option 2016-11-24 17:20:40 +09:00
Yury Selivanov 6e31235902 Issue #28635: asyncio-related fixes and additions.
(grafted from 418ba3a0f090ac0e17a935b7cd5a63ea8263a914)
2016-12-15 17:56:43 -05:00
Victor Stinner 5e65a5f4ef Issue #28979: Fix What's New in Python 3.6, dict
The new dict implementation is not faster, but more compact.

Patch written by Brendan Donegan.
(grafted from 181453f9a0c424212f0f6ddca2b9065c15689d7c)
2016-12-15 16:20:53 +01:00
Yury Selivanov 291b93bb1f Issue #28089: Document TCP_NODELAY in asyncio
Initial patch by Mariatta Wijaya.
(grafted from 853e3f4d6cd98ac4590238bc1c60e40fd8ed3895)
2016-12-12 16:44:58 -05:00
Steve Dower 5dc1fb3eda Issue #28896: Deprecate WindowsRegistryFinder
(grafted from 25df9671663b5f8b1560d58d8842f9676f6dffc2)
2016-12-07 13:02:27 -08:00
Yury Selivanov 267862f9ca Issue #28635: Drop the note that whatsnew is incomplete
(grafted from d12bc674b74eee73365e38fad1f170ed3349bd59)
2016-12-07 16:19:56 -08:00
Serhiy Storchaka 007d7ff73f Issue #28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
type "const char *" rather of "char *".
2016-11-22 07:58:08 +02:00
Martin Panter d16a9d4840 Merge doc fixes from 3.6 2016-11-21 13:41:07 +00:00
Martin Panter a2f7ee8b26 Fix up grammar, markup, etc in 3.6 What’s New 2016-11-21 13:38:59 +00:00
Gregory P. Smith 1fb1c998b2 replace --with-optimizations references with --enable-optimizations in docs. 2016-11-21 00:13:15 -08:00
Gregory P. Smith 2863c387b0 replace --with-optimizations references with --enable-optimizations in docs. 2016-11-21 00:12:40 -08:00
Serhiy Storchaka 52d0eb2dc0 Issue #27998: Documented bytes paths support on Windows. 2016-11-20 08:25:07 +02:00
Serhiy Storchaka 3c38e066b1 Issue #27998: Documented bytes paths support on Windows. 2016-11-20 08:23:07 +02:00
Yury Selivanov 6592dbd2a8 Merge 3.6 (issue #28720) 2016-11-16 18:25:48 -05:00
Yury Selivanov 22214ab0af Issue #28720: Add collections.abc.AsyncGenerator. 2016-11-16 18:25:04 -05:00
Yury Selivanov 63e6a7c3f4 Merge 3.6 (issue #28635) 2016-11-14 14:49:38 -05:00
Yury Selivanov 6bf87d3fce Issue #28635: what's new in 3.6: add a few more notes on typing
Per suggestions by Ivan Levkivskyi.
Patch by Elvis Pranskevichus.
2016-11-14 14:49:18 -05:00
Martin Panter bb0f8e6bba Issue #28678: Merge parameter name from 3.6 2016-11-13 23:36:30 +00:00
Martin Panter f8c25e3424 Issue #28678: Merge parameter name from 3.5 into 3.6 2016-11-13 23:36:07 +00:00
Martin Panter efbf20f3a3 Issue #28678: Fix references to numeric_owner parameter 2016-11-13 23:25:06 +00:00
Yury Selivanov 7255edd3df Merge 3.6 (issue #28635) 2016-11-10 15:39:46 -05:00
Yury Selivanov 249ba5d02d Issue #28635: what's new in 3.6: remove mentions of backported fixes.
Patch by Elvis Pranskevichus.
2016-11-10 15:39:27 -05:00
Yury Selivanov be9079ae68 Merge 3.6 (issue #28635) 2016-11-10 13:28:03 -05:00
Yury Selivanov c48ec2704b Issue #28635: What's New in Python 3.6 updates
Patch by Elvis Pranskevichus.
2016-11-10 13:27:22 -05:00
Yury Selivanov d89ecb3d2a Merge 3.6 (issue #28635) 2016-11-07 16:44:27 -05:00
Yury Selivanov f5df73025d whatsnew: Inital pass on "What's New in Python 3.6"
Patch by Elvis Pranskevichus.
2016-11-07 16:40:20 -05:00
Steve Dower 257a4c1503 Closes #27781: Removes special cases for the experimental aspect of PEP 529 2016-11-06 19:35:24 -08:00
Steve Dower 78057b4159 Closes #27781: Removes special cases for the experimental aspect of PEP 529 2016-11-06 19:35:08 -08:00
Brett Cannon 1d8f755e67 Issue #28605: Fix the help and What's New entry for --with-optimizations. 2016-11-03 16:20:00 -07:00
Martin Panter 9440787867 Issue #26638: Merge option warning fixes from 3.5 into 3.6 2016-10-30 04:21:23 +00:00
Martin Panter b8c5f54248 Issue #26638: Work around more CLI options that can’t be linked
* Cannot seem to link directly to main options from the “unittest” module,
  because that module has its own set of options
* Mask out linking for options that no longer exist in Python 3
2016-10-30 04:20:23 +00:00
Martin Panter 5c67933940 Issue #26638: Mask undefined CLI options to defeat new Sphinx warnings 2016-10-30 04:20:17 +00:00
Brett Cannon d4ef9d3feb Merge for issue #28605 2016-11-03 16:21:11 -07:00
Martin Panter 92b6154911 Issue #26638: Merge option warning fixes from 3.6 2016-10-30 04:30:36 +00:00
Serhiy Storchaka 2edcd1cba4 Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode().
2016-10-27 21:08:00 +03:00
Serhiy Storchaka 0093907f0e Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode().
2016-10-27 21:05:49 +03:00
Serhiy Storchaka 43a259ff18 Issue #19795: Improved more markups of True/False. 2016-10-19 18:37:07 +03:00
Serhiy Storchaka 7d6dda4b78 Issue #19795: Improved more markups of True/False. 2016-10-19 18:36:51 +03:00
Serhiy Storchaka 4adf01caae Issue #19795: Improved more markups of True/False. 2016-10-19 18:30:05 +03:00
Serhiy Storchaka 6d0b19f1e8 Issue #19795: Fixed markup errors. 2016-10-19 18:12:24 +03:00
Serhiy Storchaka 3f561b7911 Issue #19795: Fixed markup errors. 2016-10-19 18:12:05 +03:00
Serhiy Storchaka 1883542eb9 Issue #19795: Fixed markup errors. 2016-10-19 18:11:24 +03:00
Serhiy Storchaka 7f4e40e1e0 Issue #19795: Mark up True and False as literal text instead of bold. 2016-10-19 16:45:05 +03:00
Serhiy Storchaka 0bbf8c08ab Issue #19795: Mark up True and False as literal text instead of bold. 2016-10-19 16:44:47 +03:00
Serhiy Storchaka a97cd2eb17 Issue #19795: Mark up True and False as literal text instead of bold. 2016-10-19 16:43:42 +03:00
Serhiy Storchaka c2e9983060 Issue #19795: Mark up None as literal text. 2016-10-19 16:39:36 +03:00
Serhiy Storchaka 989db5c880 Issue #19795: Mark up None as literal text. 2016-10-19 16:37:13 +03:00
Serhiy Storchaka ecf41da83e Issue #19795: Mark up None as literal text. 2016-10-19 16:29:26 +03:00
Berker Peksag bbc638cd55 Issue #28390: Merge from 3.6 2016-10-08 16:15:38 +03:00
Berker Peksag 3e49264dfb Issue #28390: Fix header levels in whatsnew/3.6.rst
Patch by SilentGhost.
2016-10-08 16:15:15 +03:00
Guido van Rossum b5a744a99e Remove mention of asyncio.timeout context manager (it was removed) (merge 3.6->3.7) 2016-09-24 09:32:10 -07:00
Guido van Rossum a653196585 Remove mention of asyncio.timeout context manager (it was removed) 2016-09-24 09:31:23 -07:00
Steve Dower 3e7d93dc70 Issue #28251: Improvements to help manuals on Windows. 2016-09-22 17:11:53 -07:00
Steve Dower 765285337a Issue #28251: Improvements to help manuals on Windows. 2016-09-22 17:09:56 -07:00
Steve Dower fb4a96a58f Issue #28251: Improvements to help manuals on Windows. 2016-09-22 17:07:56 -07:00
Steve Dower 64566db065 Merge with 3.6 2016-09-17 12:57:03 -07:00
Steve Dower ed51b26858 Issue #28137: Renames Windows path file to ._pth
Issue #28138: Windows ._pth file should allow import site
2016-09-17 12:54:06 -07:00
Zachary Ware f40d4ddff3 Closes #27979: Remove bundled copy of libffi
An installed copy of libffi is now required for building _ctypes on
any platform but OSX and Windows.
2016-09-17 01:25:24 -05:00
Ned Deily 4712dc879a Pending final editing of 3.6 whatsnew, add a list of all PEPs implemented. 2016-09-16 15:48:00 -04:00
Ned Deily 8761e59f36 Pending final editing of 3.6 whatsnew, add a list of all PEPs implemented. 2016-09-16 15:46:55 -04:00
Benjamin Peterson 640463acb1 merge 3.6 2016-09-14 23:54:09 -07:00
Benjamin Peterson 6775231597 Unicode 9.0.0
Not completely mechanical since support for East Asian Width changes—emoji
codepoints became Wide—had to be added to unicodedata.
2016-09-14 23:53:47 -07:00
Guido van Rossum 315361c7dc Add text about PEP 526 to What's new in 3.6. Ivan L. (merge 3.6->3.7) 2016-09-13 09:27:07 -07:00
Guido van Rossum a4d9b17b1f Add text about PEP 526 to What's new in 3.6. Ivan L. 2016-09-13 09:26:38 -07:00
Xavier de Gaye 1e68987792 Merge from 3.6. 2016-09-13 18:06:08 +02:00
Xavier de Gaye 032c0fb655 Add an Android section to whatsnew/3.6.rst. 2016-09-13 18:04:15 +02:00
Ned Deily 20ae233d02 merge from 3.6 2016-09-13 11:35:00 -04:00
Ned Deily bd8f277efc Tidy 3.6 What's New summary 2016-09-13 11:33:03 -04:00
Berker Peksag e4c16fa364 Merge from 3.6 2016-09-13 05:53:01 +03:00
Berker Peksag b5d67b7278 Fix headers in whatsnew/3.6.rst 2016-09-13 05:52:32 +03:00
Ned Deily 4829bc6619 Bump to 3.7.0a0 2016-09-12 17:29:04 -04:00
Victor Stinner 6287177169 Issue #27350: Document compact dict memory usage 2016-09-12 14:43:14 +02:00
Christian Heimes c4d2e500a9 Update whatsnew with my contributions 2016-09-12 01:14:35 +02:00
Eric V. Smith b5690864ba Issue 24454: Added whatsnew entry, removed __getitem__ from match_methods. Thanks Serhiy Storchaka. 2016-09-11 09:50:47 -04:00
Berker Peksag ab994ed8b9 Issue #10740: sqlite3 no longer implicitly commit an open transaction before DDL statements
This commit contains the following commits from ghaering/pysqlite:

* f254c53494
* 796b3afe38
* cae87ee686
* 3567b31bb5

With the following additions:

* Fixed a refcount error
* Fixed a compiler warning
* Made the string comparison a little more robust
* Added a whatsnew entry
2016-09-11 12:57:15 +03:00
Serhiy Storchaka bd48d27944 Issue #22493: Inline flags now should be used only at the start of the
regular expression.  Deprecation warning is emitted if uses them in the
middle of the regular expression.
2016-09-11 12:50:02 +03:00
Serhiy Storchaka 352601ca00 Issue #26885: xmlrpc now supports unmarshalling additional data types used
by Apache XML-RPC implementation for numerics and None.
2016-09-11 11:23:38 +03:00
Serhiy Storchaka 9fab79bcb5 Issue #26900: Excluded underscored names and other private API from limited API. 2016-09-11 11:03:14 +03:00
Benjamin Peterson 47503c5a8d fix link to instrumentation 2016-09-10 17:38:51 -07:00
Martin Panter b61ede4ba2 Merge spelling fixes from 3.5 2016-09-10 10:44:12 +00:00
Martin Panter 99e843b48e Correct spelling in documentation and code comment 2016-09-10 10:38:28 +00:00
Nick Coghlan b161562f72 Issue #17909: Accept binary input in json.loads
json.loads (and hence json.load) now support binary input
encoded as UTF-8, UTF-16 or UTF-32.

Patch by Serhiy Storchaka.
2016-09-10 20:16:18 +10:00
Zachary Ware b44acebc7b Actually fix suspicious markup, I ignored it too readily 2016-09-09 17:47:38 -07:00
Łukasz Langa a785c87d6e DTrace support: function calls, GC activity, line execution
Tested on macOS 10.11 dtrace, Ubuntu 16.04 SystemTap, and libbcc.

Largely based by an initial patch by Jesús Cea Avión, with some
influence from Dave Malcolm's SystemTap patch and Nikhil Benesch's
unification patch.

Things deliberately left out for simplicity:
- ustack helpers, I have no way of testing them at this point since
they are Solaris-specific
- PyFrameObject * in function__entry/function__return, this is
SystemTap-specific
- SPARC support
- dynamic tracing
- sys module dtrace facility introspection

All of those might be added later.
2016-09-09 17:37:37 -07:00
Zachary Ware 935043d1ac Closes #27976: Deprecate bundled full copy of libffi
Builds on non-OSX UNIX now default to using the system libffi, and warn if the
bundled copy is used.
2016-09-09 17:01:21 -07:00
R David Murray 06ed218ed0 #20476: add a message_factory policy attribute to email. 2016-09-09 18:39:18 -04:00
Steve Dower 3cdd7f57a2 Add links from whatsnew to Windows docs. 2016-09-09 15:22:13 -07:00
Serhiy Storchaka 142aee3a8e Merge heads 2016-09-10 01:14:38 +03:00
Steve Dower d8fdffedaa Adds search path changes to whatsnew/3.6.rst 2016-09-09 15:09:30 -07:00
Serhiy Storchaka be9a4e5c85 Issue #433028: Added support of modifier spans in regular expressions. 2016-09-10 00:57:55 +03:00
Brett Cannon a721abac29 Issue #26331: Implement the parsing part of PEP 515.
Thanks to Georg Brandl for the patch.
2016-09-09 14:57:09 -07:00