    def list(
        self,{% for parm in list_method.parameters %}
        {{ parm.name }}: {{ parm.annotation }} = {{ parm.default }},{% endfor %}
        limit: int = DEFAULT_LIMIT_READ,
        filter: dm.Filter | None = None,{% if data_class.has_one_to_many_edges %}
        retrieve_edges: bool = True,{% endif %}
    ) -> {{ data_class.read_list_name }}:
        """List/filter {{ data_class.doc_list_name }}

        Args:{% for parm in list_method.parameters %}
            {{ parm.name }}: {{ parm.description }}{% endfor %}
            limit: Maximum number of {{ data_class.doc_list_name }} to return. Defaults to 25. Set to -1, float("inf") or None to return all items.
            filter: (Advanced) If the filtering available in the above is not sufficient, you can write your own filtering which will be ANDed with the filter above. {% if data_class.has_one_to_many_edges %}
            retrieve_edges: Whether to retrieve {{ data_class.one_to_many_edges_docs }} external ids for the {{ data_class.doc_list_name }}. Defaults to True.{% endif %}

        Returns:
            List of requested {{ data_class.doc_list_name}}

        Examples:

            List {{ data_class.doc_list_name }} and limit to 5:

                >>> from {{ top_level_package }} import {{ client_name }}
                >>> client = {{ client_name }}()
                >>> {{ data_class.variable_list }} = client.{{ api_class.client_attribute }}.list(limit=5)

        """
        filter_ = _create_filter(
            self._view_id,{% for parm in list_method.parameters %}
            {{ parm.name }},{% endfor %}
            filter,
        )

        {% if data_class.has_one_to_many_edges %}{{ data_class.variable_list }} = self._list(limit=limit, filter=filter_)

        if retrieve_edges:{% for field in data_class.one_to_many_edges %}
            if len(external_ids := {{ data_class.variable_list }}.as_external_ids()) > IN_FILTER_LIMIT:
                {{ field.variable }}_edges = self.{{ field.edge_api_attribute }}.list(limit=-1, space=space)
            else:
                {{ field.variable }}_edges = self.{{ field.edge_api_attribute }}.list(external_ids, limit=-1, space=space)
            self._set_{{ field.name }}({{ data_class.variable_list }}, {{ field.variable }}_edges){% endfor %}

        return {{ data_class.variable_list }}{% else %}return self._list(limit=limit, filter=filter_){% endif %}
