def get_families_by_ids(self, family_ids=None):
if family_ids is None:<EOL><INDENT>raise NullArgument()<EOL><DEDENT>families = []<EOL>for i in family_ids:<EOL><INDENT>family = None<EOL>url_path = '<STR_LIT>' + str(i)<EOL>try:<EOL><INDENT>family = self._get_request(url_path)<EOL><DEDENT>except (NotFound, OperationFailed):<EOL><INDENT>if self._family_view == PLENARY:<EOL><INDENT>raise<EOL><DEDENT>else:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>if family:<EOL><INDENT>if not (self._family_view == COMPARATIVE and<EOL>family in families):<EOL><INDENT>families.append(family)<EOL><DEDENT><DEDENT><DEDENT>return objects.FamilykList(families)<EOL>
Gets a ``FamilyList`` corresponding to the given ``IdList``.

        In plenary mode, the returned list contains all of the families
        specified in the ``Id`` list, in the order of the list,
        including duplicates, or an error results if an ``Id`` in the
        supplied list is not found or inaccessible. Otherwise,
        inaccessible families may be omitted from the list and may
        present the elements in any order including returning a unique
        set.

        arg:    family_ids (osid.id.IdList): the list of ``Ids`` to
                retrieve
        return: (osid.relationship.FamilyList) - the returned ``Family
                list``
        raise:  NotFound - an ``Id was`` not found
        raise:  NullArgument - ``family_ids`` is ``null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization failure
        *compliance: mandatory -- This method must be implemented.*