diff --git a/.tekton/.currency/docs/report.md b/.tekton/.currency/docs/report.md index 4ac5d3ba..c3a8fa22 100644 --- a/.tekton/.currency/docs/report.md +++ b/.tekton/.currency/docs/report.md @@ -3,28 +3,31 @@ | Package name | Support Policy | Beta version | Last Supported Version | Latest version | Up-to-date | Release date | Latest Version Published At | Days behind | Cloud Native | |:---------------------|:-----------------|:---------------|:-------------------------|:-----------------|:-------------|:---------------|:------------------------------|:--------------|:---------------| | ASGI | 45-days | No | 3.0 | 3.0 | Yes | 2019-03-04 | 2019-03-04 | 0 day/s | No | -| Celery | 45-days | No | 5.4.0 | 5.4.0 | Yes | 2024-04-17 | 2024-04-17 | 0 day/s | No | -| Django | 45-days | No | 5.1.7 | 5.1.7 | Yes | 2025-03-06 | 2025-03-06 | 0 day/s | No | -| FastAPI | 45-days | No | 0.115.11 | 0.115.11 | Yes | 2025-03-01 | 2025-03-01 | 0 day/s | No | -| Flask | 45-days | No | 3.1.0 | 3.1.0 | Yes | 2024-11-13 | 2024-11-13 | 0 day/s | No | +| Celery | 45-days | No | 5.5.3 | 5.5.3 | Yes | 2025-06-01 | 2025-06-01 | 0 day/s | No | +| Django | 45-days | No | 5.2.3 | 5.2.3 | Yes | 2025-06-10 | 2025-06-10 | 0 day/s | No | +| FastAPI | 45-days | No | 0.115.12 | 0.115.12 | Yes | 2025-03-23 | 2025-03-23 | 0 day/s | No | +| Flask | 45-days | No | 3.1.1 | 3.1.1 | Yes | 2025-05-13 | 2025-05-13 | 0 day/s | No | | Pyramid | 45-days | No | 2.0.2 | 2.0.2 | Yes | 2023-08-25 | 2023-08-25 | 0 day/s | No | -| Sanic | On demand | No | 24.12.0 | 24.12.0 | Yes | 2024-12-31 | 2024-12-31 | 0 day/s | No | -| Starlette | 45-days | No | 0.46.1 | 0.46.1 | Yes | 2025-03-08 | 2025-03-08 | 0 day/s | No | -| Tornado | 45-days | No | 6.4.2 | 6.4.2 | Yes | 2024-11-22 | 2024-11-22 | 0 day/s | No | +| Sanic | On demand | No | 25.3.0 | 25.3.0 | Yes | 2025-03-31 | 2025-03-31 | 0 day/s | No | +| Starlette | 45-days | No | 0.47.0 | 0.47.0 | Yes | 2025-05-29 | 2025-05-29 | 0 day/s | No | +| Tornado | 45-days | No | 6.5.1 | 6.5.1 | Yes | 2025-05-22 | 2025-05-22 | 0 day/s | No | | Webapp2 | On demand | No | 2.5.2 | 2.5.2 | Yes | 2012-09-28 | 2012-09-28 | 0 day/s | No | | WSGI | 0-day | Yes | 1.0.1 | 1.0.1 | Yes | 2010-09-26 | 2010-09-26 | 0 day/s | No | -| Aiohttp | 45-days | No | 3.11.13 | 3.11.13 | Yes | 2025-02-24 | 2025-02-24 | 0 day/s | No | +| Aiohttp | 45-days | No | 3.12.13 | 3.12.13 | Yes | 2025-06-14 | 2025-06-14 | 0 day/s | No | | Asynqp | Deprecated | No | 0.6 | 0.6 | Yes | 2019-01-20 | 2019-01-20 | 0 day/s | No | -| Boto3 | 45-days | No | 1.37.11 | 1.37.11 | Yes | 2025-03-11 | 2025-03-11 | 0 day/s | Yes | -| Google-cloud-pubsub | 45-days | No | 2.28.0 | 2.28.0 | Yes | 2025-01-30 | 2025-01-30 | 0 day/s | Yes | +| Boto3 | 45-days | No | 1.38.36 | 1.38.36 | Yes | 2025-06-12 | 2025-06-12 | 0 day/s | Yes | +| Google-cloud-pubsub | 45-days | No | 2.30.0 | 2.30.0 | Yes | 2025-06-09 | 2025-06-09 | 0 day/s | Yes | | Google-cloud-storage | 45-days | No | 3.1.0 | 3.1.0 | Yes | 2025-02-28 | 2025-02-28 | 0 day/s | Yes | -| Grpcio | 45-days | No | 1.71.0 | 1.71.0 | Yes | 2025-03-10 | 2025-03-10 | 0 day/s | Yes | +| Grpcio | 45-days | No | 1.73.0 | 1.73.0 | Yes | 2025-06-09 | 2025-06-09 | 0 day/s | Yes | | Mysqlclient | 45-days | No | 2.2.7 | 2.2.7 | Yes | 2025-01-10 | 2025-01-10 | 0 day/s | Yes | | Pika | 45-days | No | 1.3.2 | 1.3.2 | Yes | 2023-05-05 | 2023-05-05 | 0 day/s | No | | PyMySQL | 45-days | No | 1.1.1 | 1.1.1 | Yes | 2024-05-21 | 2024-05-21 | 0 day/s | Yes | -| Pymongo | 45-days | No | 4.11.2 | 4.11.2 | Yes | 2025-03-03 | 2025-03-03 | 0 day/s | Yes | +| Pymongo | 45-days | No | 4.13.1 | 4.13.1 | Yes | 2025-06-11 | 2025-06-11 | 0 day/s | Yes | | Psycopg2 | 45-days | No | 2.9.10 | 2.9.10 | Yes | 2024-10-16 | 2024-10-16 | 0 day/s | No | -| Redis | 45-days | No | 5.2.1 | 5.2.1 | Yes | 2024-12-06 | 2024-12-06 | 0 day/s | Yes | -| Requests | 45-days | No | 2.32.3 | 2.32.3 | Yes | 2024-05-29 | 2024-05-29 | 0 day/s | Yes | -| SQLAlchemy | 45-days | No | 2.0.39 | 2.0.39 | Yes | 2025-03-11 | 2025-03-11 | 0 day/s | Yes | -| Urllib3 | 45-days | No | 2.3.0 | 2.3.0 | Yes | 2024-12-22 | 2024-12-22 | 0 day/s | No | \ No newline at end of file +| Redis | 45-days | No | 6.2.0 | 6.2.0 | Yes | 2025-05-28 | 2025-05-28 | 0 day/s | Yes | +| Requests | 45-days | No | 2.32.4 | 2.32.4 | Yes | 2025-06-09 | 2025-06-09 | 0 day/s | Yes | +| SQLAlchemy | 45-days | No | 2.0.41 | 2.0.41 | Yes | 2025-05-14 | 2025-05-14 | 0 day/s | Yes | +| Urllib3 | 45-days | No | 2.4.0 | 2.4.0 | Yes | 2025-04-10 | 2025-04-10 | 0 day/s | No | +| Spyne | 45-days | No | 2.14.0 | 2.14.0 | Yes | 2022-02-03 | 2022-02-03 | 0 day/s | No | +| Aio-pika | 45-days | No | 9.5.5 | 9.5.5 | Yes | 2025-02-26 | 2025-02-26 | 0 day/s | No | +| Aioamqp | 45-days | No | 0.15.0 | 0.15.0 | Yes | 2022-04-05 | 2022-04-05 | 0 day/s | No | diff --git a/.tekton/.currency/resources/requirements.txt b/.tekton/.currency/resources/requirements.txt index 79e52fc7..e254e8b7 100644 --- a/.tekton/.currency/resources/requirements.txt +++ b/.tekton/.currency/resources/requirements.txt @@ -3,4 +3,4 @@ pandas beautifulsoup4 tabulate kubernetes -packaging \ No newline at end of file +packaging diff --git a/.tekton/.currency/resources/table.json b/.tekton/.currency/resources/table.json index afccbfcb..4de524a9 100644 --- a/.tekton/.currency/resources/table.json +++ b/.tekton/.currency/resources/table.json @@ -159,6 +159,24 @@ "Support Policy": "45-days", "Beta version": "No", "Cloud Native": "No" + }, + { + "Package name": "Spyne", + "Support Policy": "45-days", + "Beta version": "No", + "Cloud Native": "No" + }, + { + "Package name": "Aio-pika", + "Support Policy": "45-days", + "Beta version": "No", + "Cloud Native": "No" + }, + { + "Package name": "Aioamqp", + "Support Policy": "45-days", + "Beta version": "No", + "Cloud Native": "No" } ] } diff --git a/.tekton/.currency/scripts/generate_report.py b/.tekton/.currency/scripts/generate_report.py index 8b5a1667..0d4ca056 100644 --- a/.tekton/.currency/scripts/generate_report.py +++ b/.tekton/.currency/scripts/generate_report.py @@ -96,37 +96,33 @@ def get_upstream_version(dependency, last_supported_version): # get info using PYPI API response = requests.get(f"{PIP_INDEX_URL}/{dependency}/json") response_json = response.json() + latest_version = response_json["info"]["version"] - release_time = response_json["releases"][latest_version][-1][ - "upload_time_iso_8601" - ] - latest_version_release_date = datetime.strptime( - release_time, "%Y-%m-%dT%H:%M:%S.%fZ" - ) - formatted_release_date = latest_version_release_date.strftime("%Y-%m-%d") - for version, release_info in response_json["releases"].items(): - if version == last_supported_version: - release_time = release_info[-1]["upload_time_iso_8601"] - last_supported_version_release_date = datetime.strptime( - release_time, "%Y-%m-%dT%H:%M:%S.%fZ" - ).strftime("%Y-%m-%d") + release_info_latest = response_json["releases"][latest_version] + release_time_latest = release_info_latest[-1]["upload_time_iso_8601"] + release_date_latest = re.search(r"([\d-]+)T", release_time_latest)[1] + + release_info_last_supported = response_json["releases"][last_supported_version] + release_time_last_supported = release_info_last_supported[-1]["upload_time_iso_8601"] + release_date_last_supported = re.search(r"([\d-]+)T", release_time_last_supported)[1] return ( latest_version, - formatted_release_date, - last_supported_version_release_date, + release_date_latest, + release_date_last_supported, ) def get_last_supported_version(tekton_ci_output, dependency): """Get up-to-date supported version""" - pattern = r"-([^\s]+)" - if dependency == "Psycopg2": dependency = "psycopg2-binary" + + # either start with a space or in a new line + pattern = r"(?:^|\s)" + dependency + r"-([^\s]+)" last_supported_version = re.search( - dependency + pattern, tekton_ci_output, flags=re.I | re.M + pattern, tekton_ci_output, flags=re.I | re.M ) return last_supported_version[1] @@ -293,7 +289,7 @@ def main(): title = "## Python supported packages and versions" # Combine disclaimer, title, and markdown table with line breaks - final_markdown = disclaimer + "\n" + title + "\n" + markdown_table + final_markdown = f"{disclaimer}\n{title}\n{markdown_table}\n" with open(REPORT_FILE, "w") as file: file.write(final_markdown)