diff --git a/arrow/arrow.py b/arrow/arrow.py index 8d329efd..19132f98 100644 --- a/arrow/arrow.py +++ b/arrow/arrow.py @@ -303,7 +303,9 @@ def utcfromtimestamp(cls, timestamp: Union[int, float, str]) -> "Arrow": ) @classmethod - def fromdatetime(cls, dt: dt_datetime, tzinfo: Optional[TZ_EXPR] = None) -> "Arrow": + def fromdatetime( + cls, dt: Union["Arrow", dt_datetime], tzinfo: Optional[TZ_EXPR] = None + ) -> "Arrow": """Constructs an :class:`Arrow ` object from a ``datetime`` and optional replacement timezone. @@ -318,6 +320,10 @@ def fromdatetime(cls, dt: dt_datetime, tzinfo: Optional[TZ_EXPR] = None) -> "Arr >>> arrow.Arrow.fromdatetime(dt) + **NOTE**: + Although you can pass a :class:`Arrow `, doing so is not recommended + except for some cases where it simplifies handling both. + """ if tzinfo is None: @@ -635,8 +641,8 @@ def ceil(self, frame: _T_FRAMES) -> "Arrow": def span_range( cls, frame: _T_FRAMES, - start: dt_datetime, - end: dt_datetime, + start: Union["Arrow", dt_datetime], + end: Union["Arrow", dt_datetime], tz: Optional[TZ_EXPR] = None, limit: Optional[int] = None, bounds: _BOUNDS = "[)", @@ -646,8 +652,8 @@ def span_range( representing a series of timespans between two inputs. :param frame: The timeframe. Can be any ``datetime`` property (day, hour, minute...). - :param start: A datetime expression, the start of the range. - :param end: (optional) A datetime expression, the end of the range. + :param start: A datetime or :class:`Arrow ` expression, the start of the range. + :param end: (optional) A datetime or :class:`Arrow ` expression, the end of the range. :param tz: (optional) A :ref:`timezone expression `. Defaults to ``start``'s timezone, or UTC if ``start`` is naive. :param limit: (optional) A maximum number of tuples to return.