Skip to content

Commit f1df0f3

Browse files
authored
fix: stripped time from meta date as datetime (#248)
This reverts commit ac3309a.
2 parents ac3309a + 495f2cf commit f1df0f3

2 files changed

Lines changed: 19 additions & 9 deletions

File tree

mkdocs_rss_plugin/plugin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def __init__(self):
6161
self.src_date_created = self.src_date_updated = "git"
6262
self.meta_datetime_format: Optional[str] = None
6363
self.meta_default_timezone: str = "UTC"
64-
self.meta_default_time: Optional[str] = None
64+
self.meta_default_time: Optional[datetime.time] = None
6565
# pages storage
6666
self.pages_to_filter: list = []
6767
# prepare output feeds
@@ -160,6 +160,8 @@ def on_config(self, config: config_options.Config) -> dict:
160160
f"'{self.meta_default_time}' format doesn't match the expected "
161161
f"format %H:%M. Trace: {err}"
162162
)
163+
else:
164+
self.meta_default_time = datetime.min
163165

164166
if self.config.use_git:
165167
logger.debug(

mkdocs_rss_plugin/util.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ def get_file_dates(
168168
source_date_update: str = "git",
169169
meta_datetime_format: str = "%Y-%m-%d %H:%M",
170170
meta_default_timezone: str = "UTC",
171-
meta_default_time: datetime = None,
171+
meta_default_time: Optional[datetime] = None,
172172
) -> Tuple[datetime, datetime]:
173173
"""Extract creation and update dates from page metadata (yaml frontmatter) or
174174
git log for given file.
@@ -193,6 +193,8 @@ def get_file_dates(
193193
"""
194194
# empty vars
195195
dt_created = dt_updated = None
196+
if meta_default_time is None:
197+
meta_default_time = self.meta_default_time = datetime.min
196198

197199
# if enabled, try to retrieve dates from page metadata
198200
if not self.use_git or (
@@ -416,14 +418,20 @@ def get_date_from_meta(
416418
try:
417419
if isinstance(date_metatag_value, str):
418420
out_date = datetime.strptime(date_metatag_value, meta_datetime_format)
419-
elif isinstance(date_metatag_value, (date, datetime)):
420-
if isinstance(meta_default_time, datetime):
421-
time_to_add = meta_default_time.time()
422-
else:
423-
time_to_add = datetime.min.time()
424-
out_date = datetime.combine(date_metatag_value, time_to_add)
421+
# datetime being a subclass of date, the following elif order matters
422+
# see: https://stackoverflow.com/a/68743663/2556577
423+
elif isinstance(date_metatag_value, datetime):
424+
# if datetime, use it directly
425+
out_date = date_metatag_value
426+
elif isinstance(date_metatag_value, date):
427+
out_date = datetime.combine(
428+
date=date_metatag_value, time=meta_default_time.time()
429+
)
425430
else:
426-
logger.debug(f"Incompatible date type: {type(date_metatag_value)}")
431+
logger.info(
432+
f"Incompatible date type: {type(date_metatag_value)}. It must be: "
433+
"date, datetime or str (complying with defined strftime format)."
434+
)
427435
return out_date
428436
except ValueError as err:
429437
logger.error(

0 commit comments

Comments
 (0)