Skip to content

Commit 6eea531

Browse files
committed
Merge remote-tracking branch 'upstream/4.x' into jedi_0.17
Merge!
2 parents 7bfb15c + 03172b7 commit 6eea531

6 files changed

Lines changed: 968 additions & 5 deletions

File tree

bootstrap.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@
5959
default=False, help="Disable Apport exception hook (Ubuntu)")
6060
parser.add_argument('--debug', action='store_true',
6161
default=False, help="Run Spyder in debug mode")
62+
parser.add_argument('--filter-log', default='',
63+
help="Comma-separated module name hierarchies whose log "
64+
"messages should be shown. e.g., "
65+
"spyder.plugins.completion,spyder.plugins.editor")
6266
parser.add_argument('spyder_options', nargs='*')
6367

6468
args = parser.parse_args()
@@ -121,6 +125,10 @@
121125
sys.exit("ERROR: Can't enable debug mode - Spyder is already imported")
122126
print("0x. Switching debug mode on")
123127
os.environ["SPYDER_DEBUG"] = "3"
128+
if len(args.filter_log) > 0:
129+
print("*. Displaying log messages only from the "
130+
"following modules: {0}".format(args.filter_log))
131+
os.environ["SPYDER_FILTER_LOG"] = args.filter_log
124132
# this way of interaction suxx, because there is no feedback
125133
# if operation is successful
126134

spyder/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
# Directory of the current file
4949
__dir__ = os.path.dirname(os.path.abspath(__file__))
5050

51-
5251
def add_to_distribution(dist):
5352
"""Add package to py2exe/cx_Freeze distribution object
5453
Extension to guidata.disthelpers"""

spyder/app/cli_options.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,13 @@ def get_options(argv=None):
121121
"in your current working directory. Default is "
122122
"'terminal'.")
123123
)
124+
parser.add_argument(
125+
'--filter-log',
126+
default='',
127+
help="Comma-separated module name hierarchies whose log "
128+
"messages should be shown. e.g., "
129+
"spyder.plugins.completion,spyder.plugins.editor"
130+
)
124131
parser.add_argument(
125132
'--report-segfault',
126133
dest="report_segfault",

spyder/app/utils.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
# Local imports
2222
from spyder.config.base import DEV, get_conf_path, get_debug_level
2323
from spyder.utils.qthelpers import file_uri
24+
from spyder.utils.external.dafsa.dafsa import DAFSA
2425

2526
# For spyder-ide/spyder#7447.
2627
try:
@@ -29,6 +30,11 @@
2930
QQuickWindow = QSGRendererInterface = None
3031

3132

33+
root_logger = logging.getLogger()
34+
FILTER_NAMES = os.environ.get('SPYDER_FILTER_LOG', "").split(',')
35+
FILTER_NAMES = [f.strip() for f in FILTER_NAMES]
36+
37+
3238
def get_python_doc_path():
3339
"""
3440
Return Python documentation path
@@ -77,15 +83,39 @@ def setup_logging(cli_options):
7783
log_level = levels[get_debug_level()]
7884
log_format = '%(asctime)s [%(levelname)s] [%(name)s] -> %(message)s'
7985

86+
console_filters = cli_options.filter_log.split(',')
87+
console_filters = [x.strip() for x in console_filters]
88+
console_filters = console_filters + FILTER_NAMES
89+
console_filters = [x for x in console_filters if x != '']
90+
91+
handlers = [logging.StreamHandler()]
8092
if cli_options.debug_output == 'file':
8193
log_file = 'spyder-debug.log'
94+
handlers.append(logging.FileHandler(open(log_file, 'w+')))
8295
else:
8396
log_file = None
8497

85-
logging.basicConfig(level=log_level,
86-
format=log_format,
87-
filename=log_file,
88-
filemode='w+')
98+
match_func = lambda x: True
99+
if console_filters != [''] and len(console_filters) > 0:
100+
dafsa = DAFSA(console_filters)
101+
match_func = lambda x: (dafsa.lookup(x, stop_on_prefix=True)
102+
is not None)
103+
104+
formatter = logging.Formatter(log_format)
105+
106+
class ModuleFilter(logging.Filter):
107+
"""Filter messages based on module name prefix."""
108+
109+
def filter(self, record):
110+
return match_func(record.name)
111+
112+
filter = ModuleFilter()
113+
root_logger.setLevel(log_level)
114+
for handler in handlers:
115+
handler.addFilter(filter)
116+
handler.setFormatter(formatter)
117+
handler.setLevel(log_level)
118+
root_logger.addHandler(handler)
89119

90120

91121
def delete_lsp_log_files():
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# -*- coding: utf-8 -*-
2+
# -----------------------------------------------------------------------------
3+
# Copyright (c) 2019-2020 Tiago Tresoldi
4+
# Copyright (c) 2016- Spyder Project Contributors
5+
#
6+
# Licensed under the terms of the BSD 3-clause license
7+
# (see LICENSE.txt in this directory for details)
8+
# -----------------------------------------------------------------------------
9+
10+
"""
11+
DAFSA
12+
-----------
13+
14+
Objects defined in this module were adapted from
15+
`DAFSA <https://github.com/tresoldi/dafsa>`_.
16+
"""
17+
18+
__author__ = 'Tiago Tresoldi'
19+
__email__ = 'tresoldi@shh.mpg.de'
20+
__version__ = '1.0.0'

0 commit comments

Comments
 (0)