Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pylint 2.7 and 2.8 are very slow #4120

Closed
andy-maier opened this issue Feb 22, 2021 · 17 comments · Fixed by #4565
Closed

Pylint 2.7 and 2.8 are very slow #4120

andy-maier opened this issue Feb 22, 2021 · 17 comments · Fixed by #4565
Assignees
Milestone

Comments

@andy-maier
Copy link

Steps to reproduce

  1. Use pylint 2.7.0 on our pywbem project:
git clone https://github.com/pywbem/pywbem.git
cd pywbem
make pylint

Note, the project is not using Generic types as described in issue #4079.

Current behavior

This takes 18 minutes with pylint 2.7.0 / astroid 2.5 (see also this GitHub Actions run).
It took 2 minutes with pylint 2.5.2 / astroid 2.4.0 (see also this GitHub Actions run).

Expected behavior

Get back to the time it took for pylint 2.5.2 / astroid 2.4.

pylint --version output

Slow version:
pylint 2.7.0
astroid 2.5
Python 3.8.7 (default, Feb 3 2021, 06:31:03)
[Clang 12.0.0 (clang-1200.0.32.29)]

Fast version:
pylint 2.5.2
astroid 2.4.0
Python 3.8.7 (default, Feb 3 2021, 06:31:03)
[Clang 12.0.0 (clang-1200.0.32.29)]

@andy-maier
Copy link
Author

Update: In the latest run, it is 22:42 vs 2:10.

@Pierre-Sassoulas
Copy link
Member

Thank you for reporting the issue.

@matusvalo
Copy link
Collaborator

I can confirm that this issue is present due pylint. I have tested it using astroid master and pylint 2.5.2 and the time was around 3 minutes. @andy-maier have you tried to run pylint using multiple processes (-j switch) as workaround?

@hippo91
Copy link
Contributor

hippo91 commented Apr 13, 2021

@andy-maier thanks for your report.
I can confirm there is a performance problem when linting pywbem. However it seems to be due to the similarity reporter.
For example running pylint on the tests directory takes more than 12 minutes on my laptop. However disabling the similarity reporter makes the time fall to less than a minute.

I will continue to investigate.

time pylint --disable=RP0801 tests
************* Module tests.utils
tests/utils.py:11:0: E0401: Unable to import 'pytest' (import-error)
tests/utils.py:12:0: E0401: Unable to import 'ply' (import-error)
tests/utils.py:13:0: E0611: No name 'version' in module 'packaging' (no-name-in-module)
tests/utils.py:13:0: E0401: Unable to import 'packaging.version' (import-error)
************* Module tests.unittest.pywbem_mock.conftest
tests/unittest/pywbem_mock/conftest.py:31:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem_mock.test_complexassoc
tests/unittest/pywbem_mock/test_complexassoc.py:580:9: W0511: TODO 4 Failures. PEG Returns TST_EP only. Mock ACT TST_EP and TST_LD (fixme)
tests/unittest/pywbem_mock/test_complexassoc.py:586:9: W0511: TODO: did we miss this option with all params in tests above (fixme)
tests/unittest/pywbem_mock/test_complexassoc.py:959:9: W0511: TODO did we miss this option with all params in tests above (fixme)
tests/unittest/pywbem_mock/test_complexassoc.py:1112:9: W0511: TODO fails becuase of TST_A3 class.  Should this be class and (fixme)
tests/unittest/pywbem_mock/test_complexassoc.py:1203:5: W0511: TODO this should be in conftest.py (fixme)
tests/unittest/pywbem_mock/test_complexassoc.py:32:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem_mock.test_providerregistry
tests/unittest/pywbem_mock/test_providerregistry.py:168:1: W0511: TODO: Add tests for __repr__() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:169:1: W0511: TODO: Add tests for display_registered_providers() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:170:1: W0511: TODO: Add tests for register_provider() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:171:1: W0511: TODO: Add tests for get_registered_provider() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:172:1: W0511: TODO: Add tests for provider_namespaces() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:173:1: W0511: TODO: Add tests for provider_classes() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:174:1: W0511: TODO: Add tests for provider_types() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:175:1: W0511: TODO: Add tests for provider_obj() (fixme)
tests/unittest/pywbem_mock/test_providerregistry.py:19:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem_mock.test_system_providers
tests/unittest/pywbem_mock/test_system_providers.py:249:1: W0511: TODO. Test add and remove namespaces with more variations (fixme)
tests/unittest/pywbem_mock/test_system_providers.py:30:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.server_definitions.test_server_definition_file
tests/unittest/server_definitions/test_server_definition_file.py:9:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/server_definitions/test_server_definition_file.py:10:0: E0401: Unable to import 'testfixtures' (import-error)
************* Module tests.unittest.pywbem_mock.test_inmemory_repository
tests/unittest/pywbem_mock/test_inmemory_repository.py:662:1: W0511: TODO: Tests missing: 1) use of copy parameter (fixme)
tests/unittest/pywbem_mock/test_inmemory_repository.py:22:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem_mock.test_providerdependentregistry
tests/unittest/pywbem_mock/test_providerdependentregistry.py:21:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_valuemapping
tests/unittest/pywbem/test_valuemapping.py:9:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_utils
tests/unittest/pywbem/test_utils.py:15:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_exceptions
tests/unittest/pywbem/test_exceptions.py:10:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_subscriptionmanager
tests/unittest/pywbem/test_subscriptionmanager.py:88:9: W0511: TODO AM 8/18 The inst_from_classname() method is not used. (fixme)
tests/unittest/pywbem/test_subscriptionmanager.py:301:13: W0511: TODO: ks Finish this test completely when we add other (fixme)
************* Module tests.unittest.pywbem.test_nocasedict
tests/unittest/pywbem/test_nocasedict.py:7:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_units
tests/unittest/pywbem/test_units.py:7:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_recorder
tests/unittest/pywbem/test_recorder.py:1175:5: W0511: TODO: Add testcase for reference property (fixme)
tests/unittest/pywbem/test_recorder.py:1176:5: W0511: TODO: Add testcase for embedded object property (fixme)
tests/unittest/pywbem/test_recorder.py:1177:5: W0511: TODO: Add testcase for array property (fixme)
tests/unittest/pywbem/test_recorder.py:1211:5: W0511: TODO: Add testcase for reference parameter (fixme)
tests/unittest/pywbem/test_recorder.py:1212:5: W0511: TODO: Add testcase for embedded object parameter (fixme)
tests/unittest/pywbem/test_recorder.py:1213:5: W0511: TODO: Add testcase for array parameter (fixme)
tests/unittest/pywbem/test_recorder.py:1252:5: W0511: TODO: Add testcase for array qualifier decl (fixme)
tests/unittest/pywbem/test_recorder.py:2605:5: W0511: TODO add tests for all for invoke method. (fixme)
tests/unittest/pywbem/test_recorder.py:19:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/pywbem/test_recorder.py:21:0: E0401: Unable to import 'testfixtures' (import-error)
tests/unittest/pywbem/test_recorder.py:24:0: E0401: Unable to import 'yaml' (import-error)
tests/unittest/pywbem/test_recorder.py:25:0: E0401: Unable to import 'yamlloader' (import-error)
************* Module tests.unittest.pywbem.test_statistics
tests/unittest/pywbem/test_statistics.py:11:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_warnings
tests/unittest/pywbem/test_warnings.py:10:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_cim_http
tests/unittest/pywbem/test_cim_http.py:760:1: W0511: TODO: Add unit tests for _cim_http.wbem_request(). It is already tested to (fixme)
tests/unittest/pywbem/test_cim_http.py:8:0: E0401: Unable to import 'requests' (import-error)
tests/unittest/pywbem/test_cim_http.py:9:0: E0401: Unable to import 'urllib3' (import-error)
tests/unittest/pywbem/test_cim_http.py:10:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_logging
tests/unittest/pywbem/test_logging.py:108:13: W0511: TODO compare detail_level (fixme)
tests/unittest/pywbem/test_logging.py:399:13: W0511: TODO add test for when connection param exists (fixme)
tests/unittest/pywbem/test_logging.py:30:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/pywbem/test_logging.py:41:0: E0401: Unable to import 'testfixtures' (import-error)
************* Module tests.unittest.pywbem.test_indicationlistener
tests/unittest/pywbem/test_indicationlistener.py:16:0: E0401: Unable to import 'requests' (import-error)
tests/unittest/pywbem/test_indicationlistener.py:17:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_wbemserverclass
tests/unittest/pywbem/test_wbemserverclass.py:426:5: W0511: TODO add more central instance tests (fixme)
tests/unittest/pywbem/test_wbemserverclass.py:466:1: W0511: TODO Break up tests to do individual tests for each group of methods so we can (fixme)
tests/unittest/pywbem/test_wbemserverclass.py:29:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_mof_compiler
tests/unittest/pywbem/test_mof_compiler.py:596:13: W0511: TODO The following is cim version dependent. (fixme)
tests/unittest/pywbem/test_mof_compiler.py:756:9: W0511: TODO ks 6/16why does this generate end-of-file rather than more (fixme)
tests/unittest/pywbem/test_mof_compiler.py:988:5: W0511: TODO ks apr 2016 Grow the number of functions to test property (fixme)
tests/unittest/pywbem/test_mof_compiler.py:1201:5: W0511: TODO add test for array value in inst, not scalar (fixme)
tests/unittest/pywbem/test_mof_compiler.py:1233:21: W0511: TODO: Apply issues #203, #205 to flavor parms. (fixme)
tests/unittest/pywbem/test_mof_compiler.py:1242:21: W0511: TODO: Apply issues #203, #205 to flavor parms. (fixme)
tests/unittest/pywbem/test_mof_compiler.py:1277:21: W0511: TODO: Apply issues #203, #205 to flavor parms. (fixme)
tests/unittest/pywbem/test_mof_compiler.py:1285:21: W0511: TODO: Apply issues #203, #205 to flavor parms. (fixme)
tests/unittest/pywbem/test_mof_compiler.py:10:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/pywbem/test_mof_compiler.py:12:0: E0401: Unable to import 'ply' (import-error)
************* Module tests.unittest.pywbem.test_perf_equality
tests/unittest/pywbem/test_perf_equality.py:9:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_cim_operations
tests/unittest/pywbem/test_cim_operations.py:685:1: W0511: TODO List of failure tests to be tested with following test (fixme)
tests/unittest/pywbem/test_cim_operations.py:12:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_cim_xml
tests/unittest/pywbem/test_cim_xml.py:12:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem_mock.test_wbemconnection_mock
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:1457:13: W0511: TODO: There are no instances with qualifiers in tests so (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:4385:34: W0511: TODO: Fails in test resolve (override) (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:5381:17: W0511: TODO: There are no tests instances with qualifiers in the (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:5450:9: W0511: TODO: This test has been recreated in test_getinstance.  It is (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:6174:9: W0511: TODO: Future remove this test. (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:6730:13: W0511: TODO: This test implemented for this operation but not others (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:7103:13: W0511: TODO confirm we are testing for all assoc instances.  We (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:8590:13: W0511: TODO: this is a limited test today.  Need to expand so (fixme)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:50:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:51:0: E0401: Unable to import 'nocaselist' (import-error)
tests/unittest/pywbem_mock/test_wbemconnection_mock.py:52:0: E0401: Unable to import 'testfixtures' (import-error)
************* Module tests.unittest.pywbem.test_tupletree
tests/unittest/pywbem/test_tupletree.py:59:5: W0511: TODO: Cannot handle comments, cdata, processing instructions, etc. (fixme)
tests/unittest/pywbem/test_tupletree.py:11:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_itermethods
tests/unittest/pywbem/test_itermethods.py:2481:9: W0511: TODO ks: This assert disabled. (fixme)
tests/unittest/pywbem/test_itermethods.py:24:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.pywbem.test_cim_types
tests/unittest/pywbem/test_cim_types.py:907:1: W0511: TODO: Add testcases for get_local_utcoffset() (fixme)
tests/unittest/pywbem/test_cim_types.py:908:1: W0511: TODO: Add testcases for now() (fixme)
tests/unittest/pywbem/test_cim_types.py:909:1: W0511: TODO: Add testcases for fromtimestamp() (fixme)
tests/unittest/pywbem/test_cim_types.py:1516:5: W0511: TODO: Create init testcaes for CIM types and move this check to there. (fixme)
tests/unittest/pywbem/test_cim_types.py:1704:1: W0511: TODO: Add tests for atomic_to_cim_xml() (fixme)
tests/unittest/pywbem/test_cim_types.py:11:0: E0401: Unable to import 'pytz' (import-error)
tests/unittest/pywbem/test_cim_types.py:12:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.utils.wbemserver_mock
tests/unittest/utils/wbemserver_mock.py:103:5: W0511: TODO: We may expand this for more scoping tests. (fixme)
tests/unittest/utils/wbemserver_mock.py:321:9: W0511: TODO modify this when issue #1540  (resolve qualifiers)fixed (fixme)
tests/unittest/utils/wbemserver_mock.py:342:9: W0511: TODO end of temp code (fixme)
tests/unittest/utils/wbemserver_mock.py:382:13: W0511: TODO replace the setting of key qualifier with the commented (fixme)
tests/unittest/utils/wbemserver_mock.py:407:13: W0511: TODO end of code to drop for #1540 fix (fixme)
tests/unittest/utils/wbemserver_mock.py:475:9: W0511: TODO this is simplistic form and only builds one instance (fixme)
tests/unittest/utils/wbemserver_mock.py:483:13: W0511: TODO we are fixing the host name here.  Not good (fixme)
************* Module tests.unittest.utils.pytest_extensions
tests/unittest/utils/pytest_extensions.py:14:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.resourcetest.test_memory_utils
tests/unittest/resourcetest/test_memory_utils.py:10:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.unittest.utils.validate
tests/unittest/utils/validate.py:69:0: E0401: Unable to import 'formencode' (import-error)
************* Module tests.manualtest.run_enum_performancesimple
tests/manualtest/run_enum_performancesimple.py:20:0: E0401: Unable to import 'tabulate' (import-error)
************* Module tests.manualtest.run_response_performance
tests/manualtest/run_response_performance.py:16:0: E0401: Unable to import 'tabulate' (import-error)
tests/manualtest/run_response_performance.py:17:0: E0401: Unable to import 'pyinstrument' (import-error)
************* Module tests.manualtest.run_enum_performance
tests/manualtest/run_enum_performance.py:20:0: E0401: Unable to import 'tabulate' (import-error)
************* Module tests.unittest.pywbem.test_tupleparse
tests/unittest/pywbem/test_tupleparse.py:8674:9: W0511: TODO 1/18 AM: Should this not be rejected as invalid type? (fixme)
tests/unittest/pywbem/test_tupleparse.py:7:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/pywbem/test_tupleparse.py:8:0: E0611: No name 'version' in module 'packaging' (no-name-in-module)
tests/unittest/pywbem/test_tupleparse.py:8:0: E0401: Unable to import 'packaging.version' (import-error)
************* Module tests.end2endtest.test_profile_snia_server
tests/end2endtest/test_profile_snia_server.py:197:13: W0511: TODO 2018-12 AM: This should be brought back to SMI-S. (fixme)
tests/end2endtest/test_profile_snia_server.py:212:13: W0511: TODO 2018-12 AM: This should be brought back to SMI-S. (fixme)
************* Module tests.end2endtest.test_profile_generic
tests/end2endtest/test_profile_generic.py:8:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.end2endtest.test_profile_snia_smis
tests/end2endtest/test_profile_snia_smis.py:7:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.end2endtest.utils.pytest_extensions
tests/end2endtest/utils/pytest_extensions.py:9:0: E0401: Unable to import 'pytest' (import-error)
tests/end2endtest/utils/pytest_extensions.py:10:0: E0401: Unable to import 'yaml' (import-error)
************* Module tests.end2endtest.utils.server_definition_file
tests/end2endtest/utils/server_definition_file.py:14:0: E0401: Unable to import 'yaml' (import-error)
tests/end2endtest/utils/server_definition_file.py:15:0: E0401: Unable to import 'yamlloader' (import-error)
************* Module tests.end2endtest.utils.assertions
tests/end2endtest/utils/assertions.py:88:5: W0511: TODO 2018-12 AM: Improve performance by avoiding EI on each path (fixme)
************* Module tests.resourcetest.random_objects
tests/resourcetest/random_objects.py:142:9: W0511: TODO: Consider value range of type (fixme)
tests/resourcetest/random_objects.py:145:9: W0511: TODO: Consider value range of type (fixme)
tests/resourcetest/random_objects.py:210:9: W0511: TODO: Make namespace flexible (fixme)
************* Module tests.resourcetest.test_enuminst
tests/resourcetest/test_enuminst.py:6:0: E0401: Unable to import 'pytest' (import-error)
************* Module tests.leaktest.test_leaks_minidom
tests/leaktest/test_leaks_minidom.py:22:0: E0401: Unable to import 'pytest' (import-error)
tests/leaktest/test_leaks_minidom.py:23:0: E0401: Unable to import 'yagot' (import-error)
************* Module tests.leaktest.test_leaks_elementtree
tests/leaktest/test_leaks_elementtree.py:8:0: E0401: Unable to import 'yagot' (import-error)
************* Module tests.leaktest.test_leaks_dict
tests/leaktest/test_leaks_dict.py:13:0: E0401: Unable to import 'pytest' (import-error)
tests/leaktest/test_leaks_dict.py:14:0: E0401: Unable to import 'yagot' (import-error)
************* Module tests.leaktest.test_leaks_cim_obj
tests/leaktest/test_leaks_cim_obj.py:8:0: E0401: Unable to import 'pytest' (import-error)
tests/leaktest/test_leaks_cim_obj.py:9:0: E0401: Unable to import 'yagot' (import-error)
************* Module tests.leaktest.test_leaks_cim_xml
tests/leaktest/test_leaks_cim_xml.py:7:0: E0401: Unable to import 'pytest' (import-error)
tests/leaktest/test_leaks_cim_xml.py:8:0: E0401: Unable to import 'yagot' (import-error)
************* Module tests.leaktest.test_leaks_statistics
tests/leaktest/test_leaks_statistics.py:7:0: E0401: Unable to import 'pytest' (import-error)
tests/leaktest/test_leaks_statistics.py:8:0: E0401: Unable to import 'yagot' (import-error)
************* Module tests.functiontest.conftest
tests/functiontest/conftest.py:732:21: W0511: TODO 6/18 AM: Loop above should probably be on elems (fixme)
tests/functiontest/conftest.py:1124:13: W0511: TODO 2016/07 AM: Improve the presentation of the difference (fixme)
tests/functiontest/conftest.py:1171:13: W0511: TODO 2016/07 AM: Improve the presentation of the diff. (fixme)
tests/functiontest/conftest.py:1176:9: W0511: TODO redo as indexed loop to compare all items. (fixme)
tests/functiontest/conftest.py:145:0: E0401: Unable to import 'yaml' (import-error)
tests/functiontest/conftest.py:146:0: E0401: Unable to import 'yamlloader' (import-error)
tests/functiontest/conftest.py:147:0: E0401: Unable to import 'pytest' (import-error)
tests/functiontest/conftest.py:148:0: E0401: Unable to import 'requests_mock' (import-error)
tests/functiontest/conftest.py:149:0: E0401: Unable to import 'requests' (import-error)
tests/functiontest/conftest.py:238:4: C0116: Missing function or method docstring (missing-function-docstring)
tests/functiontest/conftest.py:232:0: R0903: Too few public methods (1/2) (too-few-public-methods)
************* Module tests.manualtest.run_cim_operations
tests/manualtest/run_cim_operations.py:92:1: W0511: TODO ks Nov 2016 Create decerators for both this and the OpenPegasus (fixme)
tests/manualtest/run_cim_operations.py:227:9: W0511: TODO ks aug 17. FUTURE This should be integrated into logging (fixme)
tests/manualtest/run_cim_operations.py:758:9: W0511: TODO Apparently ks 5/16 Pegasus did not implement all properties (fixme)
tests/manualtest/run_cim_operations.py:802:9: W0511: TODO Apparently ks 5/16 Pegasus did not implement all properties (fixme)
tests/manualtest/run_cim_operations.py:1199:9: W0511: TODO ks 5/16 why does pegasus return this particular err. (fixme)
tests/manualtest/run_cim_operations.py:1379:5: W0511: TODO this only returns single instance. (fixme)
tests/manualtest/run_cim_operations.py:1449:13: W0511: TODO: For now, disabled test for class name of associated insts. (fixme)
tests/manualtest/run_cim_operations.py:1523:13: W0511: TODO ks 5/30 2016 add tests here (fixme)
tests/manualtest/run_cim_operations.py:1572:13: W0511: TODO: For now, disabled test for class name of associated insts. (fixme)
tests/manualtest/run_cim_operations.py:1648:13: W0511: TODO ks 5/30 2016 add tests here (fixme)
tests/manualtest/run_cim_operations.py:1686:13: W0511: TODO: For now, disabled test for class name of associated insts. (fixme)
tests/manualtest/run_cim_operations.py:1718:9: W0511: TODO ks This not right. we are going back to associators (fixme)
tests/manualtest/run_cim_operations.py:1760:13: W0511: TODO ks 5/30 2016 add tests here (fixme)
tests/manualtest/run_cim_operations.py:1812:13: W0511: TODO: For now, disabled test for class name of associated insts. (fixme)
tests/manualtest/run_cim_operations.py:1886:13: W0511: TODO ks 5/30 2016 add tests here (fixme)
tests/manualtest/run_cim_operations.py:2358:13: W0511: TODO add get and test for change. (fixme)
tests/manualtest/run_cim_operations.py:2528:5: W0511: TODO specalize this one for OpenPegasus (fixme)
tests/manualtest/run_cim_operations.py:2542:9: W0511: TODO ks Mar 2017. Returns value 1 rather than zero for some reason (fixme)
tests/manualtest/run_cim_operations.py:2548:9: W0511: TODO: Call with empty arrays (fixme)
tests/manualtest/run_cim_operations.py:2550:9: W0511: TODO: Call with weird VALUE.REFERENCE child types: (fixme)
tests/manualtest/run_cim_operations.py:2577:13: W0511: TODO: For now, disabled test for class name of associated insts. (fixme)
tests/manualtest/run_cim_operations.py:2583:9: W0511: TODO: check return values (fixme)
tests/manualtest/run_cim_operations.py:2637:5: W0511: TODO ks dec/16 why returning CIM_Collection (fixme)
tests/manualtest/run_cim_operations.py:2638:5: W0511: TODO ks dec/16 why do we not get return when we user resultrole (fixme)
tests/manualtest/run_cim_operations.py:2750:13: W0511: TODO: For now, disabled test for class name of associated insts. (fixme)
tests/manualtest/run_cim_operations.py:2895:9: W0511: TODO. This is really broken (fixme)
tests/manualtest/run_cim_operations.py:2907:13: W0511: TODO: For now, disabled test for class name of referencing insts. (fixme)
tests/manualtest/run_cim_operations.py:3104:9: W0511: TODO add these tests (fixme)
tests/manualtest/run_cim_operations.py:3120:9: W0511: TODO validate qualifiers in properties. here or elsewhere (fixme)
tests/manualtest/run_cim_operations.py:3125:9: W0511: TODO validate parameters in methods (fixme)
tests/manualtest/run_cim_operations.py:3168:9: W0511: TODO could we assert some size limit here. Probably Not (fixme)
tests/manualtest/run_cim_operations.py:3307:9: W0511: TODO extend for options of Deepinheritance, LocalOnly, (fixme)
tests/manualtest/run_cim_operations.py:3871:9: W0511: TODO account for openpegasus only response of returning (fixme)
tests/manualtest/run_cim_operations.py:4076:9: W0511: TODO ks 5/16 figure out why we could not get instances of a class (fixme)
tests/manualtest/run_cim_operations.py:4194:9: W0511: TODO create an instance write it, get it and test results (fixme)
tests/manualtest/run_cim_operations.py:4249:13: W0511: TODO Create a new instance on server and test return using (fixme)
tests/manualtest/run_cim_operations.py:4372:13: W0511: TODO change to create function to do the hierarchy search (fixme)
tests/manualtest/run_cim_operations.py:5580:1: W0511: TODO confirm that this should be pegasus (fixme)
tests/manualtest/run_cim_operations.py:6163:9: W0511: TODO modify this so it is not Pegasus dependent (fixme)
tests/manualtest/run_cim_operations.py:6194:21: W0511: TODO: ks Finish this test completely when we add other (fixme)
tests/manualtest/run_cim_operations.py:6221:9: W0511: TODO ks 6/16 add more tests including: multiple subscriptions, filters (fixme)
tests/manualtest/run_cim_operations.py:6428:9: W0511: TODO Future: modify this so it is not Pegasus dependent (fixme)
tests/manualtest/run_cim_operations.py:6505:13: W0511: TODO should we context this sub_mgr (fixme)
tests/manualtest/run_cim_operations.py:6712:17: W0511: TODO Pegasus Issue.  Why does this code cause 8 indications (fixme)
************* Module tests.unittest.pywbem.test_cim_obj
tests/unittest/pywbem/test_cim_obj.py:11931:5: W0511: TODO: Decide whether mutable child objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:11952:5: W0511: TODO: Decide whether value objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:13742:9: W0511: TODO: Clarify whether invalid embedded_object should be checked (fixme)
tests/unittest/pywbem/test_cim_obj.py:18820:5: W0511: TODO: Decide whether mutable child objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:18833:5: W0511: TODO: Decide whether value objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:22940:9: W0511: TODO 01/18 AM Enable test case once char16 produces single quotes (fixme)
tests/unittest/pywbem/test_cim_obj.py:30740:5: W0511: TODO: Decide whether mutable child objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:30785:5: W0511: TODO: Decide whether value objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:32625:9: W0511: TODO: Clarify whether invalid embedded_object should be checked (fixme)
tests/unittest/pywbem/test_cim_obj.py:37828:5: W0511: TODO: Decide whether mutable child objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:37841:5: W0511: TODO: Decide whether value objects should be copied, and add test: (fixme)
tests/unittest/pywbem/test_cim_obj.py:43508:28: W0511: TODO 01/18 AM Enable once char16 uses single quotes (fixme)
tests/unittest/pywbem/test_cim_obj.py:20:0: E0401: Unable to import 'pytest' (import-error)
tests/unittest/pywbem/test_cim_obj.py:22:0: E0611: No name 'version' in module 'packaging' (no-name-in-module)
tests/unittest/pywbem/test_cim_obj.py:22:0: E0401: Unable to import 'packaging.version' (import-error)


Report
======
16616 statements analysed.

Statistics by type
------------------

+---------+-------+-----------+-----------+------------+---------+
|type     |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
|module   |81     |81         |=          |100.00      |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|class    |157    |157        |=          |90.45       |1.27     |
+---------+-------+-----------+-----------+------------+---------+
|method   |860    |860        |=          |95.47       |0.12     |
+---------+-------+-----------+-----------+------------+---------+
|function |588    |588        |=          |98.98       |0.34     |
+---------+-------+-----------+-----------+------------+---------+



External dependencies
---------------------
::

    pywbem (tests.unittest.pywbem.test_cim_obj)
      \-_cim_constants (tests.unittest.pywbem.test_mof_compiler)
      \-_cim_http (tests.unittest.pywbem.test_cim_http)
      \-_cim_obj (tests.unittest.pywbem.test_cim_obj)
      \-_cim_operations (tests.unittest.pywbem.test_itermethods)
      \-_cim_types (tests.unittest.pywbem.test_cim_obj)
      \-_cim_xml (tests.leaktest.test_leaks_cim_xml)
      \-_cliutils (tests.manualtest.run_enum_performance)
      \-_logging (tests.unittest.pywbem.test_logging)
      \-_mof_compiler (tests.manualtest.run_cim_operations)
      \-_nocasedict (tests.unittest.pywbem.test_cim_obj)
      \-_recorder (tests.unittest.pywbem.test_cim_operations)
      \-_subscription_manager (tests.manualtest.run_cim_operations)
      \-_tupleparse (tests.unittest.pywbem.test_tupleparse)
      \-_tupletree (tests.unittest.pywbem.test_tupleparse)
      \-_utils (tests.unittest.pywbem.test_cim_obj)
      \-config (tests.unittest.pywbem.test_itermethods)
    pywbem_mock (tests.resourcetest.random_objects)
      \-_inmemoryrepository (tests.unittest.pywbem_mock.test_inmemory_repository)
      \-_wbemconnection_mock (tests.manualtest.run_uprint)
    tests 
      \-end2endtest 
      | \-utils 
      |   \-assertions (tests.end2endtest.utils.pytest_extensions)
      |   \-pytest_extensions (tests.end2endtest.test_profile_snia_smis)
      |   \-server_definition_file (tests.end2endtest.utils.pytest_extensions)
      |   \-utils (tests.end2endtest.utils.assertions)
      \-functiontest 
      | \-conftest (tests.unittest.functiontest.test_conftest)
      \-resourcetest 
      | \-memory_utils (tests.resourcetest.test_enuminst)
      | \-random_objects (tests.resourcetest.test_enuminst)
      | \-resource_measurement (tests.resourcetest.test_enuminst)
      | \-timers (tests.resourcetest.resource_measurement)
      \-unittest 
      | \-utils 
      |   \-dmtf_mof_schema_def (tests.unittest.utils.wbemserver_mock)
      |   \-pytest_extensions (tests.unittest.pywbem.test_cim_obj)
      |   \-unichr2 (tests.manualtest.run_uprint)
      |   \-unittest_extensions (tests.manualtest.run_cim_operations)
      |   \-validate (tests.unittest.pywbem.test_cim_obj)
      |   \-wbemserver_mock (tests.unittest.pywbem.test_wbemserverclass)
      \-utils (tests.unittest.pywbem.test_cim_obj)



Raw metrics
-----------

+----------+-------+------+---------+-----------+
|type      |number |%     |previous |difference |
+==========+=======+======+=========+===========+
|code      |76883  |65.37 |76883    |=          |
+----------+-------+------+---------+-----------+
|docstring |24322  |20.68 |24322    |=          |
+----------+-------+------+---------+-----------+
|comment   |7057   |6.00  |7057     |=          |
+----------+-------+------+---------+-----------+
|empty     |9348   |7.95  |9348     |=          |
+----------+-------+------+---------+-----------+



Messages by category
--------------------

+-----------+-------+---------+-----------+
|type       |number |previous |difference |
+===========+=======+=========+===========+
|convention |1      |1        |=          |
+-----------+-------+---------+-----------+
|refactor   |1      |1        |=          |
+-----------+-------+---------+-----------+
|warning    |128    |128      |=          |
+-----------+-------+---------+-----------+
|error      |79     |79       |=          |
+-----------+-------+---------+-----------+



% errors / warnings by module
-----------------------------

+--------------------------------------------------------------+------+--------+---------+-----------+
|module                                                        |error |warning |refactor |convention |
+==============================================================+======+========+=========+===========+
|tests.functiontest.conftest                                   |6.33  |3.12    |100.00   |100.00     |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_recorder                           |5.06  |6.25    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.utils                                                   |5.06  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_cim_obj                            |3.80  |9.38    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.test_wbemconnection_mock           |3.80  |6.25    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_tupleparse                         |3.80  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_cim_http                           |3.80  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_mof_compiler                       |2.53  |6.25    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_cim_types                          |2.53  |3.91    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_logging                            |2.53  |1.56    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.server_definitions.test_server_definition_file |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_indicationlistener                 |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.manualtest.run_response_performance                     |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.leaktest.test_leaks_statistics                          |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.leaktest.test_leaks_minidom                             |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.leaktest.test_leaks_dict                                |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.leaktest.test_leaks_cim_xml                             |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.leaktest.test_leaks_cim_obj                             |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.end2endtest.utils.server_definition_file                |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.end2endtest.utils.pytest_extensions                     |2.53  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.test_providerregistry              |1.27  |6.25    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.test_complexassoc                  |1.27  |3.91    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_wbemserverclass                    |1.27  |1.56    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.test_system_providers              |1.27  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.test_inmemory_repository           |1.27  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_tupletree                          |1.27  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_itermethods                        |1.27  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_cim_operations                     |1.27  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.utils.validate                                 |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.utils.pytest_extensions                        |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.resourcetest.test_memory_utils                 |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.test_providerdependentregistry     |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem_mock.conftest                           |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_warnings                           |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_valuemapping                       |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_utils                              |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_units                              |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_statistics                         |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_perf_equality                      |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_nocasedict                         |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_exceptions                         |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_cim_xml                            |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.resourcetest.test_enuminst                              |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.manualtest.run_enum_performancesimple                   |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.manualtest.run_enum_performance                         |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.leaktest.test_leaks_elementtree                         |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.end2endtest.test_profile_snia_smis                      |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.end2endtest.test_profile_generic                        |1.27  |0.00    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.manualtest.run_cim_operations                           |0.00  |34.38   |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.utils.wbemserver_mock                          |0.00  |5.47    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.resourcetest.random_objects                             |0.00  |2.34    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.unittest.pywbem.test_subscriptionmanager                |0.00  |1.56    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.end2endtest.test_profile_snia_server                    |0.00  |1.56    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+
|tests.end2endtest.utils.assertions                            |0.00  |0.78    |0.00     |0.00       |
+--------------------------------------------------------------+------+--------+---------+-----------+



Messages
--------

+---------------------------+------------+
|message id                 |occurrences |
+===========================+============+
|fixme                      |128         |
+---------------------------+------------+
|import-error               |76          |
+---------------------------+------------+
|no-name-in-module          |3           |
+---------------------------+------------+
|too-few-public-methods     |1           |
+---------------------------+------------+
|missing-function-docstring |1           |
+---------------------------+------------+




------------------------------------------------------------------
Your code has been rated at 9.68/10 (previous run: 9.68/10, +0.00)


real	0m57,272s
user	2m7,341s
sys	0m0,729s

@hippo91 hippo91 self-assigned this Apr 18, 2021
@hippo91
Copy link
Contributor

hippo91 commented Apr 18, 2021

@andy-maier after some investigations i don't think there is a bug in the way the similarity checker works.
Before the merge of #4007 this checker did not give same results depending on the number of processes involved.
This was clearly a bug. From what i understand the similarity checking was restricted to the files that were analyzed by the same process. Thus the results were not accurate nor reproducible.
The bug has been fixed thanks to the #4007. Now the check of all files is made by a single process. This explains why on large codebase, as yours, it is so long.
For example when running the checker on the directory tests/unittest, there are 47 files. Each file must be checked against all others which leads to more than thousand checks. Of course the situation get worse as the number of files to compare increases.
I know this answer is not very satisfying. I have got some ideas to improve the situation but it will take time to develop.
I'm working on it.

@andy-maier
Copy link
Author

@matusvalo @hippo91 We are running with jobs=4 in the pylint config file, and I verified with the Activity Monitor on macOS that it has 4 Python processes running. 3 of them run for 2 minutes or so, and one of them runs for the rest of the long time. I suppose that is the one that performs the similarities checking. After the 3 processes have terminated, no more messages are displayed, until the termination of the last one causes the report to be displayed. That all seems to match what you said about similarities checking.

@andy-maier
Copy link
Author

andy-maier commented Apr 25, 2021

To have a better workaround than pinning to <2.7.0, I tried to disable the similarities checker but so far was not able to achieve that.

Here is what I tried (all changes are relative to the current master branch):

  • adding similarities to the disable statement in the config file
  • adding --disable=similarities in the command line
  • adding --disable=all --enable=async ... specifying all checkers with --enable= options, except for similarities

How can I disable the similarities checker?

@Pierre-Sassoulas Pierre-Sassoulas changed the title Pylint 2.7.0 is very slow Pylint 2.7 and 2.8 are very slow Apr 25, 2021
@hippo91
Copy link
Contributor

hippo91 commented Apr 25, 2021

@andy-maier you can try the option --disable=RP0801. It will disable the similarity reporter and should improve the efficiency.

@hadess
Copy link

hadess commented Apr 27, 2021

@andy-maier you can try the option --disable=RP0801. It will disable the similarity reporter and should improve the efficiency.

I've tried this, and saw the same speed problem. Takes more than the 2 minute build system timeout to run the test on 2k lines of source.

@hippo91
Copy link
Contributor

hippo91 commented Apr 28, 2021

@hadess can you give me the exact command you launched please?

@hadess
Copy link

hadess commented Apr 28, 2021

$ time /usr/bin/pylint-3 -d C0111 -d W0511 -d F0401 -d C0326 -d bad-continuation --disable=RP0801 opensubtitles.py

--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)


real	0m12.306s
user	0m12.021s
sys	0m0.266s

Files are from https://gitlab.gnome.org/GNOME/totem/-/tree/master/src/plugins/opensubtitles
python3-pylint-2.4.4-3.fc32.noarch took about 1.2 seconds to do the same job. Using python3-pylint-2.6.0-3.fc34.noarch here.

For reasons I do not understand (aggressive multi-jobs from meson? cache thrashing?) running those tests in meson's test suite times out after 120 seconds for the above.

@hadess
Copy link

hadess commented Apr 28, 2021

(and I just realised that I'm using 2.6.0 and that the issue is about 2.7 and later... Feel free to disregard)

@Pierre-Sassoulas
Copy link
Member

The more checks we add the slower pylint get, this is a problem that started before 2.7 and will get bigger and bigger with more functionality added. But there's also genuine recursion issues that make pylint abnormally long or even unusable (#3602 for example).

@andy-maier
Copy link
Author

@andy-maier you can try the option --disable=RP0801. It will disable the similarity reporter and should improve the efficiency.

For those reading this issue in the future: Using pylint 2.9.2, I tried disabling "R0801" in the disable parameter of the pylintrc file, and that worked (it disabled the similarity checker and had the normal elapsed runtime). Disabling "RP0801" did not work, the similarity checker was active and the elapsed runtime was long.

@hippo91
Copy link
Contributor

hippo91 commented Aug 8, 2021

@andy-maier thanks for the hint. The Similarity checker have been deeply reworked and its performance improved thanks to #4565. So if you use the main branch of pylint you don't have to disable the Similarity checker.

gnomesysadmins pushed a commit to GNOME/totem that referenced this issue Aug 31, 2021
Disable "similarity" report in pylint so as to fix the pathological
speed regression that caused most of the checks to timeout.

See pylint-dev/pylint#4120 (comment)
@andy-maier
Copy link
Author

Just for info: PR #4565 was released in pylint 2.10.

@Pierre-Sassoulas Pierre-Sassoulas added this to the 2.10.0 milestone Jun 12, 2022
gnomesysadmins pushed a commit to GNOME/totem that referenced this issue Jun 22, 2022
Disable "similarity" report in pylint so as to fix the pathological
speed regression that caused most of the checks to timeout.

See pylint-dev/pylint#4120 (comment)
@hadess
Copy link

hadess commented Jun 22, 2022

For reasons I do not understand (aggressive multi-jobs from meson? cache thrashing?) running those tests in meson's test suite times out after 120 seconds for the above.

Thanks for the bump, this made me realise that all this time, the problem was caused by the way the test suite was run. meson sets MALLOC_PERTURB_ to a non-zero value by default in tests which had the effect of making a pylint run take 200 seconds instead of around 15.

Disabling that envvar fixed the problem for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging a pull request may close this issue.

5 participants