Merge remote-tracking branch 'origin/release/3.15.x' into feature/OP-3553_update-to-python-39

This commit is contained in:
Ondrej Samohel 2022-10-13 12:59:53 +02:00
commit d00d023f53
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
399 changed files with 10347 additions and 5667 deletions

View file

@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
"""Get version and license information on used Python packages.
This is getting over all packages installed with Poetry and printing out
their name, version and available license information from PyPi in Markdown
table format.
Usage:
./.poetry/bin/poetry run python ./tools/get_python_packages_info.py
"""
import toml
import requests
packages = []
# define column headers
package_header = "Package"
version_header = "Version"
license_header = "License"
name_col_width = len(package_header)
version_col_width = len(version_header)
license_col_width = len(license_header)
# read lock file to get packages
with open("poetry.lock", "r") as fb:
lock_content = toml.load(fb)
for package in lock_content["package"]:
# query pypi for license information
url = f"https://pypi.org/pypi/{package['name']}/json"
response = requests.get(
f"https://pypi.org/pypi/{package['name']}/json")
package_data = response.json()
version = package.get("version") or "N/A"
try:
package_license = package_data["info"].get("license") or "N/A"
except KeyError:
package_license = "N/A"
if len(package_license) > 64:
package_license = f"{package_license[:32]}..."
packages.append(
(
package["name"],
version,
package_license
)
)
# update column width based on max string length
if len(package["name"]) > name_col_width:
name_col_width = len(package["name"])
if len(version) > version_col_width:
version_col_width = len(version)
if len(package_license) > license_col_width:
license_col_width = len(package_license)
# pad columns
name_col_width += 2
version_col_width += 2
license_col_width += 2
# print table header
print((f"|{package_header.center(name_col_width)}"
f"|{version_header.center(version_col_width)}"
f"|{license_header.center(license_col_width)}|"))
print(
"|" + ("-" * len(package_header.center(name_col_width))) +
"|" + ("-" * len(version_header.center(version_col_width))) +
"|" + ("-" * len(license_header.center(license_col_width))) + "|")
# print rest of the table
for package in packages:
print((
f"|{package[0].center(name_col_width)}"
f"|{package[1].center(version_col_width)}"
f"|{package[2].center(license_col_width)}|"
))