diff --git a/Pipfile.lock b/Pipfile.lock index 7ca180c1..2137357b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "ccf46dce4b2ba274998e0e680b9861806805f3dd4a90adc5e2f12f76ca1c5772" + "sha256": "39837c6008c281c2c88fe321c606194bac789b687326b8be62779d45b7e1743a" }, "pipfile-spec": 6, "requires": { @@ -18,11 +18,11 @@ "default": { "certifi": { "hashes": [ - "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", - "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], - "markers": "python_version >= '3.6'", - "version": "==2023.5.7" + "index": "pypi", + "version": "==2023.7.22" }, "charset-normalizer": { "hashes": [ @@ -137,14 +137,6 @@ "index": "pypi", "version": "==2.31.0" }, - "tqdm": { - "hashes": [ - "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5", - "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671" - ], - "index": "pypi", - "version": "==4.65.0" - }, "urllib3": { "hashes": [ "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11", @@ -152,10 +144,6 @@ ], "markers": "python_version >= '3.7'", "version": "==2.0.4" - }, - "webdriver-manager": { - "editable": true, - "path": "." } }, "develop": { @@ -177,11 +165,11 @@ }, "certifi": { "hashes": [ - "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", - "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], - "markers": "python_version >= '3.6'", - "version": "==2023.5.7" + "index": "pypi", + "version": "==2023.7.22" }, "coverage": { "extras": [ @@ -257,7 +245,7 @@ "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5", "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f" ], - "markers": "python_version < '3.11'", + "markers": "python_version >= '3.7'", "version": "==1.1.2" }, "execnet": { @@ -356,6 +344,14 @@ "index": "pypi", "version": "==3.3.1" }, + "pyxdg": { + "hashes": [ + "sha256:3267bb3074e934df202af2ee0868575484108581e6f3cb006af1da35395e88b4", + "sha256:bdaf595999a0178ecea4052b7f4195569c1ff4d344567bccdc12dfdf02d545ab" + ], + "markers": "sys_platform == 'linux'", + "version": "==0.28" + }, "selenium": { "hashes": [ "sha256:40241b9d872f58959e9b34e258488bf11844cd86142fd68182bd41db9991fc5c", @@ -379,14 +375,6 @@ ], "version": "==2.4.0" }, - "tomli": { - "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" - ], - "markers": "python_version < '3.11'", - "version": "==2.0.1" - }, "trio": { "hashes": [ "sha256:3887cf18c8bcc894433420305468388dac76932e9668afa1c49aa3806b6accb3", diff --git a/setup.cfg b/setup.cfg index 6a8b97f3..3de40cfb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.9.1 +current_version = 4.0.0 commit = True tag = True diff --git a/setup.py b/setup.py index 437592df..210e025d 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ long_description_content_type="text/markdown", packages=setuptools.find_packages(include=['webdriver_manager*']), include_package_data=True, - version='3.9.1', + version='4.0.0', description='Library provides the way to automatically manage drivers for different browsers', author='Sergey Pirogov', author_email='automationremarks@gmail.com', diff --git a/webdriver_manager/__init__.py b/webdriver_manager/__init__.py index 3e9a6392..ce1305bf 100644 --- a/webdriver_manager/__init__.py +++ b/webdriver_manager/__init__.py @@ -1 +1 @@ -__version__ = "3.9.1" +__version__ = "4.0.0" diff --git a/webdriver_manager/chrome.py b/webdriver_manager/chrome.py index 25ec5c2b..d8a91bf0 100644 --- a/webdriver_manager/chrome.py +++ b/webdriver_manager/chrome.py @@ -38,8 +38,7 @@ def __init__( def install(self) -> str: driver_path = self._get_driver_binary_path(self.driver) - if all(test_os not in driver_path for test_os in ["mac_arm64", "mac_x64"]): - os.chmod(driver_path, 0o755) + os.chmod(driver_path, 0o755) return driver_path def get_os_type(self): diff --git a/webdriver_manager/core/archive.py b/webdriver_manager/core/archive.py index 80268a0c..5965b111 100644 --- a/webdriver_manager/core/archive.py +++ b/webdriver_manager/core/archive.py @@ -1,7 +1,5 @@ import os -import tarfile import zipfile -import typing class LinuxZipFileWithPermissions(zipfile.ZipFile): diff --git a/webdriver_manager/core/driver.py b/webdriver_manager/core/driver.py index 040d18dd..74e2c88e 100644 --- a/webdriver_manager/core/driver.py +++ b/webdriver_manager/core/driver.py @@ -7,18 +7,17 @@ class Driver(object): def __init__( self, name, - driver_version, + driver_version_to_download, url, latest_release_url, http_client, os_system_manager): self._name = name self._url = url - self._driver_version = driver_version self._latest_release_url = latest_release_url self._http_client = http_client self._browser_version = None - self._driver_to_download_version = None + self._driver_version_to_download = driver_version_to_download self._os_system_manager = os_system_manager if not self._os_system_manager: self._os_system_manager = OperationSystemManager() @@ -43,10 +42,10 @@ def get_driver_version_to_download(self): Downloads latest, if version is "latest" or browser could not been determined. Downloads determined browser version driver in all other ways as a bonus fallback for lazy users. """ - if not self._driver_to_download_version: - self._driver_to_download_version = self._driver_version if self._driver_version not in (None, "latest") \ - else self.get_latest_release_version() - return self._driver_to_download_version + if self._driver_version_to_download: + return self._driver_version_to_download + + return self.get_latest_release_version() def get_latest_release_version(self): # type: () -> str diff --git a/webdriver_manager/core/driver_cache.py b/webdriver_manager/core/driver_cache.py index d03cc27f..62cee2ae 100644 --- a/webdriver_manager/core/driver_cache.py +++ b/webdriver_manager/core/driver_cache.py @@ -99,6 +99,9 @@ def find_driver(self, driver: Driver): driver_name = driver.get_name() browser_type = driver.get_browser_type() browser_version = self._os_system_manager.get_browser_version_from_os(browser_type) + if not browser_version: + return None + driver_version = self.get_cache_key_driver_version(driver) metadata = self.load_metadata_content() @@ -133,19 +136,19 @@ def load_metadata_content(self): return {} def __get_metadata_key(self, driver: Driver): - if self._metadata_key is None: - driver_version = self.get_cache_key_driver_version(driver) - browser_version = driver.get_browser_version_from_os() - browser_version = browser_version if browser_version else "" - self._metadata_key = f"{self.get_os_type()}_{driver.get_name()}_{driver_version}" \ - f"_for_{browser_version}" - return self._metadata_key + if self._metadata_key: + return self._metadata_key + + driver_version = self.get_cache_key_driver_version(driver) + browser_version = driver.get_browser_version_from_os() + browser_version = browser_version if browser_version else "" + self._metadata_key = f"{self.get_os_type()}_{driver.get_name()}_{driver_version}" \ + f"_for_{browser_version}" def get_cache_key_driver_version(self, driver: Driver): - if self._cache_key_driver_version is None: - self._cache_key_driver_version = "latest" if driver._driver_version in ( - None, "latest") else driver._driver_version - return self._cache_key_driver_version + if self._cache_key_driver_version: + return self._cache_key_driver_version + return driver.get_driver_version_to_download() def __get_path(self, driver: Driver): if self._driver_binary_path is None: diff --git a/webdriver_manager/core/file_manager.py b/webdriver_manager/core/file_manager.py index a33d35c8..88de737f 100644 --- a/webdriver_manager/core/file_manager.py +++ b/webdriver_manager/core/file_manager.py @@ -78,7 +78,7 @@ def __extract_zip(self, archive_file, to_directory): full_file_path = os.path.join(to_directory, file_path) source = os.path.join(full_file_path, file_name) destination = os.path.join(to_directory, file_name) - os.rename(source, destination) + os.replace(source, destination) file_names.append(file_name) return sorted(file_names, key=lambda x: x.lower()) return archive.namelist() diff --git a/webdriver_manager/core/os_manager.py b/webdriver_manager/core/os_manager.py index ef9dd33e..14d770b5 100644 --- a/webdriver_manager/core/os_manager.py +++ b/webdriver_manager/core/os_manager.py @@ -159,4 +159,5 @@ def get_browser_version_from_os(self, browser_type=None): version = read_version_from_cmd(cmd_mapping, pattern) return version except Exception: - raise Exception("Can not get browser version from OS") + return None + # raise Exception("Can not get browser version from OS") diff --git a/webdriver_manager/core/utils.py b/webdriver_manager/core/utils.py index 65d75b66..194d6093 100644 --- a/webdriver_manager/core/utils.py +++ b/webdriver_manager/core/utils.py @@ -4,9 +4,6 @@ import subprocess - - - def get_date_diff(date1, date2, date_format): a = datetime.datetime.strptime(date1, date_format) b = datetime.datetime.strptime( diff --git a/webdriver_manager/drivers/chrome.py b/webdriver_manager/drivers/chrome.py index 9bd240b8..4c9e2908 100644 --- a/webdriver_manager/drivers/chrome.py +++ b/webdriver_manager/drivers/chrome.py @@ -58,7 +58,7 @@ def get_latest_release_version(self): latest_release_url = ( self._latest_release_url - if (self._driver_version == "latest" or determined_browser_version is None) + if (determined_browser_version is None) else f"{self._latest_release_url}_{determined_browser_version}" ) resp = self._http_client.get(url=latest_release_url) diff --git a/webdriver_manager/drivers/edge.py b/webdriver_manager/drivers/edge.py index 64c6c8ba..da967057 100644 --- a/webdriver_manager/drivers/edge.py +++ b/webdriver_manager/drivers/edge.py @@ -35,7 +35,7 @@ def get_latest_release_version(self) -> str: edge_driver_version_to_download = ( self.get_stable_release_version() - if (self._driver_version == "latest" or determined_browser_version is None) + if (determined_browser_version is None) else determined_browser_version ) major_edge_version = edge_driver_version_to_download.split(".")[0]