mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-09 07:14:48 +08:00
Make sure warnings are not shown if a property is executed, fixes #1383
This commit is contained in:
@@ -4,6 +4,7 @@ import types
|
|||||||
import sys
|
import sys
|
||||||
import operator as op
|
import operator as op
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
import warnings
|
||||||
|
|
||||||
from jedi._compatibility import unicode, is_py3, builtins, \
|
from jedi._compatibility import unicode, is_py3, builtins, \
|
||||||
py_version, force_unicode
|
py_version, force_unicode
|
||||||
@@ -350,6 +351,10 @@ class DirectObjectAccess(object):
|
|||||||
|
|
||||||
def getattr_paths(self, name, default=_sentinel):
|
def getattr_paths(self, name, default=_sentinel):
|
||||||
try:
|
try:
|
||||||
|
# Make sure no warnings are printed here, this is autocompletion,
|
||||||
|
# warnings should not be shown. See also GH #1383.
|
||||||
|
with warnings.catch_warnings(record=True):
|
||||||
|
warnings.simplefilter("always")
|
||||||
return_obj = getattr(self._obj, name)
|
return_obj = getattr(self._obj, name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if default is _sentinel:
|
if default is _sentinel:
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
Tests of ``jedi.api.Interpreter``.
|
Tests of ``jedi.api.Interpreter``.
|
||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
|
import warnings
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@@ -197,6 +198,20 @@ def test_getitem_side_effects():
|
|||||||
_assert_interpreter_complete('foo["asdf"].upper', locals(), ['upper'])
|
_assert_interpreter_complete('foo["asdf"].upper', locals(), ['upper'])
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('stacklevel', [1, 2])
|
||||||
|
@pytest.mark.filterwarnings("error")
|
||||||
|
def test_property_warnings(stacklevel):
|
||||||
|
class Foo3:
|
||||||
|
@property
|
||||||
|
def prop(self):
|
||||||
|
# Possible side effects here, should therefore not call this.
|
||||||
|
warnings.warn("foo", DeprecationWarning, stacklevel=stacklevel)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
foo = Foo3()
|
||||||
|
_assert_interpreter_complete('foo.prop.uppe', locals(), ['upper'])
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[False, True])
|
@pytest.fixture(params=[False, True])
|
||||||
def allow_descriptor_access_or_not(request, monkeypatch):
|
def allow_descriptor_access_or_not(request, monkeypatch):
|
||||||
monkeypatch.setattr(jedi.Interpreter, '_allow_descriptor_getattr_default', request.param)
|
monkeypatch.setattr(jedi.Interpreter, '_allow_descriptor_getattr_default', request.param)
|
||||||
|
|||||||
Reference in New Issue
Block a user