diff --git a/dev-requirements.txt b/dev-requirements.txt index 008875072..42057258b 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -80,8 +80,7 @@ Babel>=2.7.0 # Pylint 2.10.0 / astroid 2.7.2 fixes issues in similarity checker (issues #2672, #2673) pylint>=1.6.4,<2.0.0; python_version == '2.7' pylint>=2.5.2; python_version == '3.5' -# TODO: Enable 2.13 and address new issues -pylint>=2.10.0,<2.13; python_version >= '3.6' +pylint>=2.10.0; python_version >= '3.6' astroid>=1.4.9,<2.0.0; python_version == '2.7' astroid>=2.4.0; python_version == '3.5' astroid>=2.7.2; python_version >= '3.6' diff --git a/docs/changes.rst b/docs/changes.rst index f3fc9fb3f..8b5eb6e00 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -49,6 +49,11 @@ Released: not yet * Excluded setuptools 61.0.0 because it breaks installation via "setup.py install" (issue #2871) +* Resolved new issues reported by Pylint 2.13 (issue #2870) + +* Fixed that the added setup.py commands (test, leaktest, installtest) were not + displayed. They are now displayed at verbosity level 1 (using '-v'). + **Enhancements:** * Added support for the new 'CIM_WBEMServerNamespace' class used in the diff --git a/pywbem/_cim_operations.py b/pywbem/_cim_operations.py index 568d5c26e..6c8c0aa2c 100644 --- a/pywbem/_cim_operations.py +++ b/pywbem/_cim_operations.py @@ -2990,9 +2990,9 @@ class are to be included in the returned instances, as follows: IncludeClassOrigin=IncludeClassOrigin, PropertyList=PropertyList) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -3112,9 +3112,9 @@ def EnumerateInstanceNames(self, ClassName, namespace=None): namespace=namespace, ClassName=ClassName) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -3266,9 +3266,9 @@ def GetInstance(self, InstanceName, LocalOnly=None, IncludeQualifiers=None, IncludeClassOrigin=IncludeClassOrigin, PropertyList=PropertyList) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) # Strip off host and namespace to make this a "local" object namespace = self._iparam_namespace_from_objectname( InstanceName, 'InstanceName') @@ -3469,9 +3469,9 @@ def ModifyInstance(self, ModifiedInstance, IncludeQualifiers=None, IncludeQualifiers=IncludeQualifiers, PropertyList=PropertyList) + stats = self.statistics.start_timer('ModifyInstance') try: - stats = self.statistics.start_timer('ModifyInstance') # Must pass a named CIMInstance here (i.e path attribute set) ModifiedInstance = self._iparam_instance( ModifiedInstance, 'ModifiedInstance', required=True) @@ -3597,9 +3597,9 @@ class for the new instance. namespace=namespace, NewInstance=NewInstance) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and \ getattr(NewInstance.path, 'namespace', None) is not None: namespace = NewInstance.path.namespace @@ -3692,9 +3692,9 @@ def DeleteInstance(self, InstanceName): method=method_name, InstanceName=InstanceName) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( InstanceName, 'InstanceName') InstanceName = self._iparam_instancename( @@ -3890,9 +3890,9 @@ class (or subclasses). IncludeClassOrigin=IncludeClassOrigin, PropertyList=PropertyList) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( ObjectName, 'ObjectName') ObjectName = self._iparam_objectname( @@ -4054,9 +4054,9 @@ class (or subclasses). Role=Role, ResultRole=ResultRole) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( ObjectName, 'ObjectName') ObjectName = self._iparam_objectname( @@ -4245,9 +4245,9 @@ class (or subclasses). IncludeClassOrigin=IncludeClassOrigin, PropertyList=PropertyList) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( ObjectName, 'ObjectName') ObjectName = self._iparam_objectname( @@ -4387,9 +4387,9 @@ class (or subclasses). ResultClass=ResultClass, Role=Role) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( ObjectName, 'ObjectName') ObjectName = self._iparam_objectname( @@ -4526,10 +4526,9 @@ def InvokeMethod(self, MethodName, ObjectName, Params=None, **params): Params=Params, **params) + stats = self.statistics.start_timer('InvokeMethod') try: - stats = self.statistics.start_timer('InvokeMethod') - # Make the method call result = self._methodcall(MethodName, ObjectName, Params, **params) @@ -4608,9 +4607,9 @@ def ExecQuery(self, QueryLanguage, Query, namespace=None): QueryLanguage=QueryLanguage, Query=Query) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) QueryLanguage = self._iparam_string( QueryLanguage, 'QueryLanguage', required=True) @@ -7018,9 +7017,9 @@ class are to be included in the returned instances, as follows: ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -7258,9 +7257,9 @@ def OpenEnumerateInstancePaths(self, ClassName, namespace=None, ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -7529,9 +7528,9 @@ class (or subclasses). ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( InstanceName, 'InstanceName') InstanceName = self._iparam_instancename( @@ -7787,9 +7786,9 @@ class (or subclasses). ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( InstanceName, 'InstanceName') InstanceName = self._iparam_instancename( @@ -8049,9 +8048,9 @@ class (or subclasses). ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( InstanceName, 'InstanceName') InstanceName = self._iparam_instancename( @@ -8282,9 +8281,9 @@ class (or subclasses). ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_objectname( InstanceName, 'InstanceName') InstanceName = self._iparam_instancename( @@ -8517,9 +8516,9 @@ def _GetQueryRsltClass(result): ContinueOnError=ContinueOnError, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) FilterQueryLanguage = self._iparam_string( FilterQueryLanguage, 'FilterQueryLanguage') @@ -8683,9 +8682,9 @@ def PullInstancesWithPath(self, context, MaxObjectCount): context=context, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) _validate_MaxObjectCount_OpenPull(MaxObjectCount) _validate_context(context) namespace = context[1] @@ -8828,9 +8827,9 @@ def PullInstancePaths(self, context, MaxObjectCount): context=context, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) _validate_MaxObjectCount_OpenPull(MaxObjectCount) _validate_context(context) namespace = context[1] @@ -8967,9 +8966,9 @@ def PullInstances(self, context, MaxObjectCount): context=context, MaxObjectCount=MaxObjectCount) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) _validate_MaxObjectCount_OpenPull(MaxObjectCount) _validate_context(context) namespace = context[1] @@ -9048,9 +9047,9 @@ def CloseEnumeration(self, context): method=method_name, context=context) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) _validate_context(context) self._imethodcall( @@ -9185,9 +9184,9 @@ class or the top-level classes and all of their direct and IncludeQualifiers=IncludeQualifiers, IncludeClassOrigin=IncludeClassOrigin) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -9324,9 +9323,9 @@ class or the top-level classes and all of their direct and ClassName=ClassName, DeepInheritance=DeepInheritance) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -9473,9 +9472,9 @@ class (case independent). IncludeClassOrigin=IncludeClassOrigin, PropertyList=PropertyList) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -9590,9 +9589,9 @@ def ModifyClass(self, ModifiedClass, namespace=None): namespace=namespace, ModifiedClass=ModifiedClass) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) ModifiedClass = self._iparam_class(ModifiedClass, 'ModifiedClass') @@ -9664,9 +9663,9 @@ def CreateClass(self, NewClass, namespace=None): namespace=namespace, NewClass=NewClass) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) NewClass = self._iparam_class(NewClass, 'NewClass') @@ -9737,9 +9736,9 @@ def DeleteClass(self, ClassName, namespace=None): namespace=namespace, ClassName=ClassName) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) if namespace is None and isinstance(ClassName, CIMClassName): namespace = ClassName.namespace namespace = self._iparam_namespace_from_namespace(namespace) @@ -9813,9 +9812,9 @@ def EnumerateQualifiers(self, namespace=None): method=method_name, namespace=namespace) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) result = self._imethodcall( @@ -9901,9 +9900,9 @@ def GetQualifier(self, QualifierName, namespace=None): namespace=namespace, QualifierName=QualifierName) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) QualifierName = self._iparam_string( QualifierName, 'QualifierName', required=True) @@ -9992,9 +9991,9 @@ def SetQualifier(self, QualifierDeclaration, namespace=None): namespace=namespace, QualifierDeclaration=QualifierDeclaration) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) QualifierDeclaration = self._iparam_qualifierdeclaration( QualifierDeclaration, 'QualifierDeclaration', required=True) @@ -10063,9 +10062,9 @@ def DeleteQualifier(self, QualifierName, namespace=None): namespace=namespace, QualifierName=QualifierName) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) namespace = self._iparam_namespace_from_namespace(namespace) QualifierName = self._iparam_string( QualifierName, 'QualifierName', required=True) @@ -10123,10 +10122,9 @@ def ExportIndication(self, NewIndication): method=method_name, NewIndication=NewIndication) + stats = self.statistics.start_timer(method_name) try: - stats = self.statistics.start_timer(method_name) - self._iexportcall( method_name, NewIndication=NewIndication) diff --git a/pywbem/_mof_compiler.py b/pywbem/_mof_compiler.py index 303219e2a..ad9f44293 100644 --- a/pywbem/_mof_compiler.py +++ b/pywbem/_mof_compiler.py @@ -768,11 +768,11 @@ def p_mp_createClass(p): p.parser.handle.ModifyClass(cc, ns) # Handle exceptions from ModifyClass. - except CIMError as ce: + except CIMError as ce2: if p.parser.verbose: p.parser.log( _format("Error modifying class {0}: {1}, {2}", - cc_path, ce.status_code, ce.status_description)) + cc_path, ce2.status_code, ce2.status_description)) raise MOFRepositoryError( msg=_format( "Cannot compile class {0} because the class already " @@ -780,7 +780,7 @@ def p_mp_createClass(p): "ModifyClass", cc_path), parser_token=p, - cim_error=ce) + cim_error=ce2) def p_mp_createInstance(p): diff --git a/setup.py b/setup.py index 8e3d8445a..500559563 100755 --- a/setup.py +++ b/setup.py @@ -27,9 +27,7 @@ import io import re import fnmatch -# setuptools needs to be imported before distutils in order to work. import setuptools -from distutils import log # pylint: disable=wrong-import-order # Just in case, we keep Cython usage conditional on package availability try: from Cython.Build import cythonize @@ -176,12 +174,10 @@ def run(self): args.extend(self.test_dirs) if self.dry_run: - self.announce("Dry-run: pytest {}".format(' '.join(args)), - level=log.INFO) + self.announce("Dry-run: pytest {}".format(' '.join(args)), level=1) return 0 - self.announce("pytest {}".format(' '.join(args)), - level=log.INFO) + self.announce("pytest {}".format(' '.join(args)), level=1) rc = pytest.main(args) return rc diff --git a/tests/functiontest/conftest.py b/tests/functiontest/conftest.py index 98e12b52a..555f3a410 100644 --- a/tests/functiontest/conftest.py +++ b/tests/functiontest/conftest.py @@ -302,9 +302,8 @@ def runtest(self): """ runtestcase(self.testcase) - @staticmethod - def repr_failure(excinfo, style=None): - # pylint: disable=unused-argument + def repr_failure(self, excinfo, style=None): + # pylint: disable=unused-argument,no-self-use """ Called by py.test when the runtest() method raised an exception, to provide details about the failure. @@ -891,10 +890,10 @@ def runtestcase(testcase): raise ClientTestError("Unknown operation name: %s" % op_name) # Invoke the PyWBEM operation to be tested + raised_exception = None + raised_traceback_str = None # avoid pylint warning used-before-assignment try: result = op_call(**op_args) - raised_exception = None - except Exception as exc: # pylint: disable=broad-except raised_exception = exc stringio = six.StringIO() diff --git a/tests/manualtest/run_cim_operations.py b/tests/manualtest/run_cim_operations.py index b81ac0394..6b302537c 100755 --- a/tests/manualtest/run_cim_operations.py +++ b/tests/manualtest/run_cim_operations.py @@ -4047,14 +4047,12 @@ def try_class(self, ns, class_name): Returns true if `class_name` exists """ try: - my_class = self.cimcall(self.conn.GetClass, class_name, - namespace=ns) + _ = self.cimcall(self.conn.GetClass, class_name, namespace=ns) return True except CIMError as ce: if ce.args[0] != CIM_ERR_NOT_FOUND: - print('class get %s failed' % my_class) + print('class get %s failed' % class_name) raise - return False def has_namespace(self, ns):