Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
A utility tying together multiple linting and other code quality tools
Multilint allows running several code quality tools under the same interface. This is convenient as it saves time on writing multiple linter / formatter / checker invocations every time in a project.
Since there is an existing project called
multilint
, this Multilint can be
installed as pymultilint
:
$ pip3 install pymultilint
Multilint exposes a CLI entry point:
$ multilint [paths ...]
It can optionally take a set of starting paths. There are no CLI options, as Multilint strives to have all of its configuration codified (see Configurability).
Alternatively, Multilint is also usable via its API - either the
main
method, or the
Multilint
class.
Currently, Multilint integrates the following code quality tools:
Additionally, for tools that do not currently support configuration via
pyproject.toml
(PEP-621),
Multilint exposes a configuration interface for them. This allows for
centralized codification of configuration of all code quality tools being used
in a project.
Example relevant sections from a pyproject.toml
:
[tool.autoflake]
recursive = true
in_place = true
ignore_init_module_imports = true
remove_all_unused_imports = true
remove_unused_variables = true
verbose = true
srcs_paths = ["somepackage"]
[tool.mypy]
src_paths = ["someotherpackage"]
[tool.multilint]
tool_order = [
"autoflake",
"isort",
"pyupgrade",
"black",
"mypy",
"pylint",
"pydocstyle"
]
src_paths = ["."]
At the time of writing of this README (2020-01-31), neither
Autoflake nor
Mypy
support configuration via pyproject.toml
. While support for each may or may
not be added at some point in the future, with multilint configuring these tools
is possible today.
Currently, the only two supported configuration option for Multilint are:
tool_order
, which defines the execution order of supported tools, andsrc_paths
, which specifies the source paths (can be files and directories)
for Multilint to operate on.Each integrated tool additionally supports src_dirs
as an override, in case
it is desired to target a specific tool at a different set of files
/ directories.
Support for more tools may be added by subclassing the
ToolRunner
class and overriding the
.run(...)
method.
There are some utilities provided, such as:
ToolRunner
class, as long as the tool is registered in
Tool
enum,TOOL_RUNNERS
mapping, and declaredDEFAULT_TOOL_ORDER
class variable of Multilint
.Documentation about adding support for more tools to Multilint may be added in the future.
FAQs
Utility tying multiple code quality tools together
We found that pymultilint demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.