Skip to content

Deprecate old backward compatible shims in configure_formatter()/handler(). #115032

Description

@felixxm

Feature or enhancement

Proposal:

DictConfigurator.configure_formatter() and configure_handler() contain workarounds for old configurations

#Name of parameter changed from fmt to format.
#Retry with old name.
#This is so that code can be used with older Python versions
#(e.g. by Django)
config['fmt'] = config.pop('format')
config['()'] = factory
result = self.configure_custom(config)

if "'stream'" not in str(te):
raise
#The argument name changed from strm to stream
#Retry with old name.
#This is so that code can be used with older Python versions
#(e.g. by Django)
kwargs['strm'] = kwargs.pop('stream')
result = factory(**kwargs)

Django doesn't use fmt and strm for many years. I think both can be deprecated and removed.

I'd like to prepare a patch, if accepted.

Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

No response

Linked PRs

Activity

  1. sobolevn commented on Feb 7, 2024

    @sobolevn
    Member
  2. added
    stdlibStandard Library Python modules in the Lib/ directory
    on Feb 7, 2024
  3. vsajip commented on Feb 7, 2024

    @vsajip
    Member

    I realise Django doesn't use them any more, but what about other code / users? I wouldn't strongly object to removing them, but there's a chance that any such change might need to be reverted if there are complaints that it breaks existing code somewhere. And, of course, no backporting of any such change. Perhaps deprecate, but not remove immediately - rather, in line with the usual deprecation cycle. It's just a little wart in the current code, after all.

  4. felixxm commented on Feb 7, 2024

    @felixxm
    ContributorAuthor

    Perhaps deprecate, but not remove immediately - rather, in line with the usual deprecation cycle.

    Yes that's what I was trying to propose. We have an existing and straightforward upgrade path i.e. use format instead of fmt and use stream instead of strm, so it seems fine to deprecate the current workarounds and remove them in 3.15 (I guess 🤔).

    It's just a little wart in the current code, after all.

    True, but they become an issue when there are dozens of such workarounds ("death by a thousand cuts").

  5. vsajip commented on Feb 7, 2024

    @vsajip
    Member

    become an issue when there are dozens of such workarounds

    Well, it's not that bad IMO, but I'll look at a PR that does deprecation.

  6. felixxm commented on Feb 11, 2024

    @felixxm
    ContributorAuthor

    While preparing a patch, I noticed that we can deprecate strm, however, fmt is still needed because config is passed directly to the custom formatters and Formatter except fmt instead of format.

  7. added 3 commits that reference this issue on Feb 11, 2024
  8. added a commit that references this issue on Feb 13, 2024
  9. added a commit that references this issue on Feb 14, 2024
  10. added a commit that references this issue on Apr 26, 2025
  11. added a commit that references this issue on Apr 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-featureA feature request or enhancement

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions