Skip to content

Commit 58b3761

Browse files
[7.x] Handle Python pre-releases properly in meta header
Co-authored-by: Seth Michael Larson <[email protected]>
1 parent b894e35 commit 58b3761

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

.github/workflows/ci.yml

+7-2
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,18 @@ jobs:
5555
run: nox -s docs
5656

5757
test-linux:
58-
runs-on: ubuntu-latest
59-
6058
strategy:
6159
fail-fast: false
6260
matrix:
6361
python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9]
62+
experimental: [false]
63+
include:
64+
- python-version: 3.9-dev
65+
experimental: true
6466

67+
runs-on: ubuntu-latest
68+
name: test-${{ matrix.python-version }}
69+
continue-on-error: ${{ matrix.experimental }}
6570
steps:
6671
- name: Checkout Repository
6772
uses: actions/checkout@v1

elasticsearch/connection/base.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import io
2222
import re
2323
from platform import python_version
24-
import sys
2524
import warnings
2625

2726
try:
@@ -344,7 +343,9 @@ def _python_to_meta_version(version):
344343
compatible with 'X-Elastic-Client-Meta'. Essentially
345344
replaces any pre-release information with a 'p' suffix.
346345
"""
347-
version, version_pre = re.match(r"^([0-9.]+)(.*)$", version).groups()
346+
version, version_pre = re.match(
347+
r"^([0-9][0-9.]*[0-9]|[0-9])(.*)$", version
348+
).groups()
348349
if version_pre:
349350
version += "p"
350351
return version
@@ -353,7 +354,7 @@ def _python_to_meta_version(version):
353354
def _get_client_meta_header(client_meta=()):
354355
"""Builds an 'X-Elastic-Client-Meta' HTTP header"""
355356
es_version = _python_to_meta_version(__versionstr__)
356-
py_version = python_version() + ("p" if sys.version_info[3] != "final" else "")
357+
py_version = _python_to_meta_version(python_version())
357358
# First three values have to be 'service', 'language', 'transport'
358359
client_meta = (("es", es_version), ("py", py_version), ("t", es_version)) + tuple(
359360
client_meta

test_elasticsearch/test_connection.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ def test_get_client_meta_header(self):
180180
meta_header = _get_client_meta_header()
181181
assert ("es=%s" % (".".join(str(x) for x in __version__),)) in meta_header
182182
assert ("t=%s" % (".".join(str(x) for x in __version__),)) in meta_header
183-
assert ("py=%s" % python_version()) in meta_header
183+
assert ("py=%s" % _python_to_meta_version(python_version())) in meta_header
184184

185185
meta_header = _get_client_meta_header((("h", "bp"),))
186186
assert meta_header.endswith(",h=bp")
@@ -191,6 +191,7 @@ def test_get_client_meta_header(self):
191191
def test_python_to_meta_version(self):
192192
assert _python_to_meta_version("1.26.3") == "1.26.3"
193193
assert _python_to_meta_version("7.10.1a1") == "7.10.1p"
194+
assert _python_to_meta_version("7.10.a1") == "7.10p"
194195

195196

196197
class TestUrllib3Connection(TestCase):

0 commit comments

Comments
 (0)