Skip to content

Commit 849a169

Browse files
committed
Deprecate support for Python 3.5 and earlier
1 parent 120e9ca commit 849a169

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

elasticsearch/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,13 @@
104104
]
105105
except (ImportError, SyntaxError):
106106
pass
107+
108+
# Python earlier than 3.6 is deprecated and will be removed in 8.0.0
109+
if sys.version_info < (3, 6):
110+
warnings.warn(
111+
"Support for Python 3.5 and earlier is deprecated and will be removed "
112+
"in v8.0.0 (current instance is Python %d.%d) See https://github.com/elastic"
113+
"/elasticsearch-py/issues/1696 for details." % sys.version_info[:2],
114+
category=DeprecationWarning,
115+
stacklevel=2,
116+
)

test_elasticsearch/test_module.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Licensed to Elasticsearch B.V. under one or more contributor
2+
# license agreements. See the NOTICE file distributed with
3+
# this work for additional information regarding copyright
4+
# ownership. Elasticsearch B.V. licenses this file to you under
5+
# the Apache License, Version 2.0 (the "License"); you may
6+
# not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
import importlib
19+
import sys
20+
import warnings
21+
22+
import pytest
23+
24+
import elasticsearch
25+
26+
27+
@pytest.mark.skipif(sys.version_info < (3, 6), reason="Requires Python 3.6+")
28+
def test_no_deprecation_python3_6_and_later():
29+
with warnings.catch_warnings(record=True) as w:
30+
importlib.reload(elasticsearch)
31+
32+
assert len(w) == 0
33+
34+
35+
@pytest.mark.skipif(sys.version_info >= (3, 6), reason="Requires Python <3.6")
36+
def test_deprecated_python3_5_and_earlier():
37+
38+
try: # Python 3.4+
39+
import imp
40+
41+
reload = imp.reload
42+
except ImportError: # Python 2.7
43+
reload = reload
44+
45+
with pytest.warns(DeprecationWarning) as w:
46+
reload(elasticsearch)
47+
48+
assert len(w) == 1
49+
assert str(w[0].message) == (
50+
"Support for Python 3.5 and earlier is deprecated and will be removed "
51+
"in v8.0.0 (current instance is Python %d.%d) See https://github.com/"
52+
"elastic/elasticsearch-py/issues/1696 for details." % (sys.version_info[:2])
53+
)

0 commit comments

Comments
 (0)