LiberTEM/LiberTEM

View on GitHub

Showing 491 of 903 total issues

Cyclomatic complexity is too high in method _adapt_chunking. (23)
Open

    def _adapt_chunking(self, array, sig_dims):
        n_dimension = array.ndim
        # Handle chunked signal dimensions by merging just in case
        sig_dim_idxs = [*range(n_dimension)[-sig_dims:]]
        if any([len(array.chunks[c]) > 1 for c in sig_dim_idxs]):
Severity: Minor
Found in src/libertem/io/dataset/dask.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 raw_csr.py has 511 lines of code (exceeds 400 allowed). Consider refactoring.
Open

import typing
import os

import scipy.sparse
import numpy as np
Severity: Major
Found in src/libertem/io/dataset/raw_csr.py - About 4 hrs to fix

    Cyclomatic complexity is too high in function _execution_plan. (22)
    Open

    def _execution_plan(
        udfs, ds: Union[DataSet, DataSetMeta], device_class: Optional[DeviceClass] = None,
        available_backends: Iterable[ArrayBackend] = BACKENDS
    ) -> tuple[ArrayBackend, ExecutionPlan]:
        '''
    Severity: Minor
    Found in src/libertem/udf/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

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

        def _read_metadata(cls, path, use_ds=None):
            with ncempy.io.dm.fileDM(path, on_memory=True) as fp:
                tags = fp.allTags
                array_map = {}
                start_from = 1 if fp.thumbnail else 0
    Severity: Minor
    Found in src/libertem/io/dataset/dm_single.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 _read_metadata. (20)
    Open

        @classmethod
        def _read_metadata(cls, path, use_ds=None):
            with ncempy.io.dm.fileDM(path, on_memory=True) as fp:
                tags = fp.allTags
                array_map = {}
    Severity: Minor
    Found in src/libertem/io/dataset/dm_single.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 DatasetOpen has 104 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

    const DatasetOpen = () => {
        const dispatch = useDispatch();
        const openState = useSelector((state: RootReducer) => state.openDataset);
    
        const [didReset, setReset] = React.useState(false);
    Severity: Major
    Found in client/src/dataset/components/DatasetOpen.tsx - About 4 hrs to fix

      File state.py has 489 lines of code (exceeds 400 allowed). Consider refactoring.
      Open

      import os
      import copy
      import typing
      import itertools
      import logging
      Severity: Minor
      Found in src/libertem/web/state.py - About 4 hrs to fix

        Function worker_loop has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
        Open

        def worker_loop(
            queues: WorkerQueues,
            work_mem: dict,
            worker_idx: int,
            env: Environment
        Severity: Minor
        Found in src/libertem/executor/pipelined.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

        Function prime_numba_cache has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
        Open

        def prime_numba_cache(ds):
            dtypes = (np.float32, None)
            for dtype in dtypes:
                roi = np.zeros(ds.shape.nav, dtype=bool).reshape((-1,))
                roi[max(-ds._meta.sync_offset, 0)] = True
        Severity: Minor
        Found in src/libertem/web/dataset.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

        Message has 31 functions (exceeds 20 allowed). Consider refactoring.
        Open

        class Message:
            """
            possible messages - the translation of our python datatypes to json types
            """
        
        
        Severity: Minor
        Found in src/libertem/web/messages.py - About 3 hrs to fix

          DataSet has 31 functions (exceeds 20 allowed). Consider refactoring.
          Open

          class DataSet:
              # The default partition size in bytes
              MAX_PARTITION_SIZE = 512*1024*1024
          
              def __init__(self, io_backend: Optional["IOBackend"] = None):
          Severity: Minor
          Found in src/libertem/io/dataset/base/dataset.py - About 3 hrs to fix

            Cyclomatic complexity is too high in function main. (18)
            Open

            @click.command()
            @click.option('-h', '--host', help='host on which the server should listen on',
                          default="localhost", type=str, show_default=True)
            @click.option('-p', '--port', help='port on which the server should listen on, [default: 9000]',
                          default=None, type=int)
            Severity: Minor
            Found in src/libertem/web/cli.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 function radial_bins. (18)
            Open

            def radial_bins(centerX, centerY, imageSizeX, imageSizeY,
                    radius=None, radius_inner=0, n_bins=None, normalize=False, use_sparse=None, dtype=None):
                '''
                Generate antialiased rings
                '''
            Severity: Minor
            Found in src/libertem/masks.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 function combine_slices_multid. (18)
            Open

            def combine_slices_multid(slices1, slices2, shape):
                null_slice = slice(None, None, None)
            
                if not isinstance(slices1, tuple):
                    slices1 = (slices1,)

            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 _run_sync has a Cognitive Complexity of 26 (exceeds 5 allowed). Consider refactoring.
            Open

                def _run_sync(
                    self,
                    dataset: DataSet,
                    udf: Union[UDF, Iterable[UDF]],
                    roi: RoiT,
            Severity: Minor
            Found in src/libertem/api.py - About 3 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 make_with has a Cognitive Complexity of 26 (exceeds 5 allowed). Consider refactoring.
            Open

                def make_with(
                    cls,
                    executor_spec: ExecutorSpecType = 'dask',
                    *,
                    cpus: Optional[Union[int, Iterable[int]]] = None,
            Severity: Minor
            Found in src/libertem/api.py - About 3 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 initialize. (17)
            Open

                def initialize(self, executor):
                    nav_shape_from_XML = None
                    lowpath = self._path.lower()
                    if lowpath.endswith(".xml"):
                        self._path_raw, nav_shape_from_XML = executor.run_function(
            Severity: Minor
            Found in src/libertem/io/dataset/empad.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 make_get_read_ranges has a Cognitive Complexity of 25 (exceeds 5 allowed). Consider refactoring.
            Open

            def make_get_read_ranges(
                px_to_bytes=_default_px_to_bytes,
                read_ranges_tile_block=_default_read_ranges_tile_block,
            ):
                """
            Severity: Minor
            Found in src/libertem/io/dataset/base/tiling.py - About 3 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 __init__. (16)
            Open

                def __init__(self, path, dtype, scan_size=None, detector_size=None, enable_direct=False,
                             detector_size_raw=None, crop_detector_to=None, tileshape=None,
                             nav_shape=None, sig_shape=None, sync_offset=0, io_backend=None):
                    if enable_direct and io_backend is not None:
                        raise ValueError("can't specify io_backend and enable_direct at the same time")
            Severity: Minor
            Found in src/libertem/io/dataset/raw.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 function _correct_numba_inplace. (16)
            Open

            @numba.njit(cache=True, nogil=True)
            def _correct_numba_inplace(buffer, dark_image, gain_map, exclude_pixels, repair_environments,
                    repair_counts):
                '''
                Numerical work horse to perform detector corrections

            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

            Severity
            Category
            Status
            Source
            Language