|
import os |
|
from typing import List |
|
|
|
from settings import STATIC_PATH |
|
|
|
|
|
def is_google_colab(): |
|
"""Check if the environment is Google Colab.""" |
|
try: |
|
from google.colab import drive |
|
|
|
return True |
|
except ImportError: |
|
return False |
|
|
|
|
|
def get_file_as_string(file_name, path=STATIC_PATH) -> str: |
|
"""Loads the content of a file given its name |
|
and returns all of its lines as a single string |
|
if a file path is given, it will be used |
|
instead of the default static path (from settings) |
|
|
|
Args: |
|
file_name (_type_): The name of the file to load. |
|
path (str, optional): The path to the file. Defaults to the current directory. |
|
|
|
Returns: |
|
str: The content of the file as a single string |
|
""" |
|
with open(os.path.join(path, file_name), mode="r", encoding="UTF-8") as f: |
|
return f.read() |
|
|
|
|
|
def get_sections(string: str, delimiter: str, up_to: int = None) -> List[str]: |
|
"""Splits a string into sections given a delimiter |
|
|
|
Args: |
|
string (str): The string to split |
|
delimiter (str): The delimiter to use |
|
up_to (int, optional): The maximum number of sections to return. |
|
Defaults to None (which means all sections) |
|
|
|
Returns: |
|
List[str]: The list of sections (up to the given limit, if any provided) |
|
""" |
|
return [ |
|
section.strip() |
|
for section in string.split(delimiter) |
|
if (section and not section.isspace()) |
|
][:up_to] |
|
|
|
|
|
def get_workers(safety: int = 4) -> int: |
|
"""Return the number of cores available on the current system, minus a safety margin.""" |
|
return max(1, os.cpu_count() - safety) |
|
|