MCPcopy Index your code
hub / github.com/pydata/xarray / _generate_linear_date_range_with_freq

Function _generate_linear_date_range_with_freq

xarray/coding/cftime_offsets.py:882–940  ·  view source on GitHub ↗

Generate a regular range of cftime.datetime objects with a given frequency. Adapted from pandas.tseries.offsets.generate_range (now at pandas.core.arrays.datetimes._generate_range). Parameters ---------- start : cftime.datetime, or None Start of range end : cfti

(start, end, periods, freq)

Source from the content-addressed store, hash-verified

880
881
882def _generate_linear_date_range_with_freq(start, end, periods, freq):
883 """Generate a regular range of cftime.datetime objects with a
884 given frequency.
885
886 Adapted from pandas.tseries.offsets.generate_range (now at
887 pandas.core.arrays.datetimes._generate_range).
888
889 Parameters
890 ----------
891 start : cftime.datetime, or None
892 Start of range
893 end : cftime.datetime, or None
894 End of range
895 periods : int, or None
896 Number of elements in the sequence
897 freq: str
898 Step size between cftime.datetime objects. Not None.
899
900 Returns
901 -------
902 A generator object of cftime.datetime objects
903 """
904 offset = to_offset(freq)
905
906 if start:
907 # From pandas GH 56147 / 56832 to account for negative direction and
908 # range bounds
909 if offset.n >= 0:
910 start = offset.rollforward(start)
911 else:
912 start = offset.rollback(start)
913
914 if periods is None and end < start and offset.n >= 0:
915 end = None
916 periods = 0
917
918 if end is None:
919 end = start + (periods - 1) * offset
920
921 if start is None:
922 start = end - (periods - 1) * offset
923
924 current = start
925 if offset.n >= 0:
926 while current <= end:
927 yield current
928
929 next_date = current + offset
930 if next_date <= current:
931 raise ValueError(f"Offset {offset} did not increment date")
932 current = next_date
933 else:
934 while current >= end:
935 yield current
936
937 next_date = current + offset
938 if next_date >= current:
939 raise ValueError(f"Offset {offset} did not decrement date")

Callers 1

_cftime_rangeFunction · 0.85

Calls 3

to_offsetFunction · 0.85
rollforwardMethod · 0.45
rollbackMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…