too-complex / R1260#

Message emitted:

`%s is too complex. The McCabe rating is %d`

Description:

Used when a method or function is too complex based on McCabe Complexity Cyclomatic

Problematic code:

```def fifty_percent_off(whole):
return (float(whole)) * 50 / 100

def calculate_sum_and_display_price_of_fruits(*fruits):  # [too-complex]
# McCabe rating is 13 here (by default 10)
shopping_list = []

if "apple" in fruits:
v = fifty_percent_off(1.1)
shopping_list.append(v)
if "pear" in fruits:
shopping_list.append(0.8)
if "banana" in fruits:
shopping_list.append(1.2)
if "mango" in fruits:
shopping_list.append(3.5)
if "peach" in fruits:
shopping_list.append(0.5)
if "melon" in fruits:
shopping_list.append(4.9)
if "orange" in fruits:
shopping_list.append(2.0)
if "strawberry" in fruits:
shopping_list.append(2.5)
if "mandarin" in fruits:
shopping_list.append(2.3)
if "plum" in fruits:
shopping_list.append(0.5)
if "watermelon" in fruits:
v = fifty_percent_off(6.4)
shopping_list.append(v)

combine = zip(fruits, shopping_list)

for i in combine:
print(f"{i[0]} \${i[1]:.2f}")

total = sum(shopping_list)
print(f"Total price is \${total:.2f}")

```

Correct code:

```FRUIT_PRICES = {
"apple": 1.1,
"pear": 0.8,
"banana": 1.2,
"mango": 3.5,
"peach": 0.5,
"melon": 4.9,
"orange": 2.0,
"strawberry": 2.5,
"mandarin": 2.3,
"plum": 0.5,
"watermelon": 6.4,
}
DISCOUNTED_FRUITS = ["apple", "watermelon"]

def fifty_percent_off(whole):
return (float(whole)) * 50 / 100

def get_price(fruit):
full_price = FRUIT_PRICES.get(fruit)
if fruit in DISCOUNTED_FRUITS:
return fifty_percent_off(full_price)
else:
return full_price

def display_fruit_and_price(fruits):
for fruit in fruits:
print(f"{fruit} \${get_price(fruit) :.2f}")

def get_total(fruits):
return sum(get_price(f) for f in fruits)

```

Configuration file:

```[main]

This message is emitted by the optional 'design' checker, which requires the `pylint.extensions.mccabe` plugin to be loaded.