kurtmckee/feedparser

'updated' kludge status

dmwyatt opened this issue · 0 comments

I just spent a while trying to figure out why this code didn't work as expected:

field = 'updated'
# `data` is a FeedParserDict retrieved from `parsed_feed.feed`...
if field in data and data[field]:
    # do a thing with 'updated'

I found this in the source code:

elif key == "updated":
# Temporarily help developers out by keeping the old
# broken behavior that was reported in issue 310.
# This fix was proposed in issue 328.
if not dict.__contains__(self, "updated") and dict.__contains__(
self, "published"
):
warnings.warn(
"To avoid breaking existing software while "
"fixing issue 310, a temporary mapping has been created "
"from `updated` to `published` if `updated` doesn't "
"exist. This fallback will be removed in a future version "
"of feedparser.",
DeprecationWarning,
stacklevel=_stacklevel,
)
return dict.__getitem__(self, "published")
return dict.__getitem__(self, "updated")

  1. Those issues listed in the comment don't seem to have anything to do with this behavior? Maybe from a previous issue tracker?
  2. How long is this going to be here temporarily? 😀 A brief git blame shows its been in the code for at least 8 years when it was last moved to the utils.py file. I didn't dig any further to see when it was added prior to that.
  3. Since this code was getting run in a pytest test, and the failure included a couple hundred lines of debug information, I missed the warning that the code raises.