Repository: sktime/sktime

Issue:
[DOC] `DateTimeFeatures` docstring should document all possible feature names for `manual_selection`
The current docstring of the `DateTimeFeatures` transformer does not document all possible feature names for `manual_selection` (e.g., `"day_of_week"`).

As far as I see, this information cannot be gleaned from the current API documentation, only by inspecting the code in the `_calendar_dummies` private function.

Further, the exact values should be documented, e.g., does this result in an integer based column, and if yes, is it 0- or 1- based offset, to what? E.g., to Mondays or Sundays?

FYI @KishManani, @VyomkeshVyas


Discussion:
If this issue is not assigned to anyone yet, I'd like to work on this. :)
all yours! I think the easiest way is to reverse engineer from the `_calendar_dummies` method.
Hello, I would like to work on this issue if possible. I am also new to open source so any tips would be really helpful.
of course! Here's our contribution guide:
https://www.sktime.net/en/latest/get_involved/contributing.html

Let us know if we can help!
If you need help with making a pull request or setting up your local developer setup, feel free to join the Friday meet-ups, we usually do screenshares for new contributors there.
The current docstring mentions feature names like 'month_of_year' and 'day_of_month' but these are not present in the `_calendar_dummies ` method. Is this an error or am I missing something here?
> Is this an error or am I missing something here?

Could be an error - have you tried using them and it breaks? If yes, that's a bug (in this case, congratulations, you can get the `bug` badge as soon as you open a bug report!)
Never mind, I tried using said feature names and the code works returning the corresponding dataframe/series with correct values. I'll proceed with documenting all the features names with their return values.

Resolving patch:
diff --git a/sktime/transformations/series/date.py b/sktime/transformations/series/date.py
--- a/sktime/transformations/series/date.py
+++ b/sktime/transformations/series/date.py
@@ -73,13 +73,65 @@ class DateTimeFeatures(BaseTransformer):
     manual_selection: str, optional (default=None)
         Manual selection of dummys. Notation is child of parent for precise notation.
         Will ignore specified feature_scope, but will still check with warning against
-        a specified ts_freq.
-        Examples for possible values:
+        a specified ts_freq. All columns returned are integer based. Dates are presented
+        in DD-MM-YYYY format below.
+        Supported values:
         * None
+        * quarter_of_year
+            1-based index
+            1-(Jan to Mar), 2-(Apr to Jun), 3-(Jul to Sep), 4-(Oct to Dec)
+        * month_of_year
+            1-based offset to January
+            1-January,2-February,...,12-December
+        * week_of_year
+            1-based offset to the first week of an ISO year
         * day_of_year
-        * day_of_month
+            1-based offset to first of January
+            1 is 01-01-YYYY, 2 is 02-01-YYYY and so on.
+        * month_of_quarter
+            1-based index to first month of each quarter(Jan,Apr,Jul,Oct)
+            For the first quarter: 1-January, 2-February, 3-March
+        * week_of_quarter
+            1-based offset to first week of the quarter.
+            The first/last week of the quarter may or may not include 7 days. All other
+            weeks have 7 days.
+            A week is taken to start on Monday.
+            If the month begins on a Monday, then the first seven days upto the next
+            Monday is week 1.
+            Otherwise, week 1 is from the 1st of that month upto the first Monday.
+            Example:
+                If 01-01-YYYY is a Monday,
+                Week 1 : Mon,Tue,Wed,Thu,Fri,Sat,Sun(07-01-YYYY)
+                Week 2 : Mon(08-01-YYYY),Tue,...,Sun
+                If 01-01-YYYY is a Thursday,
+                Week 1 : Thu,Fri,Sat,Sun(04-01-YYYY)
+                Week 2 : Mon(05-01-YYYY),Tue,...,Sun
         * day_of_quarter
+            1-based index
+        * week_of_month
+            1-based index
+            1 indicates the first week of the month.
+            First week includes the first 7 days of the month(01-MM-YYYY to 07-MM-YYYY)
+            2 indicates the second week of the month.
+            Second week includes the next 7 days(08-MM-YYYY to 14-MM-YYYY) and so on.
+        * day_of_month
+            1-based offset to first day of each month
+            1 is 01-MM-YYYY, 2 is 02-MM-YYYY and so on.
+        * day_of_week
+            0-based offset to Monday
+            0-Monday,1-Tuesday,...,6-Sunday
+        * hour_of_week
+            0-based offset to Monday(00:00:00+00:00)
+        * hour_of_day
+            0-based offset to 00:00:00+00:00
+        * minute_of_hour
+            0-based offset to 00:00:00
+        * second_of_minute
+            0-based offset to 00:00:00
+        * millisecond_of_second
+            0-based offset to 00:00:00.0000
         * is_weekend
+            1 indicates weekend, 0 indicates it is not a weekend
         * year (special case with no lower frequency).
     keep_original_columns :  boolean, optional, default=False
         Keep original columns in X passed to `.transform()`.


Test patch: