Skip to content

bookops_worldcat.utils

Shared utilities module.

prep_oclc_number_str

prep_oclc_number_str(oclcNumber: str) -> str

Checks for OCLC prefixes and removes them.

PARAMETER DESCRIPTION
oclcNumber

OCLC record as string

TYPE: str

RETURNS DESCRIPTION
str

oclcNumber as int

Source code in bookops_worldcat\utils.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
def prep_oclc_number_str(oclcNumber: str) -> str:
    """
    Checks for OCLC prefixes and removes them.

    Args:
        oclcNumber:                OCLC record as string

    Returns:
        oclcNumber as int
    """
    if "ocm" in oclcNumber or "ocn" in oclcNumber:
        oclcNumber = oclcNumber.strip()[3:]
    elif "on" in oclcNumber:
        oclcNumber = oclcNumber.strip()[2:]

    try:
        oclcNumber = str(int(oclcNumber))
        return oclcNumber
    except ValueError:
        raise InvalidOclcNumber("Argument 'oclcNumber' does not look like real OCLC #.")

verify_oclc_number

verify_oclc_number(oclcNumber: Union[int, str]) -> str

Verifies a valid looking OCLC number is passed and normalize it as integer.

PARAMETER DESCRIPTION
oclcNumber

OCLC record number

TYPE: Union[int, str]

RETURNS DESCRIPTION
str

oclcNumber

Source code in bookops_worldcat\utils.py
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
def verify_oclc_number(oclcNumber: Union[int, str]) -> str:
    """
    Verifies a valid looking OCLC number is passed and normalize it as integer.

    Args:
        oclcNumber:                OCLC record number

    Returns:
        oclcNumber

    """
    if oclcNumber is None:
        raise InvalidOclcNumber("Argument 'oclcNumber' is missing.")

    elif type(oclcNumber) is int:
        return str(oclcNumber)

    elif type(oclcNumber) is str:
        return prep_oclc_number_str(oclcNumber)  # type: ignore

    else:
        raise InvalidOclcNumber("Argument 'oclc_number' is of invalid type.")

verify_oclc_numbers

verify_oclc_numbers(
    oclcNumbers: Union[str, List[Union[str, int]]]
) -> List[str]

Parses and verifies list of oclcNumbers

PARAMETER DESCRIPTION
oclcNumbers

list of OCLC control numbers for which holdings should be set; they can be integers or strings with or without OCLC # prefix; if str the numbers must be separated by comma

TYPE: Union[str, List[Union[str, int]]]

Returns: vetted_numbers: list of vetted oclcNumbers

Source code in bookops_worldcat\utils.py
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
def verify_oclc_numbers(oclcNumbers: Union[str, List[Union[str, int]]]) -> List[str]:
    """
    Parses and verifies list of oclcNumbers

    Args:
        oclcNumbers:            list of OCLC control numbers for which holdings
                                should be set;
                                they can be integers or strings with or without
                                OCLC # prefix;
                                if str the numbers must be separated by comma
    Returns:
        vetted_numbers:         list of vetted oclcNumbers
    """

    # change to list if comma separated string
    if type(oclcNumbers) is str and oclcNumbers != "":
        oclcNumbers = _str2list(oclcNumbers)  # type: ignore

    if not oclcNumbers or type(oclcNumbers) is not list:
        raise InvalidOclcNumber(
            "Argument 'oclcNumbers' must be a list or comma separated string of valid OCLC #."
        )

    try:
        vetted_numbers = [str(verify_oclc_number(n)) for n in oclcNumbers]
        return vetted_numbers
    except InvalidOclcNumber:
        raise InvalidOclcNumber("One of passed OCLC #s is invalid.")