docstr: Collect split adjustments for previous quarters and apply them to the
  given dictionary of splits for the given sid. Since overwrites just
  replace all estimates before the new quarter with NaN, we don't need to
  worry about re-applying split adjustments.
  
  Parameters
  ----------
  adjustments_for_sid : dict[str -> dict[int -> list]]
      The dictionary of adjustments to which splits need to be added.
      Initially it contains only overwrites.
  requested_qtr_data : pd.DataFrame
      The requested quarter data for each calendar date per sid.
  dates : pd.DatetimeIndex
      The calendar dates for which estimates data is requested.
  sid : int
      The sid for which adjustments need to be collected.
  sid_idx : int
      The index of `sid` in the adjusted array.
  sid_estimates : pd.DataFrame
      The raw estimates data for the given sid.
  split_adjusted_asof_idx : int
      The index in `dates` as-of which the data is split adjusted.
  pre_adjustments : tuple(list(float), list(int), pd.DatetimeIndex)
      The adjustment values and indexes in `dates` for
      adjustments that happened before the split-asof-date.
  post_adjustments : tuple(list(float), list(int), pd.DatetimeIndex)
      The adjustment values, indexes in `dates`, and timestamps for
      adjustments that happened after the split-asof-date.
  requested_split_adjusted_columns : list of str
      List of requested split adjusted column names.
docstr_tok: ["Collect","split","adjustments","for","previous","quarters","and","apply","them","to","the","given","dictionary","of","splits","for","the","given","sid",".","Since","overwrites","just","replace","all","estimates","before","the","new","quarter","with","NaN",",","we","do","n't","need","to","worry","about","re-applying","split","adjustments",".","Parameters","--","--","--","--","--","adjustments_for_sid",":","dict","[","str","-",">","dict","[","int","-",">","list","]","]","The","dictionary","of","adjustments","to","which","splits","need","to","be","added",".","Initially","it","contains","only","overwrites",".","requested_qtr_data",":","pd.DataFrame","The","requested","quarter","data","for","each","calendar","date","per","sid",".","dates",":","pd.DatetimeIndex","The","calendar","dates","for","which","estimates","data","is","requested",".","sid",":","int","The","sid","for","which","adjustments","need","to","be","collected",".","sid_idx",":","int","The","index","of","`","sid","`","in","the","adjusted","array",".","sid_estimates",":","pd.DataFrame","The","raw","estimates","data","for","the","given","sid",".","split_adjusted_asof_idx",":","int","The","index","in","`","dates","`","as-of","which","the","data","is","split","adjusted",".","pre_adjustments",":","tuple","(","list","(","float",")",",","list","(","int",")",",","pd.DatetimeIndex",")","The","adjustment","values","and","indexes","in","`","dates","`","for","adjustments","that","happened","before","the","split-asof-date",".","post_adjustments",":","tuple","(","list","(","float",")",",","list","(","int",")",",","pd.DatetimeIndex",")","The","adjustment","values",",","indexes","in","`","dates","`",",","and","timestamps","for","adjustments","that","happened","after","the","split-asof-date",".","requested_split_adjusted_columns",":","list","of","str","List","of","requested","split","adjusted","column","names","."]
code: def collect_split_adjustments(
      self,
      adjustments_for_sid,
      requested_qtr_data,
      dates,
      sid,
      sid_idx,
      sid_estimates,
      split_adjusted_asof_idx,
      pre_adjustments,
      post_adjustments,
      requested_split_adjusted_columns,
  ):
      """
      Collect split adjustments for previous quarters and apply them to the
      given dictionary of splits for the given sid. Since overwrites just
      replace all estimates before the new quarter with NaN, we don't need to
      worry about re-applying split adjustments.
  
      Parameters
      ----------
      adjustments_for_sid : dict[str -> dict[int -> list]]
          The dictionary of adjustments to which splits need to be added.
          Initially it contains only overwrites.
      requested_qtr_data : pd.DataFrame
          The requested quarter data for each calendar date per sid.
      dates : pd.DatetimeIndex
          The calendar dates for which estimates data is requested.
      sid : int
          The sid for which adjustments need to be collected.
      sid_idx : int
          The index of `sid` in the adjusted array.
      sid_estimates : pd.DataFrame
          The raw estimates data for the given sid.
      split_adjusted_asof_idx : int
          The index in `dates` as-of which the data is split adjusted.
      pre_adjustments : tuple(list(float), list(int), pd.DatetimeIndex)
          The adjustment values and indexes in `dates` for
          adjustments that happened before the split-asof-date.
      post_adjustments : tuple(list(float), list(int), pd.DatetimeIndex)
          The adjustment values, indexes in `dates`, and timestamps for
          adjustments that happened after the split-asof-date.
      requested_split_adjusted_columns : list of str
          List of requested split adjusted column names.
      """
      (
          pre_adjustments_dict,
          post_adjustments_dict,
      ) = self._collect_adjustments(
          requested_qtr_data,
          sid,
          sid_idx,
          sid_estimates,
          split_adjusted_asof_idx,
          pre_adjustments,
          post_adjustments,
          requested_split_adjusted_columns,
      )
      self.merge_split_adjustments_with_overwrites(
          pre_adjustments_dict,
          post_adjustments_dict,
          adjustments_for_sid,
          requested_split_adjusted_columns,
      )
  
imports: from abc import abstractmethod, abstractproperty
  from interface import implements
  import numpy
  import pandas
  from six import viewvalues
  from toolz import groupby
  from zipline.lib.adjusted_array import AdjustedArray
  from zipline.lib.adjustment import Datetime641DArrayOverwrite, Datetime64Overwrite, Float641DArrayOverwrite, Float64Multiply, Float64Overwrite
  from zipline.pipeline.common import EVENT_DATE_FIELD_NAME, FISCAL_QUARTER_FIELD_NAME, FISCAL_YEAR_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME
  from zipline.pipeline.loaders.base import PipelineLoader
  from zipline.utils.numpy_utils import datetime64ns_dtype, float64_dtype
  from zipline.pipeline.loaders.utils import ffill_across_cols, last_in_date_group
label_desc: Use image node_id 1 for calling the PreviousSplitAdjustedEarningsEstimatesLoader obj's underlying member method code with example usage: obj.collect_split_adjustments(adjustments_for_sid, requested_qtr_data, dates, sid, sid_idx, sid_estimates, split_adjusted_asof_idx, pre_adjustments, post_adjustments, requested_split_adjusted_columns) without return types