예제 #1
0
    def _get_random_reviewers(self, random_number: int,
                              pr_author: str) -> typing.Set[str]:
        choices = {
            **{
                user.lower(): weight
                for user, weight in self.config["users"].items()
            },
            **{
                f"@{team.team}": weight
                for team, weight in self.config["teams"].items()
            },
        }

        try:
            del choices[pr_author.lower()]
        except KeyError:
            pass

        count = min(self.config["random_count"], len(choices))

        return utils.get_random_choices(
            random_number,
            choices,
            count,
        )
예제 #2
0
    def _get_random_reviewers(self, random_number: int, pr_author: str) -> set:
        if isinstance(self.config["users"], dict):
            user_weights = self.config["users"]
        else:
            user_weights = {user: 1 for user in self.config["users"]}

        if isinstance(self.config["teams"], dict):
            team_weights = self.config["teams"]
        else:
            team_weights = {team: 1 for team in self.config["teams"]}

        choices = {
            **{user.lower(): weight
               for user, weight in user_weights.items()},
            **{f"@{team}": weight
               for team, weight in team_weights.items()},
        }

        try:
            del choices[pr_author.lower()]
        except KeyError:
            pass

        count = min(self.config["random_count"], len(choices))

        return utils.get_random_choices(
            random_number,
            choices,
            count,
        )
예제 #3
0
def test_get_random_choices():
    choices = {
        "jd": 10,
        "sileht": 1,
        "foobar": 3,
    }
    assert utils.get_random_choices(0, choices, 1) == {"foobar"}
    assert utils.get_random_choices(1, choices, 1) == {"foobar"}
    assert utils.get_random_choices(2, choices, 1) == {"foobar"}
    assert utils.get_random_choices(3, choices, 1) == {"jd"}
    assert utils.get_random_choices(4, choices, 1) == {"jd"}
    assert utils.get_random_choices(11, choices, 1) == {"jd"}
    assert utils.get_random_choices(12, choices, 1) == {"jd"}
    assert utils.get_random_choices(13, choices, 1) == {"sileht"}
    assert utils.get_random_choices(14, choices, 1) == {"foobar"}
    assert utils.get_random_choices(15, choices, 1) == {"foobar"}
    assert utils.get_random_choices(16, choices, 1) == {"foobar"}
    assert utils.get_random_choices(17, choices, 1) == {"jd"}
    assert utils.get_random_choices(18, choices, 1) == {"jd"}
    assert utils.get_random_choices(19, choices, 1) == {"jd"}
    assert utils.get_random_choices(20, choices, 1) == {"jd"}
    assert utils.get_random_choices(21, choices, 1) == {"jd"}
    assert utils.get_random_choices(22, choices, 1) == {"jd"}
    assert utils.get_random_choices(23, choices, 1) == {"jd"}
    assert utils.get_random_choices(24, choices, 1) == {"jd"}
    assert utils.get_random_choices(25, choices, 1) == {"jd"}
    assert utils.get_random_choices(26, choices, 1) == {"jd"}
    assert utils.get_random_choices(27, choices, 1) == {"sileht"}
    assert utils.get_random_choices(28, choices, 1) == {"foobar"}
    assert utils.get_random_choices(29, choices, 1) == {"foobar"}
    assert utils.get_random_choices(30, choices, 1) == {"foobar"}
    assert utils.get_random_choices(31, choices, 1) == {"jd"}
    assert utils.get_random_choices(32, choices, 1) == {"jd"}
    assert utils.get_random_choices(23, choices, 2) == {"sileht", "jd"}
    assert utils.get_random_choices(2, choices, 2) == {"jd", "foobar"}
    assert utils.get_random_choices(4, choices, 2) == {"jd", "foobar"}
    assert utils.get_random_choices(0, choices,
                                    3) == {"jd", "sileht", "foobar"}
    with pytest.raises(ValueError):
        assert utils.get_random_choices(4, choices, 4) == {"jd", "sileht"}