smok-serwis/firanka

View on GitHub

Showing 40 of 40 total issues

Cyclomatic complexity is too high in method intersection. (14)
Open

    @_pre_range
    def intersection(self, y):
        if self.start > y.start:
            return y.intersection(self)

Severity: Minor
Found in firanka/intervals.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

Cyclomatic complexity is too high in method _join_discrete_other_discrete. (12)
Open

    def _join_discrete_other_discrete(self, series, fun):
        new_domain = self.domain.intersection(series.domain)

        assert isinstance(series, DiscreteSeries)

Severity: Minor
Found in firanka/series/base.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

Cyclomatic complexity is too high in method join_discrete. (8)
Open

    def join_discrete(self, series, fun):
        """
        Very much like join, but it will evaluate only existing discrete points.
        :param series:
        :param fun:
Severity: Minor
Found in firanka/series/base.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

Cyclomatic complexity is too high in method compose. (7)
Open

    def compose(self):
        """
        Return a DiscreteSet from multiple bunded series.
        This does not lose accuracy.

Severity: Minor
Found in firanka/series/bundle.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

Cyclomatic complexity is too high in method __add__. (6)
Open

    @_pre_range
    def __add__(self, other):
        if self.start > other.start:
            return other.__add__(self)

Severity: Minor
Found in firanka/intervals.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

Cyclomatic complexity is too high in method __eq__. (6)
Open

    @_pre_range
    def __eq__(self, other):
        if self.is_empty() and other.is_empty():
            return True

Severity: Minor
Found in firanka/intervals.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

Cyclomatic complexity is too high in method _contains_interval. (6)
Open

    @_pre_range
    def _contains_interval(self, x):
        if ((x.start == self.start) and (x.left_inc ^ self.left_inc)) \
                or ((x.stop == self.stop) and (x.right_inc ^ self.right_inc)):
            return False
Severity: Minor
Found in firanka/intervals.py by radon

Cyclomatic Complexity

Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

Construct Effect on CC Reasoning
if +1 An if statement is a single decision.
elif +1 The elif statement adds another decision.
else +0 The else statement does not cause a new decision. The decision is at the if.
for +1 There is a decision at the start of the loop.
while +1 There is a decision at the while statement.
except +1 Each except branch adds a new conditional path of execution.
finally +0 The finally block is unconditionally executed.
with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
assert +1 The assert statement internally roughly equals a conditional statement.
Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

Source: http://radon.readthedocs.org/en/latest/intro.html

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

    def _join_discrete_other_discrete(self, series, fun):
        new_domain = self.domain.intersection(series.domain)

        assert isinstance(series, DiscreteSeries)

Severity: Minor
Found in firanka/series/base.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 intersection has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
Open

    def intersection(self, y):
        if self.start > y.start:
            return y.intersection(self)

        assert self.start <= y.start
Severity: Minor
Found in firanka/intervals.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 __init__ has 6 arguments (exceeds 4 allowed). Consider refactoring.
Open

    def __init__(self, series, domain=None, fun=lambda k, v: v, x=0, *args, **kwargs):
Severity: Minor
Found in firanka/series/base.py - About 45 mins to fix

    Function compose has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

        def compose(self):
            """
            Return a DiscreteSet from multiple bunded series.
            This does not lose accuracy.
    
    
    Severity: Minor
    Found in firanka/series/bundle.py - About 45 mins 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 __init__ has 5 arguments (exceeds 4 allowed). Consider refactoring.
    Open

        def __init__(self, ser1, ser2, op, *args, **kwargs):
    Severity: Minor
    Found in firanka/series/base.py - About 35 mins to fix

      Function SCALAR_LINEAR_INTERPOLATOR has 5 arguments (exceeds 4 allowed). Consider refactoring.
      Open

      def SCALAR_LINEAR_INTERPOLATOR(t0, v0, t1, v1, tt):
      Severity: Minor
      Found in firanka/series/interpolations.py - About 35 mins to fix

        Function __init__ has 5 arguments (exceeds 4 allowed). Consider refactoring.
        Open

            def __init__(self, data, domain=None,
        Severity: Minor
        Found in firanka/series/interpolations.py - About 35 mins to fix

          Function extend_to_point has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
          Open

              def extend_to_point(self, p):
                  """
                  Return a minimally extended interval required to grab point p
                  :param p: a point, float
                  :return: new Interval
          Severity: Minor
          Found in firanka/intervals.py - About 35 mins 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 __getargs has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
          Open

              def __getargs(self, args):
                  if len(args) == 1:
                      rs, = args
                      if isinstance(rs, Interval):
                          args = self.__fromrange(rs)
          Severity: Minor
          Found in firanka/intervals.py - About 25 mins 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

          Line too long (142 > 100 characters)
          Open

                  return self.start == other.start and self.stop == other.stop and self.left_inc == other.left_inc and self.right_inc == other.right_inc
          Severity: Minor
          Found in firanka/intervals.py by pep8

          Limit all lines to a maximum of 79 characters.

          There are still many devices around that are limited to 80 character
          lines; plus, limiting windows to 80 characters makes it possible to
          have several windows side-by-side.  The default wrapping on such
          devices looks ugly.  Therefore, please limit all lines to a maximum
          of 79 characters. For flowing long blocks of text (docstrings or
          comments), limiting the length to 72 characters is recommended.
          
          Reports error E501.

          Fenced code blocks should be surrounded by blank lines
          Open

          ```python
          Severity: Info
          Found in README.md by markdownlint

          MD031 - Fenced code blocks should be surrounded by blank lines

          Tags: code, blank_lines

          Aliases: blanks-around-fences

          This rule is triggered when fenced code blocks are either not preceded or not followed by a blank line:

          Some text
          ```
          Code block
          ```
          
          ```
          Another code block
          ```
          Some more text

          To fix this, ensure that all fenced code blocks have a blank line both before and after (except where the block is at the beginning or end of the document):

          Some text
          
          ```
          Code block
          ```
          
          ```
          Another code block
          ```
          
          Some more text

          Rationale: Aside from aesthetic reasons, some parsers, including kramdown, will not parse fenced code blocks that don't have blank lines before and after them.

          Multiple consecutive blank lines
          Open

          
          
          Severity: Info
          Found in README.md by markdownlint

          MD012 - Multiple consecutive blank lines

          Tags: whitespace, blank_lines

          Aliases: no-multiple-blanks

          This rule is triggered when there are multiple consecutive blank lines in the document:

          Some text here
          
          
          Some more text here

          To fix this, delete the offending lines:

          Some text here
          
          Some more text here

          Note: this rule will not be triggered if there are multiple consecutive blank lines inside code blocks.

          Do not assign a lambda expression, use a def
          Open

                          op = lambda ptr, me, const: fun(ptr, const, me)
          Severity: Minor
          Found in firanka/series/base.py by pep8

          Compound statements (on the same line) are generally discouraged.

          While sometimes it's okay to put an if/for/while with a small body
          on the same line, never do this for multi-clause statements.
          Also avoid folding such long lines!
          
          Always use a def statement instead of an assignment statement that
          binds a lambda expression directly to a name.
          
          Okay: if foo == 'blah':\n    do_blah_thing()
          Okay: do_one()
          Okay: do_two()
          Okay: do_three()
          
          E701: if foo == 'blah': do_blah_thing()
          E701: for x in lst: total += x
          E701: while t < 10: t = delay()
          E701: if foo == 'blah': do_blah_thing()
          E701: else: do_non_blah_thing()
          E701: try: something()
          E701: finally: cleanup()
          E701: if foo == 'blah': one(); two(); three()
          E702: do_one(); do_two(); do_three()
          E703: do_four();  # useless semicolon
          E704: def f(x): return 2*x
          E731: f = lambda x: 2*x
          Severity
          Category
          Status
          Source
          Language