| Index: third_party/requests/packages/charade/escprober.py
 | 
| diff --git a/third_party/requests/packages/charade/escprober.py b/third_party/requests/packages/charade/escprober.py
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..0063935ce65a9adb52e1504f0783366f355c0b85
 | 
| --- /dev/null
 | 
| +++ b/third_party/requests/packages/charade/escprober.py
 | 
| @@ -0,0 +1,86 @@
 | 
| +######################## BEGIN LICENSE BLOCK ########################
 | 
| +# The Original Code is mozilla.org code.
 | 
| +#
 | 
| +# The Initial Developer of the Original Code is
 | 
| +# Netscape Communications Corporation.
 | 
| +# Portions created by the Initial Developer are Copyright (C) 1998
 | 
| +# the Initial Developer. All Rights Reserved.
 | 
| +#
 | 
| +# Contributor(s):
 | 
| +#   Mark Pilgrim - port to Python
 | 
| +#
 | 
| +# This library is free software; you can redistribute it and/or
 | 
| +# modify it under the terms of the GNU Lesser General Public
 | 
| +# License as published by the Free Software Foundation; either
 | 
| +# version 2.1 of the License, or (at your option) any later version.
 | 
| +#
 | 
| +# This library is distributed in the hope that it will be useful,
 | 
| +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
| +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
| +# Lesser General Public License for more details.
 | 
| +#
 | 
| +# You should have received a copy of the GNU Lesser General Public
 | 
| +# License along with this library; if not, write to the Free Software
 | 
| +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 | 
| +# 02110-1301  USA
 | 
| +######################### END LICENSE BLOCK #########################
 | 
| +
 | 
| +from . import constants
 | 
| +from .escsm import (HZSMModel, ISO2022CNSMModel, ISO2022JPSMModel,
 | 
| +                    ISO2022KRSMModel)
 | 
| +from .charsetprober import CharSetProber
 | 
| +from .codingstatemachine import CodingStateMachine
 | 
| +from .compat import wrap_ord
 | 
| +
 | 
| +
 | 
| +class EscCharSetProber(CharSetProber):
 | 
| +    def __init__(self):
 | 
| +        CharSetProber.__init__(self)
 | 
| +        self._mCodingSM = [
 | 
| +            CodingStateMachine(HZSMModel),
 | 
| +            CodingStateMachine(ISO2022CNSMModel),
 | 
| +            CodingStateMachine(ISO2022JPSMModel),
 | 
| +            CodingStateMachine(ISO2022KRSMModel)
 | 
| +        ]
 | 
| +        self.reset()
 | 
| +
 | 
| +    def reset(self):
 | 
| +        CharSetProber.reset(self)
 | 
| +        for codingSM in self._mCodingSM:
 | 
| +            if not codingSM:
 | 
| +                continue
 | 
| +            codingSM.active = True
 | 
| +            codingSM.reset()
 | 
| +        self._mActiveSM = len(self._mCodingSM)
 | 
| +        self._mDetectedCharset = None
 | 
| +
 | 
| +    def get_charset_name(self):
 | 
| +        return self._mDetectedCharset
 | 
| +
 | 
| +    def get_confidence(self):
 | 
| +        if self._mDetectedCharset:
 | 
| +            return 0.99
 | 
| +        else:
 | 
| +            return 0.00
 | 
| +
 | 
| +    def feed(self, aBuf):
 | 
| +        for c in aBuf:
 | 
| +            # PY3K: aBuf is a byte array, so c is an int, not a byte
 | 
| +            for codingSM in self._mCodingSM:
 | 
| +                if not codingSM:
 | 
| +                    continue
 | 
| +                if not codingSM.active:
 | 
| +                    continue
 | 
| +                codingState = codingSM.next_state(wrap_ord(c))
 | 
| +                if codingState == constants.eError:
 | 
| +                    codingSM.active = False
 | 
| +                    self._mActiveSM -= 1
 | 
| +                    if self._mActiveSM <= 0:
 | 
| +                        self._mState = constants.eNotMe
 | 
| +                        return self.get_state()
 | 
| +                elif codingState == constants.eItsMe:
 | 
| +                    self._mState = constants.eFoundIt
 | 
| +                    self._mDetectedCharset = codingSM.get_coding_state_machine()  # nopep8
 | 
| +                    return self.get_state()
 | 
| +
 | 
| +        return self.get_state()
 | 
| 
 |