class_docstr: Estimates loader that loads data that needs to be split-adjusted.
  
  Parameters
  ----------
  split_adjustments_loader : SQLiteAdjustmentReader
      The loader to use for reading split adjustments.
  split_adjusted_column_names : iterable of str
      The column names that should be split-adjusted.
  split_adjusted_asof : pd.Timestamp
      The date that separates data into 2 halves: the first half is the set
      of dates up to and including the split_adjusted_asof date. All
      adjustments occurring during this first half are applied  to all
      dates in this first half. The second half is the set of dates after
      the split_adjusted_asof date. All adjustments occurring during this
      second half are applied sequentially as they appear in the timeline.
class_docstr_tok: ["Estimates","loader","that","loads","data","that","needs","to","be","split-adjusted",".","Parameters","--","--","--","--","--","split_adjustments_loader",":","SQLiteAdjustmentReader","The","loader","to","use","for","reading","split","adjustments",".","split_adjusted_column_names",":","iterable","of","str","The","column","names","that","should","be","split-adjusted",".","split_adjusted_asof",":","pd.Timestamp","The","date","that","separates","data","into","2","halves",":","the","first","half","is","the","set","of","dates","up","to","and","including","the","split_adjusted_asof","date",".","All","adjustments","occurring","during","this","first","half","are","applied","to","all","dates","in","this","first","half",".","The","second","half","is","the","set","of","dates","after","the","split_adjusted_asof","date",".","All","adjustments","occurring","during","this","second","half","are","applied","sequentially","as","they","appear","in","the","timeline","."]
docstr: dates : pd.DatetimeIndex
      The calendar dates.
  sid : int
      The sid for which we want to retrieve adjustments.
  split_adjusted_asof_idx : int
      The index in `dates` as-of which the data is split adjusted.
  
  Returns
  -------
  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.
docstr_tok: ["dates",":","pd.DatetimeIndex","The","calendar","dates",".","sid",":","int","The","sid","for","which","we","want","to","retrieve","adjustments",".","split_adjusted_asof_idx",":","int","The","index","in","`","dates","`","as-of","which","the","data","is","split","adjusted",".","Returns","--","--","--","-","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","."]
code: def retrieve_split_adjustment_data_for_sid(
      self, dates, sid, split_adjusted_asof_idx
  ):
      """
      dates : pd.DatetimeIndex
          The calendar dates.
      sid : int
          The sid for which we want to retrieve adjustments.
      split_adjusted_asof_idx : int
          The index in `dates` as-of which the data is split adjusted.
  
      Returns
      -------
      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.
      """
      adjustments = self._split_adjustments.get_adjustments_for_sid(
          "splits", sid
      )
      sorted(adjustments, key=lambda adj: adj[0])
      # Get rid of any adjustments that happen outside of our date index.
      adjustments = list(
          filter(lambda x: dates[0] <= x[0] <= dates[-1], adjustments)
      )
      adjustment_values = np.array([adj[1] for adj in adjustments])
      timestamps = pd.DatetimeIndex([adj[0] for adj in adjustments])
      # We need the first date on which we would have known about each
      # adjustment.
      date_indexes = dates.searchsorted(timestamps)
      pre_adjustment_idxs = np.where(
          date_indexes <= split_adjusted_asof_idx
      )[0]
      last_adjustment_split_asof_idx = -1
      if len(pre_adjustment_idxs):
          last_adjustment_split_asof_idx = pre_adjustment_idxs.max()
      pre_adjustments = (
          adjustment_values[: last_adjustment_split_asof_idx + 1],
          date_indexes[: last_adjustment_split_asof_idx + 1],
      )
      post_adjustments = (
          adjustment_values[last_adjustment_split_asof_idx + 1 :],
          date_indexes[last_adjustment_split_asof_idx + 1 :],
          timestamps[last_adjustment_split_asof_idx + 1 :],
      )
      return pre_adjustments, post_adjustments
  
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 8 for calling the SplitAdjustedEstimatesLoader obj's underlying member method code with example usage: obj.retrieve_split_adjustment_data_for_sid(dates, sid, split_adjusted_asof_idx) and returns: pre_adjustments,  post_adjustments