Ignore:
Timestamp:
12/29/08 12:24:05 (6 years ago)
Author:
xi
Message:

Added basic support for Python 3 (Thanks idadesub(at)users(dot)sourceforge(dot)net).

Location:
pyyaml/trunk/tests3
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • pyyaml/trunk/tests3/canonical.py

    r322 r328  
    88 
    99    def __init__(self, data): 
    10         try: 
    11             self.data = unicode(data, 'utf-8')+u'\0' 
    12         except UnicodeDecodeError: 
    13             raise CanonicalError("utf-8 stream is expected") 
     10        if isinstance(data, bytes): 
     11            try: 
     12                data = data.decode('utf-8') 
     13            except UnicodeDecodeError: 
     14                raise CanonicalError("utf-8 stream is expected") 
     15        self.data = data+'\0' 
    1416        self.index = 0 
    1517        self.tokens = [] 
     
    5052            self.find_token() 
    5153            ch = self.data[self.index] 
    52             if ch == u'\0': 
     54            if ch == '\0': 
    5355                self.tokens.append(yaml.StreamEndToken(None, None)) 
    5456                break 
    55             elif ch == u'%': 
     57            elif ch == '%': 
    5658                self.tokens.append(self.scan_directive()) 
    57             elif ch == u'-' and self.data[self.index:self.index+3] == u'---': 
     59            elif ch == '-' and self.data[self.index:self.index+3] == '---': 
    5860                self.index += 3 
    5961                self.tokens.append(yaml.DocumentStartToken(None, None)) 
    60             elif ch == u'[': 
     62            elif ch == '[': 
    6163                self.index += 1 
    6264                self.tokens.append(yaml.FlowSequenceStartToken(None, None)) 
    63             elif ch == u'{': 
     65            elif ch == '{': 
    6466                self.index += 1 
    6567                self.tokens.append(yaml.FlowMappingStartToken(None, None)) 
    66             elif ch == u']': 
     68            elif ch == ']': 
    6769                self.index += 1 
    6870                self.tokens.append(yaml.FlowSequenceEndToken(None, None)) 
    69             elif ch == u'}': 
     71            elif ch == '}': 
    7072                self.index += 1 
    7173                self.tokens.append(yaml.FlowMappingEndToken(None, None)) 
    72             elif ch == u'?': 
     74            elif ch == '?': 
    7375                self.index += 1 
    7476                self.tokens.append(yaml.KeyToken(None, None)) 
    75             elif ch == u':': 
     77            elif ch == ':': 
    7678                self.index += 1 
    7779                self.tokens.append(yaml.ValueToken(None, None)) 
    78             elif ch == u',': 
     80            elif ch == ',': 
    7981                self.index += 1 
    8082                self.tokens.append(yaml.FlowEntryToken(None, None)) 
    81             elif ch == u'*' or ch == u'&': 
     83            elif ch == '*' or ch == '&': 
    8284                self.tokens.append(self.scan_alias()) 
    83             elif ch == u'!': 
     85            elif ch == '!': 
    8486                self.tokens.append(self.scan_tag()) 
    85             elif ch == u'"': 
     87            elif ch == '"': 
    8688                self.tokens.append(self.scan_scalar()) 
    8789            else: 
     
    8991        self.scanned = True 
    9092 
    91     DIRECTIVE = u'%YAML 1.1' 
     93    DIRECTIVE = '%YAML 1.1' 
    9294 
    9395    def scan_directive(self): 
    9496        if self.data[self.index:self.index+len(self.DIRECTIVE)] == self.DIRECTIVE and \ 
    95                 self.data[self.index+len(self.DIRECTIVE)] in u' \n\0': 
     97                self.data[self.index+len(self.DIRECTIVE)] in ' \n\0': 
    9698            self.index += len(self.DIRECTIVE) 
    9799            return yaml.DirectiveToken('YAML', (1, 1), None, None) 
     
    100102 
    101103    def scan_alias(self): 
    102         if self.data[self.index] == u'*': 
     104        if self.data[self.index] == '*': 
    103105            TokenClass = yaml.AliasToken 
    104106        else: 
     
    106108        self.index += 1 
    107109        start = self.index 
    108         while self.data[self.index] not in u', \n\0': 
     110        while self.data[self.index] not in ', \n\0': 
    109111            self.index += 1 
    110112        value = self.data[start:self.index] 
     
    114116        self.index += 1 
    115117        start = self.index 
    116         while self.data[self.index] not in u' \n\0': 
     118        while self.data[self.index] not in ' \n\0': 
    117119            self.index += 1 
    118120        value = self.data[start:self.index] 
    119121        if not value: 
    120             value = u'!' 
    121         elif value[0] == u'!': 
     122            value = '!' 
     123        elif value[0] == '!': 
    122124            value = 'tag:yaml.org,2002:'+value[1:] 
    123         elif value[0] == u'<' and value[-1] == u'>': 
     125        elif value[0] == '<' and value[-1] == '>': 
    124126            value = value[1:-1] 
    125127        else: 
    126             value = u'!'+value 
     128            value = '!'+value 
    127129        return yaml.TagToken(value, None, None) 
    128130 
     
    134136 
    135137    QUOTE_REPLACES = { 
    136         u'\\': u'\\', 
    137         u'\"': u'\"', 
    138         u' ': u' ', 
    139         u'a': u'\x07', 
    140         u'b': u'\x08', 
    141         u'e': u'\x1B', 
    142         u'f': u'\x0C', 
    143         u'n': u'\x0A', 
    144         u'r': u'\x0D', 
    145         u't': u'\x09', 
    146         u'v': u'\x0B', 
    147         u'N': u'\u0085', 
    148         u'L': u'\u2028', 
    149         u'P': u'\u2029', 
    150         u'_': u'_', 
    151         u'0': u'\x00', 
    152  
     138        '\\': '\\', 
     139        '\"': '\"', 
     140        ' ': ' ', 
     141        'a': '\x07', 
     142        'b': '\x08', 
     143        'e': '\x1B', 
     144        'f': '\x0C', 
     145        'n': '\x0A', 
     146        'r': '\x0D', 
     147        't': '\x09', 
     148        'v': '\x0B', 
     149        'N': '\u0085', 
     150        'L': '\u2028', 
     151        'P': '\u2029', 
     152        '_': '_', 
     153        '0': '\x00', 
    153154    } 
    154155 
     
    158159        start = self.index 
    159160        ignore_spaces = False 
    160         while self.data[self.index] != u'"': 
    161             if self.data[self.index] == u'\\': 
     161        while self.data[self.index] != '"': 
     162            if self.data[self.index] == '\\': 
    162163                ignore_spaces = False 
    163164                chunks.append(self.data[start:self.index]) 
     
    165166                ch = self.data[self.index] 
    166167                self.index += 1 
    167                 if ch == u'\n': 
     168                if ch == '\n': 
    168169                    ignore_spaces = True 
    169170                elif ch in self.QUOTE_CODES: 
    170171                    length = self.QUOTE_CODES[ch] 
    171172                    code = int(self.data[self.index:self.index+length], 16) 
    172                     chunks.append(unichr(code)) 
     173                    chunks.append(chr(code)) 
    173174                    self.index += length 
    174175                else: 
     
    177178                    chunks.append(self.QUOTE_REPLACES[ch]) 
    178179                start = self.index 
    179             elif self.data[self.index] == u'\n': 
     180            elif self.data[self.index] == '\n': 
    180181                chunks.append(self.data[start:self.index]) 
    181                 chunks.append(u' ') 
     182                chunks.append(' ') 
    182183                self.index += 1 
    183184                start = self.index 
    184185                ignore_spaces = True 
    185             elif ignore_spaces and self.data[self.index] == u' ': 
     186            elif ignore_spaces and self.data[self.index] == ' ': 
    186187                self.index += 1 
    187188                start = self.index 
     
    191192        chunks.append(self.data[start:self.index]) 
    192193        self.index += 1 
    193         return yaml.ScalarToken(u''.join(chunks), False, None, None) 
     194        return yaml.ScalarToken(''.join(chunks), False, None, None) 
    194195 
    195196    def find_token(self): 
    196197        found = False 
    197198        while not found: 
    198             while self.data[self.index] in u' \t': 
    199                 self.index += 1 
    200             if self.data[self.index] == u'#': 
    201                 while self.data[self.index] != u'\n': 
     199            while self.data[self.index] in ' \t': 
     200                self.index += 1 
     201            if self.data[self.index] == '#': 
     202                while self.data[self.index] != '\n': 
    202203                    self.index += 1 
    203             if self.data[self.index] == u'\n': 
     204            if self.data[self.index] == '\n': 
    204205                self.index += 1 
    205206            else: 
Note: See TracChangeset for help on using the changeset viewer.