FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-149598: Remove `strm` argument support from `logging` handlers by sobolevn · Pull Request #149599 · python/cpython · GitHub

Repository navigation

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .py  (2) .rst  (2) All 2 file types selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
7 changes: 7 additions & 0 deletions Doc/whatsnew/3.16.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,13 @@ functools
* Calling the Python implementation of :func:`functools.reduce` with *function*
or *sequence* as keyword arguments has been deprecated since Python 3.14.

logging
-------

* Support for custom logging handlers with the *strm* argument is deprecated
and scheduled for removal in Python 3.16. Define handlers with the *stream*
argument instead.

symtable
--------

Expand Down
23 changes: 1 addition & 22 deletions Lib/logging/config.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -865,28 +865,7 @@ def configure_handler(self, config):
else:
factory = klass
kwargs = {k: config[k] for k in config if (k != '.' and valid_ident(k))}
# When deprecation ends for using the 'strm' parameter, remove the
# "except TypeError ..."
try:
result = factory(**kwargs)
except TypeError as te:
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)

import warnings
warnings.warn(
"Support for custom logging handlers with the 'strm' argument "
"is deprecated and scheduled for removal in Python 3.16. "
"Define handlers with the 'stream' argument instead.",
DeprecationWarning,
stacklevel=2,
)
result = factory(**kwargs)
if formatter:
result.setFormatter(formatter)
if level is not None:
Expand Down
18 changes: 6 additions & 12 deletions Lib/test/test_logging.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -3297,12 +3297,11 @@ def format(self, record):
}
}

# Remove when deprecation ends.
class DeprecatedStrmHandler(logging.StreamHandler):
class StrmHandler(logging.StreamHandler):
def __init__(self, strm=None):
super().__init__(stream=strm)

config_custom_handler_with_deprecated_strm_arg = {
config_custom_handler_with_removed_strm_arg = {
"version": 1,
"formatters": {
"form1": {
Expand All @@ -3311,7 +3310,7 @@ def __init__(self, strm=None):
},
"handlers": {
"hand1": {
"class": DeprecatedStrmHandler,
"class": StrmHandler,
"formatter": "form1",
"level": "NOTSET",
"stream": "ext://sys.stdout",
Expand Down Expand Up @@ -3417,14 +3416,9 @@ def test_config5_ok(self):
self.test_config1_ok(config=self.config5)
self.check_handler('hand1', CustomHandler)

def test_deprecation_warning_custom_handler_with_strm_arg(self):
msg = (
"Support for custom logging handlers with the 'strm' argument "
"is deprecated and scheduled for removal in Python 3.16. "
"Define handlers with the 'stream' argument instead."
)
with self.assertWarnsRegex(DeprecationWarning, msg):
self.test_config1_ok(config=self.config_custom_handler_with_deprecated_strm_arg)
def test_removed_strm_arg(self):
with self.assertRaisesRegex(ValueError, 'hand1'):
self.apply_config(self.config_custom_handler_with_removed_strm_arg)

def test_config6_failure(self):
self.assertRaises(Exception, self.apply_config, self.config6)
Expand Down
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove support of deprecated *strm* argument for :mod:`logging` handlers.
Loading

Back | FazBrowse Home | New Git URL