diff options
author | dengzhaosen <dengzhaosen@inspur.com> | 2021-04-27 10:09:04 +0800 |
---|---|---|
committer | Stephen Finucane <stephenfin@redhat.com> | 2021-06-01 11:43:51 +0100 |
commit | 25e3d5889d6235658bcc21bd85d24ba2c2240c6a (patch) | |
tree | 2e6ee0d24a76d5588c3fc57f8382c19a0fadbc65 | |
parent | 95f6c5a5f21b730c83340b24974c2cf31c912728 (diff) | |
download | oslo-utils-25e3d5889d6235658bcc21bd85d24ba2c2240c6a.tar.gz |
Remove references to 'sys.version_info'4.9.1
We support Python 3.6 as a minimum now, making these checks no-ops.
Change-Id: Ia183dc2f19bf08635fb830d603f2bed888765ef6
-rw-r--r-- | oslo_utils/fnmatch.py | 65 | ||||
-rw-r--r-- | oslo_utils/tests/test_fnmatch.py | 48 |
2 files changed, 6 insertions, 107 deletions
diff --git a/oslo_utils/fnmatch.py b/oslo_utils/fnmatch.py index c52cf05..cdbd74e 100644 --- a/oslo_utils/fnmatch.py +++ b/oslo_utils/fnmatch.py @@ -12,74 +12,21 @@ """Thread safe fnmatch re-implementation. -Standard library fnmatch in Python versions <= 2.7.9 has thread safe -issue, this module is created for such case. see: -https://bugs.python.org/issue23191 - .. versionadded:: 3.3 """ import fnmatch as standard_fnmatch -import os -import posixpath -import re -import sys import warnings import debtcollector warnings.simplefilter("always") debtcollector.deprecate( - "Using the oslo.utils's 'fnmatch' module is deprecate, " - "please use the stdlib `fnmatch` module." + "Using the oslo.utils's 'fnmatch' module is deprecated, " + "please use the stdlib 'fnmatch' module." ) - -if sys.version_info > (2, 7, 9): - fnmatch = standard_fnmatch.fnmatch - fnmatchcase = standard_fnmatch.fnmatchcase - filter = standard_fnmatch.filter - translate = standard_fnmatch.translate -else: - _MATCH_CACHE = {} - _MATCH_CACHE_MAX = 100 - - translate = standard_fnmatch.translate - - def _get_cached_pattern(pattern): - cached_pattern = _MATCH_CACHE.get(pattern) - if cached_pattern is None: - translated_pattern = translate(pattern) - cached_pattern = re.compile(translated_pattern) - if len(_MATCH_CACHE) >= _MATCH_CACHE_MAX: - _MATCH_CACHE.clear() - _MATCH_CACHE[pattern] = cached_pattern - return cached_pattern - - def fnmatchcase(filename, pattern): - cached_pattern = _get_cached_pattern(pattern) - return cached_pattern.match(filename) is not None - - def fnmatch(filename, pattern): - filename = os.path.normcase(filename) - pattern = os.path.normcase(pattern) - return fnmatchcase(filename, pattern) - - def filter(filenames, pattern): - filtered_filenames = [] - - pattern = os.path.normcase(pattern) - cached_pattern = _get_cached_pattern(pattern) - - if os.path is posixpath: - # normcase on posix is NOP. Optimize it away from the loop. - for filename in filenames: - if cached_pattern.match(filename): - filtered_filenames.append(filename) - else: - for filename in filenames: - norm_name = os.path.normcase(filename) - if cached_pattern.match(norm_name): - filtered_filenames.append(filename) - - return filtered_filenames +fnmatch = standard_fnmatch.fnmatch +fnmatchcase = standard_fnmatch.fnmatchcase +filter = standard_fnmatch.filter +translate = standard_fnmatch.translate diff --git a/oslo_utils/tests/test_fnmatch.py b/oslo_utils/tests/test_fnmatch.py deleted file mode 100644 index ec9583d..0000000 --- a/oslo_utils/tests/test_fnmatch.py +++ /dev/null @@ -1,48 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import fnmatch as standard_fnmatch -import ntpath -import posixpath -from unittest import mock - -from oslotest import base - - -fnmatch = None - - -class TestFnmatch(base.BaseTestCase): - - def _test_fnmatch(self): - self.assertFalse(fnmatch.fnmatch("tesX", "Test")) - self.assertTrue(fnmatch.fnmatch("test", "test")) - self.assertFalse(fnmatch.fnmatchcase("test", "Test")) - self.assertTrue(fnmatch.fnmatchcase("test", "test")) - self.assertTrue(fnmatch.fnmatch("testX", "test*")) - self.assertEqual(["Test"], fnmatch.filter(["Test", "TestX"], "Test")) - - def _test_fnmatch_posix_nt(self): - with mock.patch("os.path", new=posixpath): - self.assertFalse(fnmatch.fnmatch("test", "Test")) - self._test_fnmatch() - with mock.patch("os.path", new=ntpath): - self._test_fnmatch() - self.assertTrue(fnmatch.fnmatch("test", "Test")) - self.assertEqual(["Test"], - fnmatch.filter(["Test", "TestX"], "test")) - - def test_fnmatch(self): - global fnmatch - - fnmatch = standard_fnmatch - self._test_fnmatch_posix_nt() |