golden hour
/usr/lib64/python2.7/site-packages/yaml
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
9.55 KB
Del
OK
__init__.pyc
11.14 KB
Del
OK
__init__.pyo
11.14 KB
Del
OK
composer.py
4.81 KB
Del
OK
composer.pyc
4.42 KB
Del
OK
composer.pyo
4.42 KB
Del
OK
constructor.py
24.56 KB
Del
OK
constructor.pyc
21.39 KB
Del
OK
constructor.pyo
21.39 KB
Del
OK
cyaml.py
3.21 KB
Del
OK
cyaml.pyc
3.72 KB
Del
OK
cyaml.pyo
3.72 KB
Del
OK
dumper.py
2.66 KB
Del
OK
dumper.pyc
2.51 KB
Del
OK
dumper.pyo
2.51 KB
Del
OK
emitter.py
42.28 KB
Del
OK
emitter.pyc
31.2 KB
Del
OK
emitter.pyo
31.2 KB
Del
OK
error.py
2.5 KB
Del
OK
error.pyc
2.89 KB
Del
OK
error.pyo
2.89 KB
Del
OK
events.py
2.39 KB
Del
OK
events.pyc
4.82 KB
Del
OK
events.pyo
4.82 KB
Del
OK
loader.py
1.11 KB
Del
OK
loader.pyc
1.85 KB
Del
OK
loader.pyo
1.85 KB
Del
OK
nodes.py
1.41 KB
Del
OK
nodes.pyc
2.13 KB
Del
OK
nodes.pyo
2.13 KB
Del
OK
parser.py
24.94 KB
Del
OK
parser.pyc
14.37 KB
Del
OK
parser.pyo
14.31 KB
Del
OK
reader.py
6.59 KB
Del
OK
reader.pyc
5.46 KB
Del
OK
reader.pyo
5.46 KB
Del
OK
representer.py
17.23 KB
Del
OK
representer.pyc
14.32 KB
Del
OK
representer.pyo
14.32 KB
Del
OK
resolver.py
8.76 KB
Del
OK
resolver.pyc
6.48 KB
Del
OK
resolver.pyo
6.48 KB
Del
OK
scanner.py
51.4 KB
Del
OK
scanner.pyc
32.28 KB
Del
OK
scanner.pyo
32.24 KB
Del
OK
serializer.py
4.07 KB
Del
OK
serializer.pyc
4.23 KB
Del
OK
serializer.pyo
4.23 KB
Del
OK
tokens.py
2.51 KB
Del
OK
tokens.pyc
6.34 KB
Del
OK
tokens.pyo
6.34 KB
Del
OK
Edit: reader.py
# This module contains abstractions for the input stream. You don't have to # looks further, there are no pretty code. # # We define two classes here. # # Mark(source, line, column) # It's just a record and its only use is producing nice error messages. # Parser does not use it for any other purposes. # # Reader(source, data) # Reader determines the encoding of `data` and converts it to unicode. # Reader provides the following methods and attributes: # reader.peek(length=1) - return the next `length` characters # reader.forward(length=1) - move the current position to `length` characters. # reader.index - the number of the current character. # reader.line, stream.column - the line and the column of the current character. __all__ = ['Reader', 'ReaderError'] from error import YAMLError, Mark import codecs, re class ReaderError(YAMLError): def __init__(self, name, position, character, encoding, reason): self.name = name self.character = character self.position = position self.encoding = encoding self.reason = reason def __str__(self): if isinstance(self.character, str): return "'%s' codec can't decode byte #x%02x: %s\n" \ " in \"%s\", position %d" \ % (self.encoding, ord(self.character), self.reason, self.name, self.position) else: return "unacceptable character #x%04x: %s\n" \ " in \"%s\", position %d" \ % (self.character, self.reason, self.name, self.position) class Reader(object): # Reader: # - determines the data encoding and converts it to unicode, # - checks if characters are in allowed range, # - adds '\0' to the end. # Reader accepts # - a `str` object, # - a `unicode` object, # - a file-like object with its `read` method returning `str`, # - a file-like object with its `read` method returning `unicode`. # Yeah, it's ugly and slow. def __init__(self, stream): self.name = None self.stream = None self.stream_pointer = 0 self.eof = True self.buffer = u'' self.pointer = 0 self.raw_buffer = None self.raw_decode = None self.encoding = None self.index = 0 self.line = 0 self.column = 0 if isinstance(stream, unicode): self.name = "<unicode string>" self.check_printable(stream) self.buffer = stream+u'\0' elif isinstance(stream, str): self.name = "<string>" self.raw_buffer = stream self.determine_encoding() else: self.stream = stream self.name = getattr(stream, 'name', "<file>") self.eof = False self.raw_buffer = '' self.determine_encoding() def peek(self, index=0): try: return self.buffer[self.pointer+index] except IndexError: self.update(index+1) return self.buffer[self.pointer+index] def prefix(self, length=1): if self.pointer+length >= len(self.buffer): self.update(length) return self.buffer[self.pointer:self.pointer+length] def forward(self, length=1): if self.pointer+length+1 >= len(self.buffer): self.update(length+1) while length: ch = self.buffer[self.pointer] self.pointer += 1 self.index += 1 if ch in u'\n\x85\u2028\u2029' \ or (ch == u'\r' and self.buffer[self.pointer] != u'\n'): self.line += 1 self.column = 0 elif ch != u'\uFEFF': self.column += 1 length -= 1 def get_mark(self): if self.stream is None: return Mark(self.name, self.index, self.line, self.column, self.buffer, self.pointer) else: return Mark(self.name, self.index, self.line, self.column, None, None) def determine_encoding(self): while not self.eof and len(self.raw_buffer) < 2: self.update_raw() if not isinstance(self.raw_buffer, unicode): if self.raw_buffer.startswith(codecs.BOM_UTF16_LE): self.raw_decode = codecs.utf_16_le_decode self.encoding = 'utf-16-le' elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE): self.raw_decode = codecs.utf_16_be_decode self.encoding = 'utf-16-be' else: self.raw_decode = codecs.utf_8_decode self.encoding = 'utf-8' self.update(1) NON_PRINTABLE = re.compile(u'[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]') def check_printable(self, data): match = self.NON_PRINTABLE.search(data) if match: character = match.group() position = self.index+(len(self.buffer)-self.pointer)+match.start() raise ReaderError(self.name, position, ord(character), 'unicode', "special characters are not allowed") def update(self, length): if self.raw_buffer is None: return self.buffer = self.buffer[self.pointer:] self.pointer = 0 while len(self.buffer) < length: if not self.eof: self.update_raw() if self.raw_decode is not None: try: data, converted = self.raw_decode(self.raw_buffer, 'strict', self.eof) except UnicodeDecodeError, exc: character = exc.object[exc.start] if self.stream is not None: position = self.stream_pointer-len(self.raw_buffer)+exc.start else: position = exc.start raise ReaderError(self.name, position, character, exc.encoding, exc.reason) else: data = self.raw_buffer converted = len(data) self.check_printable(data) self.buffer += data self.raw_buffer = self.raw_buffer[converted:] if self.eof: self.buffer += u'\0' self.raw_buffer = None break def update_raw(self, size=1024): data = self.stream.read(size) if data: self.raw_buffer += data self.stream_pointer += len(data) else: self.eof = True #try: # import psyco # psyco.bind(Reader) #except ImportError: # pass
Save