Source code for colordetect.col_share
"""
.. _module_colShare
Module ColShare
===============
Global methods non-object specific
Usage:
>>> from colordetect import col_share
# show a progress bar for a process
>>> col_share.progress_bar("<current_process_position>", "<total_process_length>", "<process_description>")
# sort a dictionary by value to required length or in specific order
>>> col_share.sort_order('<dictionary>', "<items_to_return>", "<order>")
"""
import logging
import sys
from urllib.parse import urlparse
LOGGER = logging.getLogger(__name__)
[docs]def progress_bar(position: int, total_length: int, post_text: str = "Color Detection"):
"""
progress_bar
----------------
Display a progress bar of video processing
Parameters
----------
position: int
Current position of process
total_length: int
Total length of process
post_text: str
Text to display along with progress bar
"""
n_bar = 100
# # size of progress bar
j = position / total_length
sys.stdout.write("\r")
sys.stdout.write(f"[{'#' * int(n_bar * j):{n_bar}s}] {int(100 * j)}% {post_text}")
sys.stdout.flush()
[docs]def sort_order(object_description: dict, key_count: int = 5, ascending: bool = True):
"""
.. _color_sort
sort_order
----------------
Sort items in a dictionary according to value
Parameters
----------
object_description: dict
A dictionary whose values need sorting
key_count: int
The number of items to return from the sort
ascending: bool
The order to perform the dictionary sort. By default, set to True.
:return: A sorted dictionary with specific number
"""
if type(key_count) != int:
raise TypeError(
f"color_count has to be an integer. Provided {type(key_count)} "
)
if type(ascending) != bool:
raise TypeError(
f"The value of the 'ascending' parameter is a boolean. Provided {type(ascending)} "
)
sorted_colors = {
k: v
for k, v in sorted(
object_description.items(), key=lambda item: item[1], reverse=ascending
)
}
return dict(list(sorted_colors.items())[0:key_count])
[docs]def is_url(url: str) -> bool:
"""
Check if the string parsed is a URL
Parameters
----------
url: str
A string to be checked
"""
try:
result = urlparse(url)
return all([result, result.scheme, result.netloc, result.path])
except Exception as e:
LOGGER.info(f"String passed is not an image.{e}")
return False