1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from __future__ import absolute_import
- # Copyright (c) 2010-2019 openpyxl
- from datetime import datetime
- from math import isnan, isinf
- import sys
- VER = sys.version_info
- from .numbers import NUMERIC_TYPES
- if VER[0] >= 3:
- basestring = str
- unicode = str
- from io import BufferedReader
- file = BufferedReader
- from io import BufferedRandom
- tempfile = BufferedRandom
- bytes = bytes
- else:
- basestring = basestring
- unicode = unicode
- file = file
- tempfile = file
- bytes = str
- def safe_string(value):
- """Safely and consistently format numeric values"""
- if isinstance(value, NUMERIC_TYPES):
- if isnan(value) or isinf(value):
- value = ""
- else:
- value = "%.16g" % value
- elif value is None:
- value = "none"
- elif isinstance(value, datetime):
- value = value.isoformat()
- elif not isinstance(value, basestring):
- value = str(value)
- return value
- def safe_repr(value):
- """
- Safely convert unicode to ASCII for Python 2
- """
- if VER[0] == 3:
- return value
- return value.encode("ascii", 'backslashreplace')
|