Staging
v0.5.1
https://github.com/python/cpython
Revision 85d5c18c9d83a1d54eecc4c2ad4dce63194107c6 authored by R. David Murray on 03 December 2017, 23:51:41 UTC, committed by GitHub on 03 December 2017, 23:51:41 UTC
The original algorithm tried to delegate the folding to the tokens so
that those tokens whose folding rules differed could specify the
differences.  However, this resulted in a lot of duplicated code because
most of the rules were the same.

The new algorithm moves all folding logic into a set of functions
external to the token classes, but puts the information about which
tokens can be folded in which ways on the tokens...with the exception of
mime-parameters, which are a special case (which was not even
implemented in the old folder).

This algorithm can still probably be improved and hopefully simplified
somewhat.

Note that some of the test expectations are changed.  I believe the
changes are toward more desirable and consistent behavior: in general
when (re) folding a line the canonical version of the tokens is
generated, rather than preserving errors or extra whitespace.
1 parent 29ba688
History
Tip revision: 85d5c18c9d83a1d54eecc4c2ad4dce63194107c6 authored by R. David Murray on 03 December 2017, 23:51:41 UTC
bpo-27240 Rewrite the email header folding algorithm. (#3488)
Tip revision: 85d5c18
File Mode Size
_asyncio.vcxproj -rw-r--r-- 3.0 KB
_asyncio.vcxproj.filters -rw-r--r-- 520 bytes
_bz2.vcxproj -rw-r--r-- 4.0 KB
_bz2.vcxproj.filters -rw-r--r-- 1.7 KB
_ctypes.vcxproj -rw-r--r-- 4.8 KB
_ctypes.vcxproj.filters -rw-r--r-- 2.3 KB
_ctypes_test.vcxproj -rw-r--r-- 3.1 KB
_ctypes_test.vcxproj.filters -rw-r--r-- 718 bytes
_decimal.vcxproj -rw-r--r-- 6.0 KB
_decimal.vcxproj.filters -rw-r--r-- 4.3 KB
_elementtree.vcxproj -rw-r--r-- 4.5 KB
_elementtree.vcxproj.filters -rw-r--r-- 2.6 KB
_freeze_importlib.vcxproj -rw-r--r-- 5.2 KB
_freeze_importlib.vcxproj.filters -rw-r--r-- 1.1 KB
_hashlib.vcxproj -rw-r--r-- 3.2 KB
_hashlib.vcxproj.filters -rw-r--r-- 436 bytes
_lzma.vcxproj -rw-r--r-- 3.7 KB
_lzma.vcxproj.filters -rw-r--r-- 435 bytes
_msi.vcxproj -rw-r--r-- 3.2 KB
_msi.vcxproj.filters -rw-r--r-- 423 bytes
_multiprocessing.vcxproj -rw-r--r-- 3.4 KB
_multiprocessing.vcxproj.filters -rw-r--r-- 861 bytes
_overlapped.vcxproj -rw-r--r-- 3.2 KB
_overlapped.vcxproj.filters -rw-r--r-- 434 bytes
_socket.vcxproj -rw-r--r-- 3.3 KB
_socket.vcxproj.filters -rw-r--r-- 702 bytes
_sqlite3.vcxproj -rw-r--r-- 4.5 KB
_sqlite3.vcxproj.filters -rw-r--r-- 2.4 KB
_ssl.vcxproj -rw-r--r-- 3.6 KB
_ssl.vcxproj.filters -rw-r--r-- 620 bytes
_testbuffer.vcxproj -rw-r--r-- 3.1 KB
_testbuffer.vcxproj.filters -rw-r--r-- 435 bytes
_testcapi.vcxproj -rw-r--r-- 3.1 KB
_testcapi.vcxproj.filters -rw-r--r-- 439 bytes
_testconsole.vcxproj -rw-r--r-- 3.2 KB
_testconsole.vcxproj.filters -rw-r--r-- 952 bytes
_testembed.vcxproj -rw-r--r-- 3.1 KB
_testembed.vcxproj.filters -rw-r--r-- 948 bytes
_testimportmultiple.vcxproj -rw-r--r-- 3.2 KB
_testimportmultiple.vcxproj.filters -rw-r--r-- 444 bytes
_testmultiphase.vcxproj -rw-r--r-- 3.2 KB
_testmultiphase.vcxproj.filters -rw-r--r-- 952 bytes
_tkinter.vcxproj -rw-r--r-- 4.1 KB
_tkinter.vcxproj.filters -rw-r--r-- 534 bytes
build.bat -rw-r--r-- 5.8 KB
build_env.bat -rw-r--r-- 25 bytes
clean.bat -rw-r--r-- 128 bytes
env.bat -rw-r--r-- 712 bytes
field3.py -rw-r--r-- 974 bytes
find_msbuild.bat -rw-r--r-- 2.4 KB
find_python.bat -rw-r--r-- 3.0 KB
fix_encoding.py -rw-r--r-- 952 bytes
get_external.py -rw-r--r-- 1.8 KB
get_externals.bat -rw-r--r-- 3.9 KB
idle.bat -rw-r--r-- 296 bytes
lib.pyproj -rw-r--r-- 89.5 KB
liblzma.vcxproj -rw-r--r-- 13.1 KB
openssl.props -rw-r--r-- 1.4 KB
openssl.vcxproj -rw-r--r-- 5.6 KB
pcbuild.proj -rw-r--r-- 5.5 KB
pcbuild.sln -rw-r--r-- 51.0 KB
prepare_ssl.bat -rw-r--r-- 2.2 KB
prepare_ssl.py -rw-r--r-- 6.7 KB
prepare_tcltk.bat -rw-r--r-- 1.9 KB
pyexpat.vcxproj -rw-r--r-- 3.6 KB
pyexpat.vcxproj.filters -rw-r--r-- 1.2 KB
pylauncher.vcxproj -rw-r--r-- 3.2 KB
pylauncher.vcxproj.filters -rw-r--r-- 1.2 KB
pyproject.props -rw-r--r-- 10.4 KB
pyshellext.vcxproj -rw-r--r-- 3.4 KB
pyshellext.vcxproj.filters -rw-r--r-- 1.4 KB
python.props -rw-r--r-- 11.9 KB
python.vcxproj -rw-r--r-- 5.1 KB
python.vcxproj.filters -rw-r--r-- 824 bytes
python3dll.vcxproj -rw-r--r-- 5.8 KB
python3dll.vcxproj.filters -rw-r--r-- 1.2 KB
pythoncore.vcxproj -rw-r--r-- 22.8 KB
pythoncore.vcxproj.filters -rw-r--r-- 33.2 KB
pythonw.vcxproj -rw-r--r-- 3.0 KB
pythonw.vcxproj.filters -rw-r--r-- 702 bytes
pywlauncher.vcxproj -rw-r--r-- 3.2 KB
pywlauncher.vcxproj.filters -rw-r--r-- 1.2 KB
readme.txt -rw-r--r-- 10.9 KB
rmpyc.py -rw-r--r-- 409 bytes
rt.bat -rw-r--r-- 1.9 KB
select.vcxproj -rw-r--r-- 3.2 KB
select.vcxproj.filters -rw-r--r-- 436 bytes
sqlite3.vcxproj -rw-r--r-- 4.1 KB
sqlite3.vcxproj.filters -rw-r--r-- 804 bytes
tcl.vcxproj -rw-r--r-- 3.0 KB
tcltk.props -rw-r--r-- 3.2 KB
tix.vcxproj -rw-r--r-- 3.9 KB
tk.vcxproj -rw-r--r-- 3.2 KB
unicodedata.vcxproj -rw-r--r-- 3.2 KB
unicodedata.vcxproj.filters -rw-r--r-- 810 bytes
urlretrieve.py -rw-r--r-- 1.2 KB
winsound.vcxproj -rw-r--r-- 3.1 KB
winsound.vcxproj.filters -rw-r--r-- 500 bytes
xxlimited.vcxproj -rw-r--r-- 3.2 KB
xxlimited.vcxproj.filters -rw-r--r-- 433 bytes

readme.txt

back to top