Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
73363e81
Commit
73363e81
authored
Jul 28, 2010
by
Victor Stinner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #6213: Implement getstate() and setstate() methods of utf-8-sig and
utf-16 incremental encoders.
parent
3ff4463b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
28 additions
and
5 deletions
+28
-5
Lib/encodings/utf_16.py
Lib/encodings/utf_16.py
+16
-0
Lib/encodings/utf_8_sig.py
Lib/encodings/utf_8_sig.py
+9
-3
Lib/test/test_io.py
Lib/test/test_io.py
+0
-2
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/encodings/utf_16.py
View file @
73363e81
...
...
@@ -34,6 +34,22 @@ class IncrementalEncoder(codecs.IncrementalEncoder):
codecs
.
IncrementalEncoder
.
reset
(
self
)
self
.
encoder
=
None
def
getstate
(
self
):
# state info we return to the caller:
# 0: stream is in natural order for this platform
# 2: endianness hasn't been determined yet
# (we're never writing in unnatural order)
return
(
2
if
self
.
encoder
is
None
else
0
)
def
setstate
(
self
,
state
):
if
state
:
self
.
encoder
=
None
else
:
if
sys
.
byteorder
==
'little'
:
self
.
encoder
=
codecs
.
utf_16_le_encode
else
:
self
.
encoder
=
codecs
.
utf_16_be_encode
class
IncrementalDecoder
(
codecs
.
BufferedIncrementalDecoder
):
def
__init__
(
self
,
errors
=
'strict'
):
codecs
.
BufferedIncrementalDecoder
.
__init__
(
self
,
errors
)
...
...
Lib/encodings/utf_8_sig.py
View file @
73363e81
...
...
@@ -25,18 +25,24 @@ def decode(input, errors='strict'):
class
IncrementalEncoder
(
codecs
.
IncrementalEncoder
):
def
__init__
(
self
,
errors
=
'strict'
):
codecs
.
IncrementalEncoder
.
__init__
(
self
,
errors
)
self
.
first
=
True
self
.
first
=
1
def
encode
(
self
,
input
,
final
=
False
):
if
self
.
first
:
self
.
first
=
False
self
.
first
=
0
return
codecs
.
BOM_UTF8
+
codecs
.
utf_8_encode
(
input
,
self
.
errors
)[
0
]
else
:
return
codecs
.
utf_8_encode
(
input
,
self
.
errors
)[
0
]
def
reset
(
self
):
codecs
.
IncrementalEncoder
.
reset
(
self
)
self
.
first
=
True
self
.
first
=
1
def
getstate
(
self
):
return
self
.
first
def
setstate
(
self
,
state
):
self
.
first
=
state
class
IncrementalDecoder
(
codecs
.
BufferedIncrementalDecoder
):
def
__init__
(
self
,
errors
=
'strict'
):
...
...
Lib/test/test_io.py
View file @
73363e81
...
...
@@ -2087,7 +2087,6 @@ class TextIOWrapperTest(unittest.TestCase):
self
.
assertEqual
(
buffer
.
seekable
(),
txt
.
seekable
())
@
unittest
.
skip
(
"Issue #6213 with incremental encoders"
)
def
test_append_bom
(
self
):
# The BOM is not written again when appending to a non-empty file
filename
=
support
.
TESTFN
...
...
@@ -2103,7 +2102,6 @@ class TextIOWrapperTest(unittest.TestCase):
with
self
.
open
(
filename
,
'rb'
)
as
f
:
self
.
assertEquals
(
f
.
read
(),
'aaaxxx'
.
encode
(
charset
))
@
unittest
.
skip
(
"Issue #6213 with incremental encoders"
)
def
test_seek_bom
(
self
):
# Same test, but when seeking manually
filename
=
support
.
TESTFN
...
...
Misc/NEWS
View file @
73363e81
...
...
@@ -18,6 +18,9 @@ Core and Builtins
Library
-------
- Issue #6213: Implement getstate() and setstate() methods of utf-8-sig and
utf-16 incremental encoders.
- Issue #7113: Speed up loading in ConfigParser. Patch by Łukasz Langa.
- Issue #3704: cookielib was not properly handling URLs with a / in the
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment