code: def from_span(cls, inputs, window_length, span, **kwargs):
          
          if span <= 1:
              raise ValueError(
                  "`span` must be a positive number. %s was passed." % span
              )
  
          decay_rate = (1.0 - (2.0 / (1.0 + span)))
          assert 0.0 < decay_rate <= 1.0
  
          return cls(
              inputs=inputs,
              window_length=window_length,
              decay_rate=decay_rate,
              **kwargs
          )
docs: Convenience constructor for passing `decay_rate` in terms of `span`.
  
          Forwards `decay_rate` as `1 - (2.0 / (1 + span))`.  This provides the
          behavior equivalent to passing `span` to pandas.ewma.
  
          Examples
          --------
          .. code-block:: python
  
              # Equivalent to:
              # my_ewma = EWMA(
              #    inputs=[EquityPricing.close],
              #    window_length=30,
              #    decay_rate=(1 - (2.0 / (1 + 15.0))),
              # )
              my_ewma = EWMA.from_span(
                  inputs=[EquityPricing.close],
                  window_length=30,
                  span=15,
              )
  
          Notes
          -----
          This classmethod is provided by both
          :class:`ExponentialWeightedMovingAverage` and
          :class:`ExponentialWeightedMovingStdDev`.