Fixed double-writes. (#874)

* Fixed file-overwrites on generation.

Signed-off-by: Alex Loyko <alex.loyko96@gmail.com>

* Fixed CHANGELOG

Signed-off-by: Alex Loyko <alex.loyko96@gmail.com>

* fixing test and lint

Signed-off-by: Alex Loyko <alex.loyko96@gmail.com>

* Addressed comments.

Signed-off-by: Alex Loyko <alex.loyko96@gmail.com>

---------

Signed-off-by: Alex Loyko <alex.loyko96@gmail.com>
This commit is contained in:
Oleksandr Loyko
2024-12-20 14:06:06 -05:00
committed by GitHub
parent 7815c6abe8
commit 9777ebe4f8
3 changed files with 43 additions and 44 deletions
+1
View File
@@ -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
@@ -233,10 +233,8 @@ class TestAIOHttpConnection:
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)
+40 -40
View File
@@ -272,52 +272,52 @@ class Module:
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: