in awswrangler/opensearch/_write.py [0:0]
def _df_doc_generator(df: pd.DataFrame) -> Generator[dict[str, Any], None, None]:
def _deserialize(v: Any) -> Any:
if isinstance(v, str):
v = v.strip()
if v.startswith("{") and v.endswith("}") or v.startswith("[") and v.endswith("]"):
try:
v = json.loads(v)
except json.decoder.JSONDecodeError:
try:
v = ast.literal_eval(v) # if properties are enclosed with single quotes
if not isinstance(v, dict):
_logger.warning("could not convert string to json: %s", v)
except SyntaxError as e:
_logger.warning("could not convert string to json: %s", v)
_logger.warning(e)
return v
df_iter = df.iterrows()
for _, document in df_iter:
yield {k: _deserialize(v) for k, v in document.items() if np.array(notna(v)).any()}