code: def get_segment_efforts(self, segment_id, athlete_id=None,
                              start_date_local=None, end_date_local=None,
                              limit=None):
          params = {"segment_id": segment_id}
          if athlete_id is not None:
              params['athlete_id'] = athlete_id
          if start_date_local:
              if isinstance(start_date_local, six.string_types):
                  start_date_local = arrow.get(start_date_local).naive
              params["start_date_local"] = start_date_local.strftime("%Y-%m-%dT%H:%M:%SZ")
          if end_date_local:
              if isinstance(end_date_local, six.string_types):
                  end_date_local = arrow.get(end_date_local).naive
              params["end_date_local"] = end_date_local.strftime("%Y-%m-%dT%H:%M:%SZ")
          if limit is not None:
              params["limit"] = limit
          result_fetcher = functools.partial(self.protocol.get,
                                             '/segments/{segment_id}/all_efforts',
                                             **params)
          return BatchedResultsIterator(entity=model.BaseEffort, bind_client=self,
                                        result_fetcher=result_fetcher, limit=limit)