summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaixintao <laixintaoo@gmail.com>2022-03-07 12:07:08 +0800
committerGitHub <noreply@github.com>2022-03-07 12:07:08 +0800
commita5411823d1aa871c32347d6f86d47854ea47868a (patch)
tree2ce8a68b5bdf67e192de37bf8b1c2d71d5cd30e4
parenta143c050130a1b336cdd1ee51b3c70bded475547 (diff)
siwtch `distutils.version` to `packaging.version` to fix the version parse for windows. (#419)
* siwtch `distutils.version` to `packaging.version` to fix the version parse for windows. https://github.com/laixintao/iredis/issues/418 * fix lint error. * udpate changelog. * update version.
-rw-r--r--CHANGELOG.md5
-rw-r--r--iredis/client.py10
-rw-r--r--iredis/renders.py4
-rw-r--r--poetry.lock12
-rw-r--r--pyproject.toml1
-rw-r--r--tests/unittests/test_client.py13
6 files changed, 33 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 081d977..8db7aea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.11.1
+
+- Bugfix: Switch `distutils.version` to `packaging.version` to fix the version parse
+ for windows. (new dependency: pypi's python-packaging.
+
## 1.11
- Dependency: Upgrade mistune lib to ^2.0. (see
diff --git a/iredis/client.py b/iredis/client.py
index a5295fb..29045da 100644
--- a/iredis/client.py
+++ b/iredis/client.py
@@ -7,7 +7,7 @@ import sys
import logging
from subprocess import run
from importlib_resources import read_text
-from distutils.version import StrictVersion
+from packaging.version import parse as version_parse
import redis
from prompt_toolkit.shortcuts import clear
@@ -156,9 +156,11 @@ class Client:
return connection_class(**connection_kwargs)
def auth_compat(self, redis_version: str):
- with_username = StrictVersion(redis_version) >= StrictVersion("6.0.0")
+ with_username = version_parse(redis_version) >= version_parse("6.0.0")
if with_username:
command2syntax["AUTH"] = "command_usernamex_password"
+ else:
+ command2syntax["AUTH"] = "command_password"
def set_default_pager(self, config):
configured_pager = config.pager
@@ -532,7 +534,7 @@ class Client:
# FIXME anything strange with single quotes?
logger.debug(f"[--version--] '{server_version}'")
try:
- is_available = StrictVersion(server_version) > StrictVersion(
+ is_available = version_parse(server_version) > version_parse(
available_version
)
except Exception as e:
@@ -670,7 +672,7 @@ class Client:
# use `memory usage` to get memory, this command available from redis4.0
mem = ""
- if config.version and StrictVersion(config.version) >= StrictVersion("4.0.0"):
+ if config.version and version_parse(config.version) >= version_parse("4.0.0"):
memory_usage_value = str(self.execute("memory usage", key))
mem = f" mem: {memory_usage_value} bytes"
diff --git a/iredis/renders.py b/iredis/renders.py
index 2bb21c9..6791c19 100644
--- a/iredis/renders.py
+++ b/iredis/renders.py
@@ -6,7 +6,7 @@ func(redis-response) -> formatted result(str)
"""
import logging
import time
-from distutils.version import StrictVersion
+from packaging.version import parse as version_parse
from prompt_toolkit.formatted_text import FormattedText
@@ -260,7 +260,7 @@ class OutputRender:
@staticmethod
def render_slowlog(raw):
fields = ["Slow log id", "Start at", "Running time(ms)", "Command"]
- if StrictVersion(config.version) > StrictVersion("4.0"):
+ if version_parse(config.version) > version_parse("4.0"):
fields.extend(["Client IP and port", "Client name"])
rendered = []
diff --git a/poetry.lock b/poetry.lock
index adaaf12..c523f21 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -99,7 +99,7 @@ python-versions = "*"
name = "packaging"
version = "21.3"
description = "Core utilities for Python packages"
-category = "dev"
+category = "main"
optional = false
python-versions = ">=3.6"
@@ -183,7 +183,7 @@ python-versions = ">=3.5"
name = "pyparsing"
version = "3.0.7"
description = "Python parsing module"
-category = "dev"
+category = "main"
optional = false
python-versions = ">=3.6"
@@ -260,7 +260,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "typing-extensions"
-version = "4.0.1"
+version = "4.1.1"
description = "Backported and Experimental Type Hints for Python 3.6+"
category = "dev"
optional = false
@@ -289,7 +289,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytes
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
-content-hash = "d391d026d55f4bc949fb0bd9703f8f5d57925752391afc1a9e1f378b31266b67"
+content-hash = "67508010829a152ee8dd27cefc16d1d32f1caad85250721a8d9d18fb37825e5f"
[metadata.files]
atomicwrites = [
@@ -407,8 +407,8 @@ toml = [
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
typing-extensions = [
- {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},
- {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"},
+ {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"},
+ {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"},
]
wcwidth = [
{file = "wcwidth-0.1.9-py2.py3-none-any.whl", hash = "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1"},
diff --git a/pyproject.toml b/pyproject.toml
index cfab0bc..72c10a7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,6 +42,7 @@ pendulum = "^2.0"
importlib-resources = "^5.1.0"
# wcwidth 0.2.x uses pkg_resources which is not supported by PyOxidizer
wcwidth = "0.1.9"
+packaging = "^21.3"
[tool.poetry.dev-dependencies]
pytest = "^6"
diff --git a/tests/unittests/test_client.py b/tests/unittests/test_client.py
index b40fc8b..f27587b 100644
--- a/tests/unittests/test_client.py
+++ b/tests/unittests/test_client.py
@@ -11,6 +11,7 @@ from iredis.config import config, load_config_files
from iredis.completers import IRedisCompleter
from iredis.entry import Rainbow, prompt_message
from iredis.exceptions import NotSupport
+from iredis.commands import command2syntax
from ..helpers import formatted_text_rematch
@@ -508,3 +509,15 @@ def test_reissue_command_on_redis_cluster_with_password_in_dsn(
print(call_args)
assert list(call_args[1:]) == ["set", "foo", "bar"]
assert call_args[0].password == "bar"
+
+
+def test_version_parse(iredis_client):
+ """
+ fix: https://github.com/laixintao/iredis/issues/418
+ """
+ iredis_client.auth_compat("6.1.0")
+ assert command2syntax["AUTH"] == "command_usernamex_password"
+ iredis_client.auth_compat("5.0")
+ assert command2syntax["AUTH"] == "command_password"
+ iredis_client.auth_compat("5.0.14.1")
+ assert command2syntax["AUTH"] == "command_password"