# Invoke flake8 in Python Project

Flake8 is a popular lint wrapper for python. In this article, we will understand the uses of flake8 against our python projects.

* What is flake8?
    
* Install flake8 in your project
    
* Run flake8 against your project
    
* Configure flake8 in config.cfg
    

### What is flake8?

Flake8 is a wrapper around these tools:

* PyFlakes
    
* pycodestyle
    
* Ned Batchelder’s McCabe script
    

Flake8 runs all the tools by launching the single flake8 command. It displays the warnings in a per-file, merged output.

### Install flake8

First, we need to create a project.

```bash
mkdir simple_calculator
```

Let's create a virtual environment inside the project and activate the virtual-env.

```bash
cd simple_calculator
python3 -m venv venv
source venv/bin/activatte
```

Now let's install flake8 in your project

```bash
pip install flake8
```

Let's add a file called calculator.py in your project and add the following content to it.

```python


class calculator(object):
    def __init__(self, *args):
        super(calculator, self).__init__(*args)

    def addition(self, a, b):

        return a + b

    def Substraction(self, a, b ): 
        return a - b

    def multiplication(self, a, b):
        return a * b


    def Division(self,a, b):
        return a / b
```

### Run flake8 against your project

Now let's run flake8 against your project

```python
flake8 --exclude=venv --count
```

In the above command `--exclude` providing a comma-separated list of glob patterns to exclude from checks and `--count` printing the total number of errors.

You can see the following in your terminal.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1672912280966/7e212207-42d4-4cb4-b074-7a50ce4fc0c9.png align="center")

The error will come in this format by default - `'%(path)s:%(row)d:%(col)d: %(code)s %(text)s'` .

To know more about the options available with flake8, please visit the official documentation - [https://flake8.pycqa.org/en/latest/user/options.html](https://flake8.pycqa.org/en/latest/user/options.html).

### Configure flake8 in config.cfg

You can pass flake8's configuration parameters using a `setup.cfg` file. You can add the following configuration in your `config.cfg` file.

```bash
[flake8]
exclude =
    .git,
    __pycache__,
    venv
max-complexity = 10
count = True
```

Now you can just run `flake8` in your terminal and able to see the same result.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1672915139645/4ad728f1-3fc3-499d-851b-40549e901a6b.png align="center")

You can resolve the errors in your code one by one. It's quite clear from the warning we're getting in flake8-generated logs. Then you should be able to get the count as `0`.

We have reached the end of this short article. I hope you understand the purpose of flake8 in python and you'll be using flake8 in your next project.

Happy Learning!!
