alot/helper.py

Summary

Maintainability
D
1 day
Test Coverage

File helper.py has 456 lines of code (exceeds 250 allowed). Consider refactoring.
Open

# -*- coding: utf-8 -*-
# Copyright (C) 2011-2012  Patrick Totzke <patricktotzke@gmail.com>
# Copyright © 2017-2018 Dylan Baker
# This file is released under the GNU GPL, version 3 or a later revision.
# For further details see the COPYING file
Severity: Minor
Found in alot/helper.py - About 6 hrs to fix

    Function shorten_author_string has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
    Open

    def shorten_author_string(authors_string, maxlength):
        """
        Parse a list of authors concatenated as a text string (comma
        separated) and smartly adjust them to maxlength.
    
    
    Severity: Minor
    Found in alot/helper.py - About 2 hrs to fix

    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

    Function pretty_datetime has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
    Open

    def pretty_datetime(d):
        """
        translates :class:`datetime` `d` to a "sup-style" human readable string.
    
        >>> now = datetime.now()
    Severity: Minor
    Found in alot/helper.py - About 1 hr to fix

    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

    Function mimewrap has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
    Open

    def mimewrap(path, filename=None, ctype=None):
        """Take the contents of the given path and wrap them into an email MIME
        part according to the content type.  The content type is auto detected from
        the actual file contents and the file name if it is not given.
    
    
    Severity: Minor
    Found in alot/helper.py - About 1 hr to fix

    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

    Function string_sanitize has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
    Open

    def string_sanitize(string, tab_width=8):
        r"""
        strips, and replaces non-printable characters
    
        :param tab_width: number of spaces to replace tabs with. Read from
    Severity: Minor
    Found in alot/helper.py - About 1 hr to fix

    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

    Function parse_mailto has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

    def parse_mailto(mailto_str):
        """
        Interpret mailto-string
    
        :param mailto_str: the string to interpret. Must conform to :rfc:2368.
    Severity: Minor
    Found in alot/helper.py - About 1 hr to fix

    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

    TODO found
    Open

    # TODO: make this work on blobs, not paths
    Severity: Minor
    Found in alot/helper.py by fixme

    Line break after binary operator
    Open

            if (ctype == 'application/msword' and
    Severity: Minor
    Found in alot/helper.py by pep8

    Avoid breaks after binary operators.

    The preferred place to break around a binary operator is before the
    operator, not after it.
    
    W504: (width == 0 +\n height == 0)
    W504: (width == 0 and\n height == 0)
    W504: var = (1 &\n       ~2)
    
    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: x = '' + '''\n'''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)
    
    The following should be W504 but unary_context is tricky with these
    Okay: var = (1 /\n       -2)
    Okay: var = (1 +\n       -1 +\n       -2)

    Line break after binary operator
    Open

            if len(au) > 1 and (remaining_length == 3 or (authors and
    Severity: Minor
    Found in alot/helper.py by pep8

    Avoid breaks after binary operators.

    The preferred place to break around a binary operator is before the
    operator, not after it.
    
    W504: (width == 0 +\n height == 0)
    W504: (width == 0 and\n height == 0)
    W504: var = (1 &\n       ~2)
    
    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: x = '' + '''\n'''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)
    
    The following should be W504 but unary_context is tricky with these
    Okay: var = (1 /\n       -2)
    Okay: var = (1 +\n       -1 +\n       -2)

    There are no issues that match your filters.

    Category
    Status