lenskit/lkpy

View on GitHub
src/lenskit/knn/user.py

Summary

Maintainability
A
2 hrs
Test Coverage

Showing 22 of 22 total issues

Function __call__ has 28 lines of code (exceeds 25 allowed). Consider refactoring.
Open

def __call__(self, query: QueryInput, items: ItemList) -> ItemList:
"""
Compute predictions for a user and items.
 
Args:
Severity: Minor
Found in src/lenskit/knn/user.py - About 1 hr to fix

    Function score_items_with_neighbors has 27 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

    def score_items_with_neighbors(
    log: structlog.stdlib.BoundLogger,
    items: torch.Tensor,
    nbr_rows: torch.Tensor,
    nbr_sims: torch.Tensor,
    Severity: Minor
    Found in src/lenskit/knn/user.py - About 1 hr to fix

      Avoid too many return statements within this function.
      Open

      return UserRatings(index, ratings, umean)
      Severity: Major
      Found in src/lenskit/knn/user.py - About 30 mins to fix

        Line too long (89 > 79 characters)
        Open

        _log.warning("normalized ratings are zero, centering is not recommended")
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (87 > 79 characters)
        Open

        _log.warning("user %s has no ratings and none provided", query.user_id)
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (89 > 79 characters)
        Open

        user history component (e.g., :class:`~lenskit.basic.UserTrainingHistoryLookup`).
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (96 > 79 characters)
        Open

        from pydantic import AliasChoices, BaseModel, Field, PositiveFloat, PositiveInt, field_validator
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (85 > 79 characters)
        Open

        the user's ratings (indexed by item id); if provided, will be used to
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (89 > 79 characters)
        Open

        (np.where(rmask, 0, 1), nbr_rates.indices, nbr_rates.indptr), nbr_rates.shape
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (80 > 79 characters)
        Open

        assert ratings.shape == (len(self.items_),) # ratings is a dense vector
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (84 > 79 characters)
        Open

        either directly in the input or by wiring its query input to the output of a
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (93 > 79 characters)
        Open

        iidxs = items.numbers(format="torch", vocabulary=self.items_, missing="negative").to(
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (80 > 79 characters)
        Open

        # step 3: subtract the column starts — this will give us numbers within rows
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (85 > 79 characters)
        Open

        max_nbrs: PositiveInt = Field(20, validation_alias=AliasChoices("max_nbrs", "k"))
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (80 > 79 characters)
        Open

        if less than the smallest 32-bit normal (:math:`1.175 \\times 10^{-38}`), is
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (89 > 79 characters)
        Open

        "Ratings seem to have the same value, centering is not recommended.",
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (93 > 79 characters)
        Open

        ratings(pandas.DataFrame): (user, item, rating) data for collaborative filtering.
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (90 > 79 characters)
        Open

        results = pd.Series(scores, index=items.ids()[ki_mask.numpy()], name="prediction")
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (83 > 79 characters)
        Open

        _log.warning("user %s has items but no ratings", query.user_id)
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (81 > 79 characters)
        Open

        def train(self, data: Dataset, options: TrainingOptions = TrainingOptions()):
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (98 > 79 characters)
        Open

        ui_nos = query.user_items.numbers("torch", missing="negative", vocabulary=self.items_)
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8

        Line too long (96 > 79 characters)
        Open

        "Train" a user-user CF model. This memorizes the rating data in a format that is usable
        Severity: Minor
        Found in src/lenskit/knn/user.py by pep8
        Category
        Status