| # Copyright 2016 Google Inc. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """ A tiny version of `six` to help with backwards compability. """ |
| |
| import sys |
| |
| PY2 = sys.version_info[0] == 2 |
| PY26 = sys.version_info[0:2] == (2, 6) |
| PY27 = sys.version_info[0:2] == (2, 7) |
| PY275 = sys.version_info[0:3] >= (2, 7, 5) |
| PY3 = sys.version_info[0] == 3 |
| PY34 = sys.version_info[0:2] >= (3, 4) |
| |
| if PY3: |
| string_types = (str,) |
| binary_types = (bytes,bytearray) |
| range_func = range |
| memoryview_type = memoryview |
| struct_bool_decl = "?" |
| else: |
| string_types = (unicode,) |
| if PY26 or PY27: |
| binary_types = (str,bytearray) |
| else: |
| binary_types = (str,) |
| range_func = xrange |
| if PY26 or (PY27 and not PY275): |
| memoryview_type = buffer |
| struct_bool_decl = "<b" |
| else: |
| memoryview_type = memoryview |
| struct_bool_decl = "?" |
| |
| # NOTE: Future Jython support may require code here (look at `six`). |