Repository: ibis-project/ibis

Issue:
docs: `TemporalValue.strftime` method not documented in reference
### Please describe the issue

I see that Ibis has support for a `strftime` method: https://github.com/ibis-project/ibis/blob/ca97dfba1dca428456a8c28b1c2e3b3692ec6547/ibis/expr/types/temporal.py#L26 but I don't see it documented here: https://ibis-project.org/reference/expression-temporal

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct


Discussion:

Resolving patch:
diff --git a/ibis/expr/types/temporal.py b/ibis/expr/types/temporal.py
--- a/ibis/expr/types/temporal.py
+++ b/ibis/expr/types/temporal.py
@@ -21,37 +21,6 @@
     import ibis.expr.types as ir
 
 
-@public
-class TemporalValue(Value):
-    def strftime(self, format_str: str) -> ir.StringValue:
-        """Format timestamp according to `format_str`.
-
-        Format string may depend on the backend, but we try to conform to ANSI
-        `strftime`.
-
-        Parameters
-        ----------
-        format_str
-            `strftime` format string
-
-        Returns
-        -------
-        StringValue
-            Formatted version of `arg`
-        """
-        return ops.Strftime(self, format_str).to_expr()
-
-
-@public
-class TemporalScalar(Scalar, TemporalValue):
-    pass
-
-
-@public
-class TemporalColumn(Column, TemporalValue):
-    pass
-
-
 class _DateComponentMixin:
     """Temporal expressions that have a date component."""
 
@@ -176,11 +145,26 @@ def between(
 
 
 @public
-class TimeValue(_TimeComponentMixin, TemporalValue):
-    def truncate(
-        self,
-        unit: Literal["h", "m", "s", "ms", "us", "ns"],
-    ) -> TimeValue:
+class TimeValue(_TimeComponentMixin, Value):
+    def strftime(self, format_str: str) -> ir.StringValue:
+        """Format a time according to `format_str`.
+
+        Format string may depend on the backend, but we try to conform to ANSI
+        `strftime`.
+
+        Parameters
+        ----------
+        format_str
+            `strftime` format string
+
+        Returns
+        -------
+        StringValue
+            Formatted version of `arg`
+        """
+        return ops.Strftime(self, format_str).to_expr()
+
+    def truncate(self, unit: Literal["h", "m", "s", "ms", "us", "ns"]) -> TimeValue:
         """Truncate the expression to a time expression in units of `unit`.
 
         Commonly used for time series resampling.
@@ -317,17 +301,35 @@ def delta(
 
 
 @public
-class TimeScalar(TemporalScalar, TimeValue):
+class TimeScalar(Scalar, TimeValue):
     pass
 
 
 @public
-class TimeColumn(TemporalColumn, TimeValue):
+class TimeColumn(Column, TimeValue):
     pass
 
 
 @public
-class DateValue(TemporalValue, _DateComponentMixin):
+class DateValue(Value, _DateComponentMixin):
+    def strftime(self, format_str: str) -> ir.StringValue:
+        """Format a date according to `format_str`.
+
+        Format string may depend on the backend, but we try to conform to ANSI
+        `strftime`.
+
+        Parameters
+        ----------
+        format_str
+            `strftime` format string
+
+        Returns
+        -------
+        StringValue
+            Formatted version of `arg`
+        """
+        return ops.Strftime(self, format_str).to_expr()
+
     def truncate(self, unit: Literal["Y", "Q", "M", "W", "D"]) -> DateValue:
         """Truncate date expression to units of `unit`.
 
@@ -458,17 +460,35 @@ def delta(
 
 
 @public
-class DateScalar(TemporalScalar, DateValue):
+class DateScalar(Scalar, DateValue):
     pass
 
 
 @public
-class DateColumn(TemporalColumn, DateValue):
+class DateColumn(Column, DateValue):
     pass
 
 
 @public
-class TimestampValue(_DateComponentMixin, _TimeComponentMixin, TemporalValue):
+class TimestampValue(_DateComponentMixin, _TimeComponentMixin, Value):
+    def strftime(self, format_str: str) -> ir.StringValue:
+        """Format a timestamp according to `format_str`.
+
+        Format string may depend on the backend, but we try to conform to ANSI
+        `strftime`.
+
+        Parameters
+        ----------
+        format_str
+            `strftime` format string
+
+        Returns
+        -------
+        StringValue
+            Formatted version of `arg`
+        """
+        return ops.Strftime(self, format_str).to_expr()
+
     def truncate(
         self,
         unit: Literal["Y", "Q", "M", "W", "D", "h", "m", "s", "ms", "us", "ns"],
@@ -738,12 +758,12 @@ def delta(
 
 
 @public
-class TimestampScalar(TemporalScalar, TimestampValue):
+class TimestampScalar(Scalar, TimestampValue):
     pass
 
 
 @public
-class TimestampColumn(TemporalColumn, TimestampValue):
+class TimestampColumn(Column, TimestampValue):
     pass
 
 


Test patch: