third_party.pylibs.pylint.src/pylint
Frank Harrison b41e8d940d mapreduce| Fixes -jN for map/reduce Checkers (e.g. SimilarChecker)
This integrate the map/reduce functionality into lint.check_process().

We previously had `map` being invoked, here we add `reduce` support.

We do this by collecting the map-data by worker and then passing it to a
reducer function on the Checker object, if available - determined by
whether they confirm to the `mapreduce_checker.MapReduceMixin` mixin
interface or nor.

This allows Checker objects to function across file-streams when using
multiprocessing/-j2+. For example SimilarChecker needs to be able to
compare data across all files.

The tests, that we also add here, check that a Checker instance returns
and reports expected data and errors, such as error-messages and stats -
at least in a exit-ok (0) situation.

On a personal note, as we are copying more data across process
boundaries, I suspect that the memory implications of this might cause
issues for large projects already running with -jN and duplicate code
detection on. That said, given that it takes a long time to perform
lints of large code bases that is an issue for the [near?] future and
likely to be part of the performance work. Either way but let's get it
working first and deal with memory and perforamnce considerations later
- I say this as there are many quick wins we can make here, e.g.
file-batching, hashing lines, data compression and so on.
2021-01-02 09:56:39 +01:00
..
checkers mapreduce| Fixes -jN for map/reduce Checkers (e.g. SimilarChecker) 2021-01-02 09:56:39 +01:00
config Add __all__ in __init__.py so all import are used 2020-09-22 22:47:05 +02:00
extensions Merge pull request #3842 from luigibertaco/enhancement-3800-ignore-argument-names-on-docstring-parmaeters 2020-10-18 13:46:46 +02:00
lint mapreduce| Fixes -jN for map/reduce Checkers (e.g. SimilarChecker) 2021-01-02 09:56:39 +01:00
message
pyreverse
reporters
testutils Add constant for update file in pylint.test_utils 2021-01-01 16:42:28 +01:00
utils Add __all__ in __init__.py so all import are used 2020-09-22 22:47:05 +02:00
__init__.py Add __all__ in __init__.py so all import are used 2020-09-22 22:47:05 +02:00
__main__.py
__pkginfo__.py Back to astroid 2.4.0 2020-12-29 10:52:16 +01:00
constants.py Remove unused regular expressions import. 2020-10-03 10:51:17 -07:00
epylint.py
exceptions.py
graph.py
interfaces.py