Skip to content

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

Closed
@felixxm

Description

@felixxm
Contributor

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

sobolevn

sobolevn commented on Feb 7, 2024

@sobolevn
Member
vsajip

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.

felixxm

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").

vsajip

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.

felixxm

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.

added a commit that references this issue on Feb 11, 2024

pythongh-115032: Update DictConfigurator.configure_formatter() commen…

added a commit that references this issue on Feb 11, 2024

pythongh-115032: Deprecate support for custom logging handlers with '…

added a commit that references this issue on Feb 12, 2024

pythongh-115032: Deprecate support for custom logging handlers with '…

added a commit that references this issue on Feb 13, 2024

gh-115032: Update DictConfigurator.configure_formatter() comment abou…

d823c23
added a commit that references this issue on Feb 14, 2024

pythongh-115032: Update DictConfigurator.configure_formatter() commen…

added a commit that references this issue on Apr 26, 2025

pythongh-115032: Deprecate support for custom logging handlers with '…

added a commit that references this issue on Apr 27, 2025

gh-115032: Deprecate support for custom logging handlers with 'strm' …

28a2fd0
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

    stdlibPython modules in the Lib dirtype-featureA feature request or enhancement

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @vsajip@hugovk@felixxm@sobolevn

        Issue actions

          Deprecate old backward compatible shims in configure_formatter()/handler(). · Issue #115032 · python/cpython