return the contract's ABI, marshaled into python dict
        :param contract_name: string - name of the contract to load
        :return: ABI, None - if successful
                 None, error - if error

def get(contract_name):
        '''
        return the contract's ABI, marshaled into python dict
        :param contract_name: string - name of the contract to load
        :return: ABI, None - if successful
                 None, error - if error
        '''

        if not Catalog.path:
            return None, "path to catalog must be set before searching it"
        if not contract_name:
            return None, "contract name missing"

        abi_file = "{}/{}.abi".format(Catalog.path, contract_name)

        try:
            with open(abi_file, "r") as file:
                abi = file.read()
        except Exception as e:
            return None, "Catalog.get error: {}".format(e)
        return abi, None