def sorted_violation_subtypes_by_severity(
    state_code: str, violation_subtypes: List[str], default_severity_order: List[str]
) -> List[str]:
    """Sorts the provided |violation_subtypes| by severity, and returns the list in order of descending severity.
    Defers to the severity ordering in the |default_severity_order| if no state-specific logic is implemented."""
    if state_code.upper() == "US_MO":
        return us_mo_violation_utils.us_mo_sorted_violation_subtypes_by_severity(
            violation_subtypes
        )
    if state_code.upper() == "US_PA":
        return us_pa_violation_utils.us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes
        )

    logging.warning(
        "No implemented violation subtype ordering for state [%s]", state_code
    )

    sorted_violation_subtypes = sorted(
        violation_subtypes,
        key=lambda subtype: safe_list_index(
            default_severity_order, subtype, sys.maxsize
        ),
    )

    return sorted_violation_subtypes
示例#2
0
    def test_us_pa_sorted_violation_subtypes_by_severity(self) -> None:
        violation_subtypes = ['LOW_TECH', 'LAW', 'ABSCONDED']

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = ['LAW', 'ABSCONDED', 'LOW_TECH']

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
    def test_us_pa_sorted_violation_subtypes_by_severity(self) -> None:
        violation_subtypes = ["LOW_TECH", "LAW", "ABSCONDED"]

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = ["LAW", "ABSCONDED", "LOW_TECH"]

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
示例#4
0
    def test_us_pa_sorted_violation_subtypes_by_severity_empty_list(
            self) -> None:
        violation_subtypes: List[str] = []

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes: List[str] = []

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
示例#5
0
    def test_us_pa_sorted_violation_subtypes_by_severity_electronic_monitoring(
            self) -> None:
        violation_subtypes = ['LOW_TECH', 'MED_TECH', 'ELEC_MONITORING']

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = ['ELEC_MONITORING', 'MED_TECH', 'LOW_TECH']

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
    def test_us_pa_sorted_violation_subtypes_by_severity_electronic_monitoring(
        self, ) -> None:
        violation_subtypes = ["LOW_TECH", "MED_TECH", "ELEC_MONITORING"]

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = ["ELEC_MONITORING", "MED_TECH", "LOW_TECH"]

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
示例#7
0
    def test_us_pa_sorted_violation_subtypes_by_severity_substance_abuse(
            self) -> None:
        violation_subtypes = ['LOW_TECH', 'SUBSTANCE_ABUSE', 'ELEC_MONITORING']

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = [
            'SUBSTANCE_ABUSE', 'ELEC_MONITORING', 'LOW_TECH'
        ]

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
示例#8
0
    def test_us_pa_sorted_violation_subtypes_by_severity_high_tech(
            self) -> None:
        violation_subtypes = ['ABSCONDED', 'SUBSTANCE_ABUSE', 'HIGH_TECH']

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = [
            'HIGH_TECH', 'ABSCONDED', 'SUBSTANCE_ABUSE'
        ]

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
    def test_us_pa_sorted_violation_subtypes_by_severity_substance_abuse(
            self) -> None:
        violation_subtypes = ["LOW_TECH", "SUBSTANCE_ABUSE", "ELEC_MONITORING"]

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = [
            "SUBSTANCE_ABUSE", "ELEC_MONITORING", "LOW_TECH"
        ]

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)
    def test_us_pa_sorted_violation_subtypes_by_severity_high_tech(
            self) -> None:
        violation_subtypes = ["ABSCONDED", "SUBSTANCE_ABUSE", "HIGH_TECH"]

        sorted_subtypes = us_pa_sorted_violation_subtypes_by_severity(
            violation_subtypes)

        expected_sorted_subtypes = [
            "HIGH_TECH", "ABSCONDED", "SUBSTANCE_ABUSE"
        ]

        self.assertEqual(expected_sorted_subtypes, sorted_subtypes)