~> d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm Z m Z d dlmZm Z d dlmZmZmZ d dlmZ d dlmZ e j e Zd ed efdZded efd Zded efdZdefdZdefdZdefdZ ded efdZ!defdZ"defdZ#defdZ$defdZ%defdZ& e d defd Z'd Z(defdZ)dS ) N)Path) StrictVersion) check_run CheckRunErrorasync_lru_cache)PLUGIN_PATHPLUGIN_SLUG)build_command_for_userget_php_binary_path wp_wrapper)log_message)WPSiteversion_strreturnc t | t sdS | }|sdS t | dS # t $ r Y dS w xY w)z1Validate if a string is a valid semantic version.FT) isinstancestrstripr ValueError)r trimmed_strs R/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/wordpress/cli.py_validate_semverr su k3'' u ##%%K uk"""t uus A AAoutputc b | sdS | }|sdS t | dk r+|d }t | r|S t | dk r+|d }t | r|S t dd| iddd dS )z Extract version from WP CLI output, trying both first and last parts. Args: output: The raw output from WP CLI Returns: The extracted version string or None if no valid version found Nr zMFailed to extract valid semver version from WP CLI output. Output: '{output}'r warning wordpressz#wp-plugin-version-extraction-failed)format_argslevel componentfingerprint)splitlenr r r )r parts first_part last_parts r _extract_version_from_outputr( * s t LLNNE t 5zzA~~1X^^%% J'' 5zzA~~"IOO%% I&&