diff options
author | laixintao <laixintaoo@gmail.com> | 2022-03-07 12:07:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-07 12:07:08 +0800 |
commit | a5411823d1aa871c32347d6f86d47854ea47868a (patch) | |
tree | 2ce8a68b5bdf67e192de37bf8b1c2d71d5cd30e4 | |
parent | a143c050130a1b336cdd1ee51b3c70bded475547 (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.md | 5 | ||||
-rw-r--r-- | iredis/client.py | 10 | ||||
-rw-r--r-- | iredis/renders.py | 4 | ||||
-rw-r--r-- | poetry.lock | 12 | ||||
-rw-r--r-- | pyproject.toml | 1 | ||||
-rw-r--r-- | tests/unittests/test_client.py | 13 |
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" |