hjxdl 0.2.90__py3-none-any.whl → 0.2.92__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
hdl/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.2.90'
16
- __version_tuple__ = version_tuple = (0, 2, 90)
15
+ __version__ = version = '0.2.92'
16
+ __version_tuple__ = version_tuple = (0, 2, 92)
hdl/utils/llm/chat.py CHANGED
@@ -6,14 +6,16 @@ import subprocess
6
6
  from typing import Generator
7
7
  import re
8
8
 
9
-
10
9
  from openai import OpenAI
10
+ from PIL import Image
11
+
11
12
  from ..desc.template import FN_TEMPLATE, COT_TEMPLATE, OD_TEMPLATE
12
13
  from ..desc.func_desc import TOOL_DESC
13
- from .vis import draw_and_plot_boxes_from_json, to_img
14
+ from .vis import draw_and_plot_boxes_from_json, to_img, to_base64
14
15
  # import json
15
16
  # import traceback
16
17
 
18
+
17
19
  def parse_fn_markdown(markdown_text, params_key="params"):
18
20
  """
19
21
  Parses a markdown text to extract function name and parameters.
@@ -585,8 +587,7 @@ class OpenAI_M():
585
587
  Returns:
586
588
  str: A JSON string containing the results of the object detection.
587
589
  """
588
- if isinstance(image, str):
589
- image = to_img(image)
590
+ image = to_base64(image)
590
591
  json_str = self.invoke(
591
592
  prompt=self.od_desc,
592
593
  images=[image]
hdl/utils/llm/vis.py CHANGED
@@ -30,6 +30,19 @@ from redis.commands.search.query import Query
30
30
  HF_HUB_PREFIX = "hf-hub:"
31
31
 
32
32
  def to_img(img_str):
33
+ """
34
+ Convert an image source string to a PIL Image object.
35
+ The function supports three types of image sources:
36
+ 1. Base64 encoded image strings starting with "data:image".
37
+ 2. URLs starting with "http".
38
+ 3. Local file paths.
39
+ Args:
40
+ img_str (str): The image source string. It can be a base64 encoded string, a URL, or a local file path.
41
+ Returns:
42
+ PIL.Image.Image: The converted image as a PIL Image object.
43
+ Raises:
44
+ ValueError: If the image source string is not valid or the image cannot be loaded.
45
+ """
33
46
  if img_str.startswith("data:image"):
34
47
  img = imgbase64_to_pilimg(img_str)
35
48
  elif img_str.startswith("http"):
@@ -45,6 +58,30 @@ def to_img(img_str):
45
58
  return img
46
59
 
47
60
 
61
+ def to_base64(img):
62
+ """
63
+ Convert an image to its base64 representation.
64
+ Parameters:
65
+ img (PIL.Image.Image or str): The image to convert. This can be a PIL Image object,
66
+ a base64 string starting with "data:image", a URL starting
67
+ with "http", or a file path to an image.
68
+ Returns:
69
+ str: The base64 representation of the image.
70
+ Raises:
71
+ TypeError: If the input is not a PIL Image object or a string.
72
+ """
73
+ if isinstance(img, Image.Image):
74
+ img_base64 = pilimg_to_base64(img)
75
+ elif isinstance(img, str):
76
+ if img.startswith("data:image"):
77
+ img_base64 = img
78
+ elif img.startswith("http"):
79
+ img_base64 = imgurl_to_base64(img)
80
+ elif Path(img).is_file():
81
+ img_base64 = imgfile_to_base64(img)
82
+ return img_base64
83
+
84
+
48
85
  def imgurl_to_base64(image_url: str):
49
86
  """Converts an image from a URL to base64 format.
50
87
 
@@ -177,6 +214,8 @@ def draw_and_plot_boxes_from_json(
177
214
  # except FileNotFoundError:
178
215
  # print(f"Image file not found at {image_path}. Please check the path.")
179
216
  # return None
217
+ if not isinstance(image, Image.Image):
218
+ image = to_img(image)
180
219
  img = image
181
220
 
182
221
  draw = ImageDraw.Draw(img)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hjxdl
3
- Version: 0.2.90
3
+ Version: 0.2.92
4
4
  Summary: A collection of functions for Jupyter notebooks
5
5
  Home-page: https://github.com/huluxiaohuowa/hdl
6
6
  Author: Jianxing Hu
@@ -1,5 +1,5 @@
1
1
  hdl/__init__.py,sha256=GffnD0jLJdhkd-vo989v40N90sQbofkayRBwxc6TVhQ,72
2
- hdl/_version.py,sha256=dsW-sD-GWSmrnvsjSNdPvgFmdtr0NxczFjTqn2lljPU,413
2
+ hdl/_version.py,sha256=kkEuGTn2hmLTPDGbYFNi0KFL-GFSm6bEFKYCUrPee_8,413
3
3
  hdl/args/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  hdl/args/loss_args.py,sha256=s7YzSdd7IjD24rZvvOrxLLFqMZQb9YylxKeyelSdrTk,70
5
5
  hdl/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -128,18 +128,18 @@ hdl/utils/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
128
128
  hdl/utils/general/glob.py,sha256=Zuf7WHU0UdUPOs9UrhxmrCiMC8GrHxQU6n3mTThv6yc,1120
129
129
  hdl/utils/general/runners.py,sha256=x7QBolp3MrqNV6L4rB6Ueybr26bqkRFZTuXhY0SwyLk,3061
130
130
  hdl/utils/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
- hdl/utils/llm/chat.py,sha256=FykxgrUlolJvG5NN0sDlTmVf2F2kDWp1M1iodVNFeUg,24850
131
+ hdl/utils/llm/chat.py,sha256=_yqgWFhsxtYfNNm8pb5b-HIl950ZHL841JM5qm7zd0Y,24848
132
132
  hdl/utils/llm/chatgr.py,sha256=5F5PJHe8vz3iCfi4TT54DCLRi1UeJshECdVtgvvvao0,3696
133
133
  hdl/utils/llm/embs.py,sha256=Tf0FOYrOFZp7qQpEPiSCXzlgyHH0X9HVTUtsup74a9E,7174
134
134
  hdl/utils/llm/extract.py,sha256=2sK_WJzmYIc8iuWaM9DA6Nw3_6q1O4lJ5pKpcZo-bBA,6512
135
135
  hdl/utils/llm/llama_chat.py,sha256=watcHGOaz-bv3x-yDucYlGk5f8FiqfFhwWogrl334fk,4387
136
- hdl/utils/llm/vis.py,sha256=fuXdEFfUpW4KR7TKmIBEuMmo3ZdZxfd79a_qfTM0tPk,24739
136
+ hdl/utils/llm/vis.py,sha256=GkL7UMQxosTekhOZXSj_FTKGmZ1v5WciXOabn55FnWQ,26242
137
137
  hdl/utils/llm/visrag.py,sha256=0i-VrxqgiV-J7R3VPshu9oc7-rKjFJOldYik3HDXj6M,10176
138
138
  hdl/utils/schedulers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
139
  hdl/utils/schedulers/norm_lr.py,sha256=bDwCmdEK-WkgxQMFBiMuchv8Mm7C0-GZJ6usm-PQk14,4461
140
140
  hdl/utils/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
141
  hdl/utils/weather/weather.py,sha256=k11o6wM15kF8b9NMlEfrg68ak-SfSYLN3nOOflFUv-I,4381
142
- hjxdl-0.2.90.dist-info/METADATA,sha256=zXS1Zo2oeR0MqDgUOwvYGU_RxOLS75wdfsjRNlz4q64,836
143
- hjxdl-0.2.90.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
144
- hjxdl-0.2.90.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
145
- hjxdl-0.2.90.dist-info/RECORD,,
142
+ hjxdl-0.2.92.dist-info/METADATA,sha256=3KY26P4eZG7AreivWqsYxq1Fs1J2GU_BjkGKB-WF2sI,836
143
+ hjxdl-0.2.92.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
144
+ hjxdl-0.2.92.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
145
+ hjxdl-0.2.92.dist-info/RECORD,,
File without changes