Get the names of all features in a PServer client.

    Inputs: - host_name: A string containing the address of the machine where the PServer instance is hosted.
            - client_name: The PServer client name.
            - client_pass: The PServer client's password.

    Output: - feature_names: A python list of feature names.

def get_feature_names(host_name, client_name, client_pass):
    """
    Get the names of all features in a PServer client.

    Inputs: - host_name: A string containing the address of the machine where the PServer instance is hosted.
            - client_name: The PServer client name.
            - client_pass: The PServer client's password.

    Output: - feature_names: A python list of feature names.
    """
    # Construct request.
    request = construct_request(model_type="pers",
                                client_name=client_name,
                                client_pass=client_pass,
                                command="getftrdef",
                                values="ftr=*")

    # Send request.
    request_result = send_request(host_name,
                                  request)

    # Extract a python list from xml object.
    feature_names = list()
    append_feature_name = feature_names.append

    if request_result is not None:
        feature_names_xml = request_result.text
        tree = etree.parse(StringIO(feature_names_xml))
        root = tree.getroot()

        xml_rows = root.findall("row/ftr")
        for xml_row in xml_rows:
            append_feature_name(xml_row.text)

    return feature_names