Linter for Machine Learning projects
Project description
mllint
— Linter for Machine Learning projects
mllint
is a command-line utility to evaluate the quality of Machine Learning (ML) projects by means of static analysis of the project's repository. It measures the project's adherence to ML best practices, as collected and deduced from SE4ML and Google's Rules for ML.
Installing mllint
mllint
is compiled for Linux, MacOS and Windows, both 64 and 32 bit x86 (except MacOS), as well as 64-bit ARM on Linux and MacOS (Apple M1).
mllint
is published to PyPI, so it can be installed using pip
:
pip install mllint
Running mllint
To run mllint
in its default configuration, use one of the following commands:
# Run `mllint` on the project in the current folder
mllint
# Run `mllint` on the project in projects/my-ml-project
mllint projects/my-ml-project
Of course, feel free to explore mllint help
for more information about its commands.
mllint
will analyse your project and create a Markdown-formatted report of its analysis. By default, this will be pretty printed to your terminal.
If you instead prefer to export the raw Markdown text to a file, use the --output
or -o
flag and provide a filename. Using -
as the filename prints the raw Markdown directly to your terminal.
# Prints the Markdown-formatted report of your project to 'report.md'
mllint --output report.md
# Prints the raw Markdown report to your terminal
mllint -o -
See docs/example-report.md for an example of a report that mllint
generates.
Linters and rules
To list all available or all enabled linting rules, use one of the following commands:
# List all available (implemented) linting rules
mllint list all
# List only the enabled rules for the project in the current folder.
mllint list enabled
# or for a project in projects/my-ml-project
mllint list enabled projects/my-ml-project
To learn more about a certain rule or category, use mllint describe
along with the slug of the category or rule. The slug is the lowercased, dashed text that is often or always displayed next to the category or rule. This is the same slug as you use to enable or disable rules.
As an example:
# Describe the Version Control category. This will also list the rules that it checks.
mllint describe version-control
# Describe the rule on DVC usage in the Version Control category
mllint describe version-control/data/dvc
Configuration
YAML
mllint
can be configured using a .mllint.yml
file that should be placed at the root of the project directory. This is a YAML file in which you can configure specific settings for various linting rules, as well as disable specific rules or even entire categories if you wish.
An example .mllint.yml
that disables some rules looks as follows:
rules:
disabled:
- version-control/code/git
- dependency-management/single
TOML
Alternatively, if no .mllint.yml
exists, mllint
searches the pyproject.toml
file in the root of the project for a [tool.mllint]
section. TOML has a slightly different syntax, but the structure is otherwise the same as the config in the YAML file. The example below is identical to the YAML example above.
[tool.mllint]
[tool.mllint.rules]
disabled = ["version-control/code/git", "dependency-management/single"]
Here are some useful commands related to configuration:
# Print the configuration of the project in the current folder
mllint config
# Print the configuration of the project in projects/my-ml-project
mllint config projects/my-ml-project
# Print the default configuration (unless there's a folder called 'default' in the current dir)
mllint config default
# Create a valid `.mllint.yml` file with the default configuration
mllint config default -q > .mllint.yml
Getting Started (development)
Clone this repository and run go run .
in the root of this repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for mllint-0.7.1-pp37-pypy37_pp73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ea59b1c0988fdc07f26ad074fdc74edc0111cc33a60eac2d825f232ddf3aa31 |
|
MD5 | 44a840b8b102963b941343d0a485f376 |
|
BLAKE2b-256 | b366aff93840331ec6fd3a873516c1b4805cbed53c73a7db366d38135893ecb3 |
Hashes for mllint-0.7.1-pp37-pypy37_pp73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7518d59a018cc343660db0e05e7294729425cc6fa4426f7cf0fba41c39ff476b |
|
MD5 | f914cbfc65c9f1ddabecfef14bf7861a |
|
BLAKE2b-256 | 3e6e98d46fd37dab50b76f7a6ef49d711707aadfface98e713455644e91b7e44 |
Hashes for mllint-0.7.1-pp37-pypy37_pp73-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 982ebf6356e42bed21399808dfc050698cd0d7f8425cfec90e1066328ac827d4 |
|
MD5 | b4a135a13b29b7e7959d0b3f2557e5fd |
|
BLAKE2b-256 | cd1598d97bee1a4b37ecbcd05379cab40e79f4bf6ea07e428a29527f235fb049 |
Hashes for mllint-0.7.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ac5280db0d96696fd26bad61e5f891018d0adf64fe9d0ca48a3897ec5a9a27e |
|
MD5 | f00d5deb79d38ed956cf599f449283e2 |
|
BLAKE2b-256 | d79419c65e2da6d5827138ceb2b0a3f63cd149c394609782e21b56eeb1f2825a |
Hashes for mllint-0.7.1-pp36-pypy36_pp73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1aace6de71b5e6e81bf470a3f10b7f3396d64dcf66232b794dca56c10963667 |
|
MD5 | 160192ea0c726431f2d9f43056186cdd |
|
BLAKE2b-256 | 16f850a8ed53e0c5734e393ea44f57541f64a27774e162da8df0d0df52bf8beb |
Hashes for mllint-0.7.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 666901b72286bac5ce9a8e4ede6ccdd166c5ee698cf566314761eb1f22125e25 |
|
MD5 | 3fd0623c8d1d1eded6297563d9a46c4a |
|
BLAKE2b-256 | 54c7ac2015dba7ddbfd4cf6a06ad070effa62ad34457e8c4405ef566284b9036 |
Hashes for mllint-0.7.1-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d134da5af5865d7df7545785c69d5bf9c6f7c1d0357c4c2042b6740ab1a1e7f3 |
|
MD5 | d25eeee24544a38003be635b2ac54eb1 |
|
BLAKE2b-256 | bda61856497100b683b41fa773ca8dca84540682c6b7fe2db549929da513edd1 |
Hashes for mllint-0.7.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79c03a43234041c58533ce66125392ac00c1b067b6b2828ed35cb41d854d5b1f |
|
MD5 | 15bb51fc02f94b19e33dbea3b405a338 |
|
BLAKE2b-256 | 7633b628bf3b0ba2a77810e70600416a74ef893b2361c2bb27ac25eb18256820 |
Hashes for mllint-0.7.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 247ef2175ac7040f957682f9bda63fa107893a39dea52725ef119bd85c9f0899 |
|
MD5 | d28a0eb33263133d7e6bed56f045f4cf |
|
BLAKE2b-256 | 17c9a5baa6ed4009b5d3cee01c9736b3694d0052f12773f8796d457cd585c693 |
Hashes for mllint-0.7.1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e20e4409f227d1edd6025a2fa499dbf4e04d365e90bcd5539ade894fdd01857 |
|
MD5 | c17c4faefdb4e5bebc8d709ebac6fc50 |
|
BLAKE2b-256 | 6d90f187b7b06cedc39e661eb661f8342ba758629208738c70f41448e79538b7 |
Hashes for mllint-0.7.1-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4977c0639d68f1b39720b47187f6373f3ba01c90d079cd1715a82efad90693f4 |
|
MD5 | e5d6b5b25668bec386231112cbfed5c3 |
|
BLAKE2b-256 | 43a16a52bfbc037c1cdaab824fe32e014e3ad1ce484cc7b86b2b86355542ba70 |
Hashes for mllint-0.7.1-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35cb40b23a9ed4131e8bae690105f96c23af6295d8c76a266bf970b6314f6da5 |
|
MD5 | 74198a867d8d1ea75a32798f14d08447 |
|
BLAKE2b-256 | 1a72ae072911877ca7fb9c8f64674f5a2f9bc69f6e27c05c64df06200a9c59c1 |
Hashes for mllint-0.7.1-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ee9465102ff54f423097faad0e0b6f9cfb22ade7d6e55f4e46c1c84a02c0847 |
|
MD5 | 5175713d42329a7a3dc5c893a01aa100 |
|
BLAKE2b-256 | 3ef30dbd5508346171588fc08daa2db249146eadb020fe8780e19af9130f27c2 |
Hashes for mllint-0.7.1-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91d498af2b89d8afffb2aa7c90e54e31ed73537b66d40c5ecf298abf40a94de7 |
|
MD5 | 774ad8e715fd88ddf6e99159c8aebc72 |
|
BLAKE2b-256 | d59d83968a4a97f7ad870d0306cbd927520d4d958a1117534287f7515a6205ff |
Hashes for mllint-0.7.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbf4c1d4c8601448b5da092a23a66f8eba2fe4025ea92cde0612f1223c3dbe4d |
|
MD5 | 18f5913b61e5f4b17d90c803a179c06f |
|
BLAKE2b-256 | 944cfa8a324650bf54a9740e00286594ec1d548aa5e166ffb5f3656838bdb610 |
Hashes for mllint-0.7.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef72af36ddc9666a1f8c5cc9d5b4560b941e3aa697af9ee80f499172626f922c |
|
MD5 | e4de9e46474c309f776821a473b80cda |
|
BLAKE2b-256 | 5367c1f8c19e172f68f63617b5d60a8b445c675e61dd81de98f633fb555b9d8a |
Hashes for mllint-0.7.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb57a13bccf5164856dfe9da7d45eb9428ad17f88a1fbbe1f45ed64d3684de9d |
|
MD5 | bef13b0bcdbe6607392a74cbbcc85c89 |
|
BLAKE2b-256 | 845f5b715dd6f3ac8aa5b88f4910174ae71e6ebb59d09af83c9161c101bc36dc |
Hashes for mllint-0.7.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1460ac231755bf246223d81da248d172b1ee72a7e1ec44479b26e6c2db3f4047 |
|
MD5 | fc56390740816e0c8e84223ad4373832 |
|
BLAKE2b-256 | a4e27cd6ea70ad03eab0e72e7e3b4f3e701a3994d141df20fef00bf167c8f198 |
Hashes for mllint-0.7.1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2236d3557635bf2ac47c5297f31f5c30e2b32822ef60c651f6ca35ed898e7d1 |
|
MD5 | a1c0d335d0598224a26114a016e799f5 |
|
BLAKE2b-256 | 19283c3b0ff84aaeb00390e4a021a23d9175167c47e3253016e737416e7ccdb5 |
Hashes for mllint-0.7.1-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3015f1f08c88ef34cd6c718e0a44ff67a28807952f39854d1e4756e675f00a7 |
|
MD5 | 4cdfdf72217f9f28be7c5b594cd6e023 |
|
BLAKE2b-256 | 2798535f6e292919cb674f4dbd858aa61e37d344a0d1ea0c557e2f84c0ad051e |
Hashes for mllint-0.7.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75e76eeed64f6741bc6fcd85e81b621a8748641891205a4e47ffdc7db78b18c5 |
|
MD5 | 9d1868abcdc6c84a4b1a19bd8264a259 |
|
BLAKE2b-256 | e458917d703c15f7c638ac41e63c7f9c01feec75d6ba142aa747fec261dd6efa |
Hashes for mllint-0.7.1-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bb3f9145dbf148a175b648e463b9f817ab32685ad05cae0e75e65e89fa1cdf4 |
|
MD5 | 9cc3c8d8797e1b0c77c2b773f620963d |
|
BLAKE2b-256 | 2a6385b6d05a4b6226948d4e105d3010a1a5556740d9f2b8147ddd376606aadc |
Hashes for mllint-0.7.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5143803ff31f52c3f2138f6b80ef49c09a05aa1f1eecd574344a65fc97c8887 |
|
MD5 | 062861eb2d43e2c61a7fc8c8b5f7c4fc |
|
BLAKE2b-256 | 347c513ad51559c8b6786f4968d3a00eb679f2874410391e8663554ef112cce9 |
Hashes for mllint-0.7.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac65c65e3f126397ceed594bde33f012206bcd0c256f3c397564df4b895c038c |
|
MD5 | e81388a25d0d83951568f9484e19d566 |
|
BLAKE2b-256 | 439c459551495cee367475d0491a1de1f21bf4977988cccb20df3b8c0e8afd8b |
Hashes for mllint-0.7.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01381872f00ef0828fdbefd16b992c066aeb030bb7998c598310529e73ce1e30 |
|
MD5 | a595d5993bd78d58ab96a0983b49c9f2 |
|
BLAKE2b-256 | 2dfdd0fc66b77187597d8e6f7ab80dd2f7822d5399436e83460ede76888c0ac2 |
Hashes for mllint-0.7.1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9d4e207d4a21ab923f7e274a11ed1b82e1f7410d5fbde5cdc039caa6bd3f6a3 |
|
MD5 | 943dee228d73e550d95dd963c95fe779 |
|
BLAKE2b-256 | 7d51b1fd558fb80c93fafdf060cdaf3dbd2ab9033dceff697c722b287e081409 |
Hashes for mllint-0.7.1-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be119658e9987b9822b3befae1bfea0c265ceb2fab92a521a83dece7fb603f6d |
|
MD5 | 50a2edbe3b00e9219568c8148fe2da9c |
|
BLAKE2b-256 | e67fd64120d91fcbf9aeb81418a184283eba98afceaca6d86e76b2e6b454940d |
Hashes for mllint-0.7.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2b87aeab94e2b1429047d3bca415215db2b2cbe750ac620ff374263428569c7 |
|
MD5 | 9b938442a76fc91c9767762718edbc8c |
|
BLAKE2b-256 | f23a352f632580a672e505f60f8c724f8cfa2dd963c31bf0a51ccefea5b5a1ce |
Hashes for mllint-0.7.1-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5113196eddc0e54455252197bc573740ef89a8a2080f1848e6d52ae28ea1e455 |
|
MD5 | 1965e3e5a4f93259fc8273b810d2da5f |
|
BLAKE2b-256 | 203d0dadd491c944370ed61db8d0060668e2202dee26c6851e853dd55fd9b74a |
Hashes for mllint-0.7.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eca2ed30fef55f36081dc74a3231e24364368f2539ae9d7268674c09ec18d527 |
|
MD5 | 6cf913368f830d4eccce59cf385ef41c |
|
BLAKE2b-256 | 1bb943546df52736ecb78e1a249bbc9500c1fc21cd57c5d7ce0d7fe0c9204a82 |
Hashes for mllint-0.7.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f9da31c41c1dd1cdc255208fb36d6e7d54c29ef15d7d190f415dfc5ae4a2cdc |
|
MD5 | e642adcd2e7a28b7e22fc17abab83bb3 |
|
BLAKE2b-256 | dc867e6f2a575aa0fe0d68498e44b26cd78638ccecc25abf5c43ad136369cfa8 |
Hashes for mllint-0.7.1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e97a49a3a98eb3244d9298f6624aafb64e4ee168f0195092d504e2034fd54119 |
|
MD5 | 09d34e7a1c8e4c30f93759a205faf4f3 |
|
BLAKE2b-256 | 669ab529722b7caaa8639aa062b3f4a9c2ef93e822eca85db5718168344848d7 |
Hashes for mllint-0.7.1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 866a3e5fdfa50551ecddec21dd3bdfb5ae2514376e53af55fdf22021ea38fb2c |
|
MD5 | 766c1be56cc82bdadf2017d6b8301058 |
|
BLAKE2b-256 | 2808bef33a99918f9041ac90654b4e8dc7cab77b6dab0e2dca871580f0380257 |
Hashes for mllint-0.7.1-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea38666be70112e5b64b1e0ebb126a9c54a35e085de07c0a1d571b394ce8c3ab |
|
MD5 | 18da8a371dfd6326ca5555c67bce5697 |
|
BLAKE2b-256 | a2b40d7e5cbbd42506e36097e50d84d437178e56aef232827b2025884546b3d1 |
Hashes for mllint-0.7.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc0d9baf0f88b69c410f5fa855640366b9558e6a9f251146b11468290183f5c5 |
|
MD5 | 2d02450e3fb5c6f2d7b9664ea1865804 |
|
BLAKE2b-256 | 006bef8da288a1a5f8268aa4f5245ce0a57a98f9a0a28882f3b3336d6a03967c |
Hashes for mllint-0.7.1-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ee11dd37605b7f8c4da0c9405f0ecd5475b6d69aff095ba57b0de8cbd0f35ee |
|
MD5 | 47311f05ac2d64ee43cd49172354b81d |
|
BLAKE2b-256 | a7db1f0180b78ee005a1331f864b54417f24100d40943f3022cb179675bc7da0 |
Hashes for mllint-0.7.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 866d17c269c47ded547ba95d58cfffe16aa4f60253dfd92b6969453a639866a9 |
|
MD5 | ff31017f36fd4f1c580fdfb678223763 |
|
BLAKE2b-256 | 1dd691d4a29cad3f0921f2c80f186033478d1e304aad1d8033eee27143a9c187 |