QInfer/python-qinfer

View on GitHub
src/qinfer/expdesign.py

Summary

Maintainability
C
1 day
Test Coverage

Function design_expparams_field has a Cognitive Complexity of 29 (exceeds 5 allowed). Consider refactoring.
Open

    def design_expparams_field(self,
            guess, field,
            cost_scale_k=1.0, disp=False,
            maxiter=None, maxfun=None,
            store_guess=False, grad_h=None, cost_mult=False
Severity: Minor
Found in src/qinfer/expdesign.py - About 4 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

Cyclomatic complexity is too high in method design_expparams_field. (18)
Open

    def design_expparams_field(self,
            guess, field,
            cost_scale_k=1.0, disp=False,
            maxiter=None, maxfun=None,
            store_guess=False, grad_h=None, cost_mult=False
Severity: Minor
Found in src/qinfer/expdesign.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

File expdesign.py has 289 lines of code (exceeds 250 allowed). Consider refactoring.
Open

#!/usr/bin/python
# -*- coding: utf-8 -*-
##
# expdesign.py: Adaptive experimental design algorithms.
##
Severity: Minor
Found in src/qinfer/expdesign.py - About 2 hrs to fix

    Cyclomatic complexity is too high in class ExperimentDesigner. (7)
    Open

    class ExperimentDesigner(object):
        """
        Designs new experiments using the current best information provided by a
        Bayesian updater.
        
    Severity: Minor
    Found in src/qinfer/expdesign.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 design_expparams_field has 9 arguments (exceeds 4 allowed). Consider refactoring.
    Open

        def design_expparams_field(self,
    Severity: Major
    Found in src/qinfer/expdesign.py - About 1 hr to fix

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

          def __init__(self, updater, inv_field='x_', t_field='t',
      Severity: Major
      Found in src/qinfer/expdesign.py - About 50 mins to fix

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

            def __init__(self,
        Severity: Minor
        Found in src/qinfer/expdesign.py - About 35 mins to fix

          Function __call__ has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
          Open

              def __call__(self):
                  idx_iter = 0
                  while idx_iter < self._maxiters:
                          
                      x, xp = self._updater.sample(n=2)[:, np.newaxis, :]
          Severity: Minor
          Found in src/qinfer/expdesign.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

          TODO found
          Open

          from qinfer._lib import enum # <- TODO: replace with flufl.enum!
          Severity: Minor
          Found in src/qinfer/expdesign.py by fixme

          Similar blocks of code found in 2 locations. Consider refactoring.
          Open

                      x_opt, f_opt, iters, func_calls, warnflag = opt.fmin(
                          objective_function, guess[0][field],
          Severity: Major
          Found in src/qinfer/expdesign.py and 1 other location - About 1 hr to fix
          src/qinfer/expdesign.py on lines 366..367

          Duplicated Code

          Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

          Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

          When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

          Tuning

          This issue has a mass of 39.

          We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

          The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

          If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

          See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

          Refactorings

          Further Reading

          Similar blocks of code found in 2 locations. Consider refactoring.
          Open

                      x_opt, f_opt, func_calls, grad_calls, warnflag = opt.fmin_cg(
                          objective_function, guess[0][field],
          Severity: Major
          Found in src/qinfer/expdesign.py and 1 other location - About 1 hr to fix
          src/qinfer/expdesign.py on lines 411..412

          Duplicated Code

          Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

          Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

          When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

          Tuning

          This issue has a mass of 39.

          We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

          The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

          If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

          See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

          Refactorings

          Further Reading

          Continuation line under-indented for visual indent
          Open

                      updater, scale=1, base=9/8,
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Continuation line under-indented for visual indent
          Open

                      t_field=None, other_fields=None
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Line too long (85 > 79 characters)
          Open

              :param callable t_func: Function to be applied to the evolution time to produce a
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Comparison to false should be 'if cond is false:' or 'if not cond:'
          Open

                  if (cost_mult==False):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Comparison to singletons should use "is" or "is not".

          Comparisons to singletons like None should always be done
          with "is" or "is not", never the equality operators.
          
          Okay: if arg is not None:
          E711: if arg != None:
          E711: if None == arg:
          E712: if arg == True:
          E712: if False == arg:
          
          Also, beware of writing if x when you really mean if x is not None
          -- e.g. when testing whether a variable or argument that defaults to
          None was set to some other value.  The other value might have a type
          (such as a container) that could be false in a boolean context!

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Line too long (87 > 79 characters)
          Open

                          x_opt, f_opt, func_calls, grad_calls, h_calls, warnflag = opt.fmin_tnc(
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Line too long (80 > 79 characters)
          Open

          ## CLASSES #####################################################################
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                          
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Line too long (110 > 79 characters)
          Open

                      raise RuntimeError("PGH did not find distinct particles in {} iterations.".format(self._maxiters))
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Continuation line under-indented for visual indent
          Open

                      guess, field,
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Expected 2 blank lines, found 1
          Open

          def identity(arg): return arg
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          At least two spaces before inline comment
          Open

                          ep = self.__best_ep # Guess is bad, return current best guess
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Blank line contains whitespace
          Open

                          
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Continuation line with same indent as next logical line
          Open

                  ):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Multiple spaces before operator
          Open

                  eps[self._t]  = self._t_func(1 / self._updater.model.distance(x, xp))
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Avoid extraneous whitespace around an operator.

          Okay: a = 12 + 3
          E221: a = 4  + 5
          E222: a = 4 +  5
          E223: a = 4\t+ 5
          E224: a = 4 +\t5

          Expected 2 blank lines, found 1
          Open

          class ExperimentDesigner(object):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Line too long (80 > 79 characters)
          Open

                      # is too flat. We catch it here and return the initial guess in that
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Continuation line under-indented for visual indent
          Open

                      store_guess=False, grad_h=None, cost_mult=False
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                          
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Line too long (80 > 79 characters)
          Open

                      # Possibly compute the objective function value at the local optimum
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Blank line contains whitespace
          Open

          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Expected 2 blank lines, found 1
          Open

          class EnsembleHeuristic(Heuristic):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Blank line contains whitespace
          Open

                          
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Continuation line under-indented for visual indent
          Open

                      cost_scale_k=1.0, disp=False,
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Expected 2 blank lines, found 1
          Open

          class PGH(Heuristic):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                          
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Missing whitespace around operator
          Open

                  if (cost_mult==False):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Surround operators with a single space on either side.

          - Always surround these binary operators with a single space on
            either side: assignment (=), augmented assignment (+=, -= etc.),
            comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
            Booleans (and, or, not).
          
          - If operators with different priorities are used, consider adding
            whitespace around the operators with the lowest priorities.
          
          Okay: i = i + 1
          Okay: submitted += 1
          Okay: x = x * 2 - 1
          Okay: hypot2 = x * x + y * y
          Okay: c = (a + b) * (a - b)
          Okay: foo(bar, key='word', *args, **kwargs)
          Okay: alpha[:-i]
          
          E225: i=i+1
          E225: submitted +=1
          E225: x = x /2 - 1
          E225: z = x **y
          E225: z = 1and 1
          E226: c = (a+b) * (a-b)
          E226: hypot2 = x*x + y*y
          E227: c = a|b
          E228: msg = fmt%(errno, errmsg)

          Line too long (80 > 79 characters)
          Open

          ## FUNCTIONS ###################################################################
          Severity: Minor
          Found in src/qinfer/expdesign.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.

          Closing bracket does not match visual indentation
          Open

                  ):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          At least two spaces before inline comment
          Open

          from qinfer._lib import enum # <- TODO: replace with flufl.enum!
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Expected 2 blank lines after class or function definition, found 1
          Open

          OptimizationAlgorithms = enum.enum("NULL", "CG", "NCG", "NELDER_MEAD")
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Continuation line under-indented for visual indent
          Open

                      maxiter=None, maxfun=None,
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Missing whitespace around operator
          Open

                          return up.bayes_risk(ep)* m.experiment_cost(ep)**cost_scale_k
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Surround operators with a single space on either side.

          - Always surround these binary operators with a single space on
            either side: assignment (=), augmented assignment (+=, -= etc.),
            comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
            Booleans (and, or, not).
          
          - If operators with different priorities are used, consider adding
            whitespace around the operators with the lowest priorities.
          
          Okay: i = i + 1
          Okay: submitted += 1
          Okay: x = x * 2 - 1
          Okay: hypot2 = x * x + y * y
          Okay: c = (a + b) * (a - b)
          Okay: foo(bar, key='word', *args, **kwargs)
          Okay: alpha[:-i]
          
          E225: i=i+1
          E225: submitted +=1
          E225: x = x /2 - 1
          E225: z = x **y
          E225: z = 1and 1
          E226: c = (a+b) * (a-b)
          E226: hypot2 = x*x + y*y
          E227: c = a|b
          E228: msg = fmt%(errno, errmsg)

          Too many blank lines (2)
          Open

                  # Some optimizers require gradients of the objective function.
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Expected 2 blank lines, found 1
          Open

          class Heuristic(with_metaclass(ABCMeta, object)):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

              
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Continuation line with same indent as next logical line
          Open

                  ):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Blank line contains whitespace
          Open

                      
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Expected 2 blank lines, found 1
          Open

          class ExpSparseHeuristic(Heuristic):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Separate top-level function and class definitions with two blank lines.

          Method definitions inside a class are separated by a single blank
          line.
          
          Extra blank lines may be used (sparingly) to separate groups of
          related functions.  Blank lines may be omitted between a bunch of
          related one-liners (e.g. a set of dummy implementations).
          
          Use blank lines in functions, sparingly, to indicate logical
          sections.
          
          Okay: def a():\n    pass\n\n\ndef b():\n    pass
          Okay: def a():\n    pass\n\n\nasync def b():\n    pass
          Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
          Okay: default = 1\nfoo = 1
          Okay: classify = 1\nfoo = 1
          
          E301: class Foo:\n    b = 0\n    def bar():\n        pass
          E302: def a():\n    pass\n\ndef b(n):\n    pass
          E302: def a():\n    pass\n\nasync def b(n):\n    pass
          E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
          E303: def a():\n\n\n\n    pass
          E304: @decorator\n\ndef a():\n    pass
          E305: def a():\n    pass\na()
          E306: def a():\n    def b():\n        pass\n    def c():\n        pass

          Closing bracket does not match visual indentation
          Open

                  ):
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Blank line contains whitespace
          Open

                  
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Multiple spaces before operator
          Open

                  m  = up.model
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Avoid extraneous whitespace around an operator.

          Okay: a = 12 + 3
          E221: a = 4  + 5
          E222: a = 4 +  5
          E223: a = 4\t+ 5
          E224: a = 4 +\t5

          Blank line contains whitespace
          Open

                          
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Trailing whitespace
          Open

                  # Optionally compare the result to previous guesses.            
          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          Blank line contains whitespace
          Open

          Severity: Minor
          Found in src/qinfer/expdesign.py by pep8

          Trailing whitespace is superfluous.

          The warning returned varies on whether the line itself is blank,
          for easier filtering for those who want to indent their blank lines.
          
          Okay: spam(1)\n#
          W291: spam(1) \n#
          W293: class Foo(object):\n    \n    bang = 12

          There are no issues that match your filters.

          Category
          Status