diff --git a/examples/__init__.py b/examples/__init__.py index acef755..13c5e6a 100644 --- a/examples/__init__.py +++ b/examples/__init__.py @@ -1 +1,8 @@ -__author__ = 'deva' +# coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +__author__ = 'uggla' diff --git a/examples/simple-proliant.py b/examples/simple-proliant.py index 451b7a1..a2f2a54 100644 --- a/examples/simple-proliant.py +++ b/examples/simple-proliant.py @@ -1,6 +1,13 @@ # coding=utf-8 """ Simple example to use python-redfish on HP Proliant servers """ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import str import os import sys diff --git a/examples/simple-simulator.py b/examples/simple-simulator.py index df44ca5..3e73387 100644 --- a/examples/simple-simulator.py +++ b/examples/simple-simulator.py @@ -1,6 +1,12 @@ # coding=utf-8 """ Simple example to use python-redfish with DMTF simulator """ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() import os import sys diff --git a/redfish-client/redfish-client b/redfish-client/redfish-client index 917892e..c6d1ddb 100755 --- a/redfish-client/redfish-client +++ b/redfish-client/redfish-client @@ -28,9 +28,17 @@ redfish-client :: --libdebugfile FILE Specify python-redfish library log file [default: /var/log/python-redfish/python-redfish.log] config commands : manage the configuration file. - manager commands : manage the manager (Ligh out management). If + manager commands : manage the manager (Light out management). If is not provided use the 'default' entry ''' +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import str +from builtins import object import os import sys @@ -38,7 +46,7 @@ import json import pprint import docopt import logging -import ConfigParser +import configparser import jinja2 import requests.packages.urllib3 import redfish @@ -268,7 +276,7 @@ if __name__ == '__main__': % (e.message, jinja2_env.loader.searchpath[0])) sys.exit(1) - print template.render(r=remote_mgmt) + print(template.render(r=remote_mgmt)) ################################################################# # Main program @@ -340,7 +348,7 @@ if __name__ == '__main__': logger.debug("Home directory : %s" % HOME) # Load config - config = ConfigParser.ConfigParser(allow_no_value=True) + config = configparser.ConfigParser(allow_no_value=True) logger.debug("Read configuration file") configfile = 'PBCONFFILE' diff --git a/redfish-client/tests/test_client.py b/redfish-client/tests/test_client.py index 7cd157d..428bb1d 100644 --- a/redfish-client/tests/test_client.py +++ b/redfish-client/tests/test_client.py @@ -1,3 +1,10 @@ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import object # coding=utf-8 import os import stat @@ -7,7 +14,7 @@ from docker import Client from path import Path -class DockerTest(): +class DockerTest(object): def __init__(self): self.cli = Client(base_url='unix://var/run/docker.sock') diff --git a/redfish/__init__.py b/redfish/__init__.py index 0a6657b..abe39c8 100644 --- a/redfish/__init__.py +++ b/redfish/__init__.py @@ -12,14 +12,19 @@ # License for the specific language governing permissions and limitations # under the License. +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() import pbr.version from redfish.main import * -#import redfish.types try: __version__ = pbr.version.VersionInfo('redfish').release_string() -except Exception, e: +except Exception as e: if "Versioning for this project requires either an sdist tarball" in e.message: pass else: diff --git a/redfish/config.py b/redfish/config.py index b4429ed..9f2b7f1 100644 --- a/redfish/config.py +++ b/redfish/config.py @@ -1,5 +1,11 @@ # coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() import logging import sys import os diff --git a/redfish/exception.py b/redfish/exception.py index d54feff..bb09b86 100644 --- a/redfish/exception.py +++ b/redfish/exception.py @@ -1,6 +1,13 @@ # -*- coding: utf-8 -*- -import config +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import str +from . import config class RedfishException(Exception): diff --git a/redfish/main.py b/redfish/main.py index 98c0205..bf96712 100644 --- a/redfish/main.py +++ b/redfish/main.py @@ -1,3 +1,5 @@ +# coding=utf-8 +# # Copyright 2014 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -114,17 +116,23 @@ Clients should always be prepared for: * headers the service returns """ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import object -# coding=utf-8 import json -from urlparse import urlparse +from urllib.parse import urlparse import requests -import config -import types -import mapping -import exception +from . import config +from . import types +from . import mapping +from . import exception """Function to wrap RedfishConnection""" @@ -196,13 +204,13 @@ class RedfishConnection(object): # Verify cert if self.connection_parameters.verify_cert is False: config.logger.info("Certificat is not checked, " + - "this is insecure and can allow" + - " a man in the middle attack") + "this is insecure and can allow" + + " a man in the middle attack") - config.logger.debug("Root url : %s", self.connection_parameters.rooturl) + config.logger.debug("Root url : %s", + self.connection_parameters.rooturl) self.Root = types.Root(self.connection_parameters.rooturl, - self.connection_parameters - ) + self.connection_parameters) #self.api_url = tortilla.wrap(self.connection_parameters.rooturl, # debug=TORTILLADEBUG) #self.root = self.api_url.get(verify=self.connection_parameters.verify_cert) diff --git a/redfish/mapping.py b/redfish/mapping.py index f999cd2..db116ab 100644 --- a/redfish/mapping.py +++ b/redfish/mapping.py @@ -1,4 +1,11 @@ # coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import object redfish_mapper = None redfish_version = None diff --git a/redfish/types.py b/redfish/types.py index babc5d0..8777398 100644 --- a/redfish/types.py +++ b/redfish/types.py @@ -1,14 +1,21 @@ # coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import object import pprint import re -from urlparse import urljoin +from urllib.parse import urljoin import requests import simplejson import tortilla -import config -import mapping -import exception +from . import config +from . import mapping +from . import exception # Global variable diff --git a/requirements.txt b/requirements.txt index fec375e..dcd8264 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,7 @@ Jinja2>=2.7.3 Sphinx>=1.2.3 docopt>=0.6.2 simplejson>=3.8.1 + +# Python3 compat +future>=0.15.2 +configparser>=3.3.0 diff --git a/setup.py b/setup.py index cc591e5..94994dd 100755 --- a/setup.py +++ b/setup.py @@ -1,3 +1,10 @@ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import object #!/usr/bin/env python # Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. @@ -19,7 +26,7 @@ import fileinput import re import pprint import distutils -import ConfigParser +import configparser import setuptools from setuptools import Distribution from setuptools.command.install import install @@ -42,13 +49,13 @@ class OnlyGetScriptPath(install): self.distribution.install_scripts = self.install_scripts -class DataFilesHelper(): +class DataFilesHelper(object): '''Class to help manage data files''' def __init__(self): '''Read setup.cfg and build the required data''' self.data = {} self.setupstruc = [] - config = ConfigParser.ConfigParser() + config = configparser.ConfigParser() config.read('setup.cfg') for datafile in config.options('data_files_helper'): src, dst = config.get('data_files_helper', datafile).split(',') @@ -65,7 +72,7 @@ class DataFilesHelper(): self.data['script'] = {'src': src, 'dst': 'bin', 'fdst': self.calculatedst(src, 'bin')} - except ConfigParser.NoOptionError: + except configparser.NoOptionError: pass pp = pprint.PrettyPrinter(indent=4) pp.pprint(self.data)