File size: 1,453 Bytes
f16bb9f
 
 
 
 
 
 
520ee21
 
f16bb9f
 
 
 
 
 
520ee21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f16bb9f
 
 
 
520ee21
 
 
 
2b57c64
 
 
520ee21
 
 
 
f16bb9f
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""
File: requirements_app.py
Author: Dmitry Ryumin, Maxim Markitantov, Elena Ryumina, Anastasia Dvoynikova, and Alexey Karpov
Description: Project requirements for the Gradio app.
License: MIT License
"""

import base64
import requests
import polars as pl

# Importing necessary components for the Gradio app
from app.config import config_data


def encode_image_to_base64(image_data: str) -> str:
    return base64.b64encode(image_data).decode("utf-8")


def fetch_pypi_badge_base64(package_name: str) -> str:
    url = f"https://img.shields.io/pypi/v/{package_name}"

    response = requests.get(url)
    response.raise_for_status()
    base64_image = encode_image_to_base64(response.content)

    return (
        f"<a href='https://pypi.org/project/{package_name}' target='_blank'>"
        f"<img src='data:image/svg+xml;base64,{base64_image}' alt='PyPI' /></a>"
    )


def read_requirements(file_path="requirements.txt"):
    with open(file_path, "r") as file:
        lines = file.readlines()

    data = [
        {
            config_data.Requirements_LIBRARY: split_line[0],
            config_data.Requirements_RECOMMENDED_VERSION: split_line[1],
            # config_data.Requirements_CURRENT_VERSION: fetch_pypi_badge_base64(
            #     split_line[0]
            # ),
        }
        for line in lines
        if (split_line := line.strip().split("==")) and len(split_line) == 2
    ]

    df = pl.DataFrame(data)

    return df