tis-waptpython-selenium
4.12.0-17
186 téléchargements
Voir le résultat de la construction Voir l'analyse de VirusTotal
Description
- package : tis-waptpython-selenium
- name : waptpython selenium
- version : 4.12.0-17
- categories : Development
- maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ
- installed_size : 31020462
- editor :
- licence :
- signature_date : 2023-09-26T18:01:13.975177
- size : 10.24 Mo
- locale : all
- target_os : all
- impacted_process :
- architecture : x64,x86
- Page d'accueil : https://www.selenium.dev
- Cela dépend :
control
package : tis-waptpython-selenium
version : 4.12.0-17
architecture : x64,x86
section : base
priority : optional
name : waptpython selenium
categories : Development
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ
description :
depends : tis-waptpython-cffi
conflicts :
maturity : PROD
locale : all
target_os : all
min_wapt_version : 2.4
sources : https://pypi.org/project/selenium/#files
installed_size : 31020462
impacted_process :
description_fr :
description_pl :
description_de :
description_es :
description_pt :
description_it :
description_nl :
description_ru :
audit_schedule :
editor :
keywords : waptpython,python,pip,pypi,package,selenium
licence :
homepage : https://www.selenium.dev
package_uuid : e9f94ba4-97ff-42bd-a33d-cb66a7f9c567
valid_from :
valid_until :
forced_install_on :
changelog : https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES
min_os_version :
max_os_version :
icon_sha256sum : 3307da49dca7842503f3369c908cd625f2b16276a8690e4dd37c08a057580c44
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : Mor/XVc5d3KHwOQR3fwaZyzI10Oy0KZwLFqSUqBCL2ximNUvLVyT+Sf1TtriJUuQUH7OzjMWXr1Spv2ULgp0jSvaQYHD/hWTpz4li2SRfPJy8KqtU5HayDfV1SiaFRpxN/vI/sjHeVB6e9MxXQl1sTGSI9I6yeEima08P2tQinNBJ9CJNMJfmJ61YUU3WrF74VCvoa4fH17qTm9OoLS6v+dN4yNYWA5WHJaRN3YucqO7BITFxguDjayly5XbUVGiULIkoK8UqZjPnZ9HOCE/oN2Z08UXzADxRmO/bGhezEGissSP0Xel6xMzIuYu1M72MxCqJPyhQCdbO70/1N3SsQ==
signature_date : 2023-09-26T18:01:13.975177
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
Setup.py
# -*- coding: utf-8 -*-
from setuphelpers import *
import os
import sys
ext_lib_dir = os.sep.join([sys.executable.rsplit(os.path.sep, 1)[0].replace("/bin", "").replace("\\Scripts", ""), "selenium"])
if sys.platform == "win32":
waptpython_lib_sp_dir = os.sep.join([sys.executable.rsplit(os.path.sep, 1)[0].replace("\\Scripts", ""), "lib", "site-packages"])
else:
waptpython_lib_sp_dir = os.sep.join([sys.executable.rsplit(os.path.sep, 1)[0].replace("/bin", "/lib/python3.8"), "site-packages"])
package_name = "selenium"
install_in_ext_lib = True
def install():
source_path = makepath(basedir, package_name)
mkdirs(ext_lib_dir)
if isfile("requirements.txt"):
pip_install_cmd = f'"{get_waptpython_path()}" -m pip install -r requirements.txt --upgrade --no-deps'
else:
pip_install_cmd = f'"{get_waptpython_path()}" -m pip install {package_name} --upgrade --no-deps' # =={control.get_software_version()}
pip_install_cmd += f' --no-index --find-links "{source_path}"'
if install_in_ext_lib:
pip_install_cmd += f' --target "{ext_lib_dir}"'
if force:
pip_install_cmd += " --force-reinstall"
print(run(pip_install_cmd))
def audit():
audit_status = "OK"
if install_in_ext_lib:
if glob.glob(f"{ext_lib_dir}/{package_name}-{control.get_software_version()}.dist-info/*"):
print(f"{control.package} is installed and up-to-date.")
elif glob.glob(f"{ext_lib_dir}/{package_name}/*"):
print(f"{control.package} is installed in another version.")
else:
print(f"{control.package} is not installed.")
print(f"Reinstalling: {control.package}")
WAPT.install(control.package, force=True)
audit_status = "WARNING"
else:
pip_show_cmd = str(run(f'"{get_waptpython_path()}" -m pip show {package_name}', accept_returncodes=[0, 1, 3010])).strip()
print(pip_show_cmd)
if "not found" in pip_show_cmd:
print(f"Reinstalling: {control.package}")
WAPT.install(control.package, force=True)
audit_status = "WARNING"
if "No module named pip" in pip_show_cmd:
pip_package = control.package.split("-")[0] + "-waptpython-pip"
print(f"Auditing: {pip_package}")
WAPT.audit(pip_package, force=True)
audit_status = "WARNING"
return audit_status
def uninstall():
if install_in_ext_lib:
for lib_dir in glob.glob(f"{ext_lib_dir}/{package_name}*/"):
remove_tree(lib_dir)
else:
# pip_uninstall_cmd = f'"{get_waptpython_path()}" -m pip uninstall {package_name} -y'
# print(run(pip_uninstall_cmd)) # unsafe
for lib_dir in glob.glob(f"{waptpython_lib_sp_dir}/{package_name}*/"):
remove_tree(lib_dir)
def get_waptpython_path():
if get_os_name() == "Windows":
return makepath(WAPT.wapt_base_dir, "waptpython.exe")
else:
return makepath(WAPT.wapt_base_dir, "waptpython.sh")
update_package.py
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import os
import sys
import bs4 as BeautifulSoup
from urllib.parse import urlparse, urljoin
# ext_lib_dir = os.sep.join([sys.executable.rsplit(os.path.sep, 1)[0].replace("/bin", "").replace("\\Scripts", ""), "selenium"])
# sys.path.insert(0, ext_lib_dir)
package_name = "selenium"
python_version = "".join(str(x) for x in sys.version_info[:2])
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
api_url = f"https://pypi.org/pypi/{package_name}/json"
if params.get("running_as_luti"):
index_url = "https://pip.ad.tranquil.it/"
else:
index_url = None
# fixed_version = "9.5.0"
fixed_version = None
# Downloading whl files in package_name folder
if isfile("requirements.txt"):
pip_download_cmd = f'"{get_waptpython_path()}" -m pip download -r requirements.txt --only-binary=:all: --dest "{package_name}"'
else:
pip_download_cmd = f'"{get_waptpython_path()}" -m pip download {package_name} --only-binary=:all: --dest "{package_name}"'
if index_url:
pip_download_cmd += f' --index-url="{index_url}" --trusted-host="{index_url.split("//")[1].split("/")[0]}"'
pip_download_cmd += f' --proxy=""'
elif proxies:
pip_download_cmd += f' --proxy="{proxies["http"]}"'
print(run(pip_download_cmd))
# Getting latest version information from official sources
print("API used is: %s" % api_url)
json_load = wgets(api_url, proxies=proxies, as_json=True)
if fixed_version:
json_search = json_load["releases"][fixed_version]
version = fixed_version
else:
json_search = json_load["urls"]
version = json_load["info"]["version"]
if not index_url:
for to_download in json_search:
filename = to_download["filename"]
if ".whl" in filename and ("-py3-" in filename or f"cp{python_version}" in filename):
download_url = to_download["url"]
latest_bin = package_name + os.sep + filename
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(download_url, latest_bin, proxies=proxies)
else:
print("Binary is present: %s" % latest_bin)
else:
binaries_dict = bs_index_of_to_dict(index_url + package_name, proxies=proxies)
for to_download in binaries_dict.keys():
filename = to_download
if ".whl" in filename and ("-py3-" in filename or f"cp{python_version}" in filename) and version in filename:
download_url = binaries_dict[to_download]
latest_bin = package_name + os.sep + filename
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(download_url, latest_bin, proxies=proxies)
else:
print("Binary is present: %s" % latest_bin)
# Deleting outdated binaries
for f in glob.glob("*.whl"):
print("Removing: %s" % f)
remove_file(f)
# Deleting other binaries
for f in glob.glob(f'{package_name}/{json_load["info"]["name"]}*.whl'): # filename.split("-")[0]
if not version in f:
print("Removing: %s" % f)
remove_file(f)
# Deleting other dirs
for dir_name in glob.glob("*/"):
dir_name = dir_name.split(os.sep)[0]
if not dir_name in ["WAPT", "__pycache__"] and not package_name in dir_name:
remove_tree(dir_name)
# generate_requirements_txt
if not isfile("requirements.txt"):
generate_requirements_txt(package_name, glob.glob(f"{package_name}/*.whl"))
else:
with open("requirements.txt") as f:
requirements_list = f.read().split("\n")
requirements_list = [a.split("==")[0] for a in requirements_list]
for package in glob.glob(f"{package_name}/*.whl"):
package_info = package.split(os.sep)[-1].split("-")
name = package_info[0].replace("_", "-").lower()
if not name in requirements_list:
remove_file(package)
# control autocompletion
api_url = f"https://pypi.org/pypi/{package_name}/json"
json_load = wgets(api_url, proxies=proxies, as_json=True)
control.package = control.package.split("-", 1)[0] + "-waptpython-" + json_load["info"]["name"].lower()
control.name = "waptpython " + json_load["info"]["name"]
control.installed_size = get_size(package_name) * 3
if json_load["info"].get("keywords") is not None and json_load["info"]["keywords"]:
print(f'You may wanna add: "{json_load["info"]["keywords"].lower()}" in: "control.keywords"')
control.description = json_load["info"]["summary"]
if json_load["info"]["project_urls"].get("Changelog") is not None and json_load["info"]["project_urls"]["Changelog"]:
control.changelog = json_load["info"]["project_urls"]["Changelog"]
control.sources = json_load["info"]["package_url"] + "#files"
if json_load["info"]["project_urls"].get("Homepage") is not None and json_load["info"]["project_urls"]["Homepage"]:
control.homepage = json_load["info"]["project_urls"]["Homepage"]
# Changing version of the package
if Version(version, 4) > Version(control.get_software_version(), 4):
print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(version)))
package_updated = True
else:
print("Software version up-to-date (%s)" % Version(version))
control.set_software_version(version)
control.save_control_to_wapt()
# Validating update-package-sources
return package_updated
# # Changing version of the package and validating update-package-sources
# return complete_control_version(control, version)
def bs_index_of_to_dict(url, **kwargs):
r"""Parse html "Index of" web page with BeautifulSoup and get a dict of the result
Args:
url (str): url of the web page to parse
Return:
result: a dict of the index URLs
"""
result = {}
for elem in bs_find_all(url, "a", "href"):
if not "://" in elem["href"]:
# absolute_link = urljoin(url, url + "/" + elem["href"] if not url.endswith("/") else url + elem["href"])
absolute_link = url + "/" + elem["href"] if not url.endswith("/") else url + elem["href"]
else:
absolute_link = elem["href"]
key = elem.text
if key.endswith("..>"): # if key.endswith("..>"):
key = elem["href"]
result[key] = absolute_link
return result
def is_url(x):
try:
result = urlparse(x)
return all([result.scheme, result.netloc])
except:
return False
def bs_find_all(url, element, attribute=None, value=None, user_agent=None, proxies=None, features="html.parser", **kwargs):
"""
Parse an HTML or XML web page with BeautifulSoup and retrieve a list of all matching results.
Args:
url (str): URL of the web page or string to parse.
element (str): Searched element.
attribute (str): Selected attribute of the element.
value (str): Value of the selected attribute.
user_agent (str): Specify a user-agent if needed.
proxies (dict): Specify proxies if needed.
features (str): BeautifulSoup feature to use.
**kwargs: Additional parameters for the requests library.
Returns:
list: List of bs4.element.Tag objects representing the matching elements.
Examples:
>>> bs_find_all('https://www.w3.org/', 'a', 'title', 'Open Web Platform testing')[0]['href']
'https://web-platform-tests.org/'
>>> bs_find_all('https://www.w3.org/', 'span', 'class', 'alt-logo')[0].string
'W3C'
.. versionadded:: 2.0
.. versionchanged:: 2.5
Function can now parse string content of a page or reparse a "bs_result". It is now possible to parse a specific attribute.
"""
url = str(url)
if is_url(url):
if user_agent:
page = requests.get(url, proxies=proxies, headers={"User-Agent": user_agent}, **kwargs).text
else:
page = requests.get(url, proxies=proxies, **kwargs).text
else:
page = url
soup = BeautifulSoup.BeautifulSoup(page, features=features)
if value:
return soup.find_all(element, {attribute: value})
elif attribute:
return soup.find_all(element, attrs={attribute: True})
else:
return soup.find_all(element)
def generate_requirements_txt(package_name, packages_list):
latest_versions = {}
for package in packages_list:
package_info = package.split(os.sep)[-1].split("-")
name = package_info[0].replace("_", "-").lower()
version = package_info[1]
if name not in latest_versions:
latest_versions[name] = version
else:
if version > latest_versions[name]:
latest_versions[name] = version
# if name == package_name:
# requirements_content = [f"{name}=={version}" for name, version in latest_versions.items()]
# else:
# requirements_content = [f"{name}" for name, version in latest_versions.items()]
requirements_content = [f"{name}" for name, version in latest_versions.items()]
if requirements_content:
with open("requirements.txt", "w", newline="\n") as requirements_file:
requirements_file.write("\n".join(requirements_content))
def get_waptpython_path():
if get_os_name() == "Windows":
return makepath(WAPT.wapt_base_dir, "waptpython.exe")
else:
return makepath(WAPT.wapt_base_dir, "waptpython.sh")
def get_size(start_path="."):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
# skip if it is symbolic link
if not os.path.islink(fp):
total_size += os.path.getsize(fp)
return total_size
723e39e84cb16de67bb4c4e32e96dcfa59f34b571e725cf5e4405d8f3ea3e2d4 : setup.py
: __pycache__
1e66be21dd600ea2a50c18a6e151c7be8faf67d076ae9363e5850353ef63d27f : update_package.py
ec263a0f00675d73cc8b8d3bc81ef3c4716146898b6d035e17ea409d2911d2bc : requirements.txt
3307da49dca7842503f3369c908cd625f2b16276a8690e4dd37c08a057580c44 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
65a92e26c7210c2c1f6aaf00d0e7fc14df4fd9669b52d156f66944c6dd71fd5d : luti.json
e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 : selenium/h11-0.14.0-py3-none-any.whl
b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736 : selenium/wsproto-1.2.0-py3-none-any.whl
2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 : selenium/PySocks-1.7.1-py3-none-any.whl
92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 : selenium/certifi-2023.7.22-py3-none-any.whl
a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 : selenium/sortedcontainers-2.4.0-py2.py3-none-any.whl
1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 : selenium/attrs-23.1.0-py3-none-any.whl
a9937d48e8132ebf833019efde2a52ca82d223a30a7ea3e8d60a7d28f75a4e3a : selenium/trio_websocket-0.10.3-py3-none-any.whl
90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 : selenium/idna-3.4-py3-none-any.whl
343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3 : selenium/exceptiongroup-1.1.3-py3-none-any.whl
b2c48b1440db54a0653300d9955f5421390723d53b36ec835e18de8e13bbd401 : selenium/selenium-4.12.0-py3-none-any.whl
de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4 : selenium/urllib3-2.0.4-py3-none-any.whl
f43da357620e5872b3d940a2e3589aa251fd3f881b65a608d742e00809b1ec38 : selenium/trio-0.22.2-py3-none-any.whl
eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 : selenium/sniffio-1.3.0-py3-none-any.whl
c4ab89a56575d6d38a05aa16daeaa333109c1f96167aba8901ab18b6b5e0f7f5 : selenium/outcome-1.2.0-py2.py3-none-any.whl
20acd7a9680a57c7d8c9f9a06a171a0ce7efdc7e054ac1ccc97a6d221825aec2 : WAPT/control