Showing 514 of 516 total issues
File exchange.py
has 2589 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
# pragma pylint: disable=W0603
"""
Cryptocurrency Exchanges support
"""
import asyncio
File freqtradebot.py
has 1730 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
"""
Freqtrade is the main module of this bot. It contains the class Freqtrade()
"""
import logging
import traceback
File telegram.py
has 1706 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
# pragma pylint: disable=unused-argument, unused-variable, protected-access, invalid-name
"""
This module manage Telegram communication
"""
File trade_model.py
has 1642 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
"""
This module contains the class to persist trades into SQLite
"""
import logging
from collections import defaultdict
File rpc.py
has 1191 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
"""
This module contains class to define a RPC communications
"""
import logging
from abc import abstractmethod
File interface.py
has 1182 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
"""
IStrategy interface
This module defines the interface to apply for strategies
"""
import logging
File backtesting.py
has 1129 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
# pragma pylint: disable=missing-docstring, W0212, too-many-arguments
"""
This module contains the backtesting logic
"""
File freqai_interface.py
has 832 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import logging
import threading
import time
from abc import ABC, abstractmethod
from collections import deque
File data_kitchen.py
has 827 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import copy
import inspect
import logging
import random
import shutil
File cli_options.py
has 700 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
"""
Definition of cli arguments used in arguments.py
"""
from argparse import SUPPRESS, ArgumentTypeError
File constants.py
has 684 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
# pragma pylint: disable=too-few-public-methods
"""
bot constants
"""
File data_drawer.py
has 625 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import collections
import importlib
import logging
import re
import shutil
File plotting.py
has 593 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import logging
from datetime import datetime, timezone
from pathlib import Path
from typing import Dict, List, Optional
Function _rpc_status_table
has a Cognitive Complexity of 54 (exceeds 5 allowed). Consider refactoring. Open
Open
def _rpc_status_table(self, stake_currency: str,
fiat_display_currency: str) -> Tuple[List, List, float]:
trades: List[Trade] = Trade.get_open_trades()
nonspot = self._config.get('trading_mode', TradingMode.SPOT) != TradingMode.SPOT
if not trades:
- Read upRead up
Cognitive Complexity
Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.
A method's cognitive complexity is based on a few simple rules:
- Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
- Code is considered more complex for each "break in the linear flow of the code"
- Code is considered more complex when "flow breaking structures are nested"
Further reading
File hyperopt.py
has 498 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
# pragma pylint: disable=too-many-instance-attributes, pointless-string-statement
"""
This module contains the hyperopt logic
"""
File history_utils.py
has 462 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import logging
import operator
from datetime import datetime, timedelta
from pathlib import Path
from typing import Dict, List, Optional, Tuple
IStrategy
has 50 functions (exceeds 20 allowed). Consider refactoring. Open
Open
class IStrategy(ABC, HyperStrategyMixin):
"""
Interface for freqtrade strategies
Defines the mandatory structure must follow any custom strategies
File optimize_reports.py
has 450 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import logging
from copy import deepcopy
from datetime import datetime, timedelta, timezone
from typing import Any, Dict, List, Tuple, Union
File hyperopt_tools.py
has 440 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
import logging
from copy import deepcopy
from datetime import datetime, timezone
from pathlib import Path
from typing import Any, Dict, Iterator, List, Optional, Tuple
File api_schemas.py
has 439 lines of code (exceeds 250 allowed). Consider refactoring. Open
Open
from datetime import date, datetime
from typing import Any, Dict, List, Optional, Union
from pydantic import AwareDatetime, BaseModel, RootModel, SerializeAsAny