diff --git a/CHANGELOG.md b/CHANGELOG.md index 3354d4e1..129711b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Updated APIs ### Changed - Small refactor of AWS Signer classes for both sync and async clients ([866](https://github.com/opensearch-project/opensearch-py/pull/866)) +- Small refactor to fix overwriting the module files when generating apis ([874](https://github.com/opensearch-project/opensearch-py/pull/874)) ### Deprecated ### Removed ### Fixed diff --git a/test_opensearchpy/test_async/test_connection.py b/test_opensearchpy/test_async/test_connection.py index c7d7b4a3..19c6222c 100644 --- a/test_opensearchpy/test_async/test_connection.py +++ b/test_opensearchpy/test_async/test_connection.py @@ -233,10 +233,8 @@ async def test_nowarn_when_test_uses_https_if_verify_certs_is_off(self) -> None: assert w == [] else: assert len(w) == 1 - assert ( - str(w[0].message) == "enable_cleanup_closed ignored because " - "https://github.com/python/cpython/pull/118960 is fixed in " - "Python version sys.version_info(major=3, minor=12, micro=7, releaselevel='final', serial=0)" + assert "https://github.com/python/cpython/pull/118960" in str( + w[0].message ) assert isinstance(con.session, aiohttp.ClientSession) diff --git a/utils/generate_api.py b/utils/generate_api.py index 8b02e1be..06c63943 100644 --- a/utils/generate_api.py +++ b/utils/generate_api.py @@ -272,52 +272,52 @@ def dump(self) -> None: if "from " + utils + " import" not in line ) - with open(self.filepath, "w", encoding="utf-8") as file: - if update_header is True: - file.write( - self.header[:license_position] - + "\n" - + header_content - + "\n\n" - + "#replace_token#\n" - + self.header[license_position:] - ) - else: - file.write( - self.header[:header_position] - + "\n" - + "#replace_token#\n" - + self.header[header_position:] - ) - for api in self._apis: - file.write(api.to_python()) + module_content = "" + if update_header is True: + module_content += ( + self.header[:license_position] + + "\n" + + header_content + + "\n\n" + + "#replace_token#\n" + + self.header[license_position:] + ) + else: + module_content += ( + self.header[:header_position] + + "\n" + + "#replace_token#\n" + + self.header[header_position:] + ) + for api in self._apis: + module_content += api.to_python() # Generating imports for each module utils_imports = "" - file_content = "" - with open(self.filepath, encoding="utf-8") as file: - content = file.read() - keywords = [ - "SKIP_IN_PATH", - "_normalize_hosts", - "_escape", - "_make_path", - "query_params", - "_bulk_body", - "_base64_auth_header", - "NamespacedClient", - "AddonClient", - ] - present_keywords = [keyword for keyword in keywords if keyword in content] - - if present_keywords: - utils_imports = "from " + utils + " import" - result = f"{utils_imports} {', '.join(present_keywords)}" - utils_imports = result - file_content = content.replace("#replace_token#", utils_imports) + + keywords = [ + "SKIP_IN_PATH", + "_normalize_hosts", + "_escape", + "_make_path", + "query_params", + "_bulk_body", + "_base64_auth_header", + "NamespacedClient", + "AddonClient", + ] + present_keywords = [ + keyword for keyword in keywords if keyword in module_content + ] + + if present_keywords: + utils_imports = "from " + utils + " import" + result = f"{utils_imports} {', '.join(present_keywords)}" + utils_imports = result + module_content = module_content.replace("#replace_token#", utils_imports) with open(self.filepath, "w", encoding="utf-8") as file: - file.write(file_content) + file.write(module_content) @property def filepath(self) -> Any: