summaryrefslogtreecommitdiff
path: root/.pylintrc
Commit message (Collapse)AuthorAgeFilesLines
* requirements: Update all requirementsBenjamin Schubert2020-12-071-0/+4
| | | | | | | | | | * .pylintrc: Disable new `raise-missing-from` check. We might want to enable that later, but it fails in many places. Let's not merge both changes here. * pluginoriginpip.py: Catch the newer thrown exception from pkg_resources. The previous one still exists, so we should be good keeping the same compatibility as before
* scheduler.py: Use threads instead of processes for jobsBenjamin Schubert2020-12-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes how the scheduler works and adapts all the code that needs adapting in order to be able to run in threads instead of in subprocesses, which helps with Windows support, and will allow some simplifications in the main pipeline. This addresses the following issues: * Fix #810: All CAS calls are now made in the master process, and thus share the same connection to the cas server * Fix #93: We don't start as many child processes anymore, so the risk of starving the machine are way less * Fix #911: We now use `forkserver` for starting processes. We also don't use subprocesses for jobs so we should be starting less subprocesses And the following highlevel changes where made: * cascache.py: Run the CasCacheUsageMonitor in a thread instead of a subprocess. * casdprocessmanager.py: Ensure start and stop of the process are thread safe. * job.py: Run the child in a thread instead of a process, adapt how we stop a thread, since we ca't use signals anymore. * _multiprocessing.py: Not needed anymore, we are not using `fork()`. * scheduler.py: Run the scheduler with a threadpool, to run the child jobs in. Also adapt how our signal handling is done, since we are not receiving signals from our children anymore, and can't kill them the same way. * sandbox: Stop using blocking signals to wait on the process, and use timeouts all the time. * messenger.py: Use a thread-local context for the handler, to allow for multiple parameters in the same process. * _remote.py: Ensure the start of the connection is thread safe * _signal.py: Allow blocking entering in the signal's context managers by setting an event. This is to ensure no thread runs long-running code while we asked the scheduler to pause. This also ensures all the signal handlers is thread safe. * source.py: Change check around saving the source's ref. We are now running in the same process, and thus the ref will already have been changed.
* Update all python dependenciesBenjamin Schubert2019-12-021-0/+2
| | | | | | | | This updates all dependencies on the project, which is mainly needed by python3.8 but can be done independentely. This also disables multiple false positive lint errors and disable a new check that we don't need.
* .pylintrc: Disable formatting messagesChandan Singh2019-11-141-1/+13
| | | | | | | Since we use Black to format our code, disable code-formatting messages from Pylint as they are already taken care of by Black. This ensures that we don't get double warnings for the same problem, and that Pylint and Black don't fight with each other over style.
* .pylintrc: Add ujson to extension-pkg-whitelistChandan Singh2019-10-281-1/+2
| | | | | | | | | | | | Add `ujson` to the `extension-pkg-whitelist` (we trust it!). Without this, `pylint` throws the following (non-fatal) warning: ``` src/buildstream/_cachekey.py:65:14: I1101: Module 'ujson' has no 'dumps' member, but source is unavailable. Consider adding this module to extension-pkg-whitelist if you want to perform analysis based on run-time introspection of living objects. (c-extension-no-member) ```
* types: Add a 'FastEnum' implementation and replace Enum by itBenjamin Schubert2019-07-291-0/+1
| | | | | | | 'Enum' has a big performance impact on the running code. Replacing it with a safe subset of functionality removes lots of this overhead without removing the benefits of using enums (safe comparisions, uniqueness)
* loadelement: Move loadelement to CythonBenjamin Schubert2019-07-261-0/+1
|
* utils: Extract 'url_directory_name' to a cython moduleBenjamin Schubert2019-07-171-0/+1
| | | | | `url_directory_name` is heavily called from any downloadable source plugin, and moving it to cython gives a more than 10x speedup
* _yaml: Split Node-related parts into 'node.pyx'Benjamin Schubert2019-07-151-0/+1
| | | | | This makes the 'Node' API public, and available for use directly for plugins.
* pylint: enable arguments-differAngelos Evripiotis2019-06-181-3/+0
|
* _loader/types: move to a cython packageBenjamin Schubert2019-06-061-0/+1
| | | | | | Types is a simple module that accounts for a few percent of a basic 'show' operation. Having it cythonized allows us to get better performance without too much wokr
* _loader/loader: cythonize valid_chars_nameBenjamin Schubert2019-06-051-1/+4
| | | | | | | | | - Create a new _loader/utils.pyx cython module for functions cythonized in the loader module. - Move valid_chars_name from loader to utils and cythonize. This function is called extensively, and easy to extract
* _yaml: Cythonize and internalize NodeBenjamin Schubert2019-05-291-1/+1
| | | | | | | | | | | Node used to be a NamedTuple that we used to access by index for speed reasons. Moving to an extension class allows us to access attributes by name, making the code easier to read and less error prone. Moreover, we do gain speed and memory by doing this move. Also fix a few places where we would not have an entire `Node` object but were instead just returning a tuple, missing some entries.
* _variables: Cythonize _internal_expandBenjamin Schubert2019-05-291-1/+1
| | | | | | | Move _variables.py to be a Cython module. `_internal_expand` is a function that is called a lot in BuildStream. It is also entirely isolated and easy to cythonize.
* lint: Fix or silence 'cyclic-import' errors and enable pylint for itBenjamin Schubert2019-04-011-5/+0
| | | | | | | | Cyclic imports can be confusing because the order in which we import dependencies can make the import fail or not. We should not rely on ordering of imports for our code. This fixes everywhere possible the imports and silence explicitely some which are not convenient or would require big refactors
* casserver.py: fix logging-format-interpolation error and enableBenjamin Schubert2019-03-211-2/+0
| | | | This enables the "logging-format-interpolation" pylint error check
* tests:lint: enable pylintBenjamin Schubert2019-03-201-1/+1
|
* plugin: bake API to get and validate a project pathTiago Gomes2018-08-021-1/+1
| | | | | | | | A project path is a path relative to a project directory. A project path can not also refer to the parent directory in the first path component, or point to symbolic links, fifos, sockets and block/character devices.
* setup.py: Add grpcio dependency and support for code generationJürg Billeter2018-07-171-2/+2
| | | | This allows code generation with ./setup.py build_grpc
* .pylintrc: Enable attribute-defined-outside-init messagesTristan Van Berkom2018-04-201-1/+0
| | | | | | | This will give us an error if an instance attribute is ever declared outside of the constructor, which usually constitutes either a bug or a violation of the coding standard, rendering code more difficult to read.
* .pylintrc: Enable linting for unused variablesTristan Van Berkom2018-04-191-1/+0
|
* .pylintrc: Enable unused-import checkerJürg Billeter2018-03-251-1/+0
|
* .pylintrc: Ensure pylint ignores gi.repository module as it dynamically adds ↵James Ennis2018-03-161-1/+1
| | | | classes
* pylint - dealt with whitespace issues and disabled pep8 warningsJames Ennis2018-03-141-2/+0
|
* pylint - dealt with simplifiable-if-statement warningJames Ennis2018-03-141-2/+0
|
* pylint - dealt with redefined-outer-name and redefined-built in warningsJames Ennis2018-03-141-4/+0
|
* pylint - dealt with redefined-argument-from-local warningJames Ennis2018-03-141-1/+0
|
* pylint - dealt with unnecessary-pass warningJames Ennis2018-03-141-1/+0
|
* pylint - dealt with import warningsJames Ennis2018-03-141-4/+0
|
* pylint - dealt with unidiomatic-typecheck warningJames Ennis2018-03-141-3/+0
|
* pylint - dealt with superfluous-parens warningJames Ennis2018-03-141-3/+0
|
* pylint - disabled no-member, bad-exception-context and ↵James Ennis2018-03-141-10/+3
| | | | catching-non-exception warnings
* pylint - dealt with len-as-condition warningJames Ennis2018-03-141-1/+0
|
* pylint - dealt with global-statement warningJames Ennis2018-03-141-1/+0
|
* pylint - dealt with dangerous-default-value warningJames Ennis2018-03-141-1/+0
|
* pylint - dealt with consider-merging-isinstance warningsJames Ennis2018-03-141-1/+0
|
* pylint - dealt with broad-except and bare-except warningsJames Ennis2018-03-141-2/+0
|
* pylint - dealt with bad-continuation warningJames Ennis2018-03-141-1/+0
|
* pylint - dealt with anomalous-backslash-in-string warningJames Ennis2018-03-141-1/+0
|
* .pylintrc: Alterations to the configuration fileJames Ennis2018-03-141-10/+5
|
* .pylintrc: Amend which warning messages are disabledJames Ennis2018-03-141-73/+96
| | | | | | NOTE: We have categorised the warning messages into two groups. Those that are of no use to us in the buildstream project and those that should be enabled at some point.
* Generate pylint configuration file (pristine file):James Ennis2018-03-141-0/+539
NOTE: pylint was installed using pip: `pip3 install pylint` and .pylintrc is the pylint configuration file which was generated with `pylint --generate-rcfile` from a fresh fedora-27 docker image.