hammad-python 0.0.23__py3-none-any.whl → 0.0.24__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.
@@ -100,6 +100,8 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
100
100
  base_url: Optional[str] = None,
101
101
  api_key: Optional[str] = None,
102
102
  instructor_mode: LanguageModelInstructorMode = "tool_call",
103
+ verbose: bool = False,
104
+ debug: bool = False,
103
105
  **kwargs: Any,
104
106
  ):
105
107
  """Initialize the language model.
@@ -109,6 +111,8 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
109
111
  base_url: Custom base URL for the API
110
112
  api_key: API key for authentication
111
113
  instructor_mode: Default instructor mode for structured outputs
114
+ verbose: If True, set logger to INFO level for detailed output
115
+ debug: If True, set logger to DEBUG level for maximum verbosity
112
116
  **kwargs: Additional arguments passed to BaseGenAIModel
113
117
  """
114
118
  # Initialize BaseGenAIModel via super()
@@ -116,6 +120,14 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
116
120
 
117
121
  # Initialize LanguageModel-specific attributes
118
122
  self._instructor_client = None
123
+ self.verbose = verbose
124
+ self.debug = debug
125
+
126
+ # Set logger level based on verbose/debug flags
127
+ if debug:
128
+ logger.setLevel("DEBUG")
129
+ elif verbose:
130
+ logger.setLevel("INFO")
119
131
 
120
132
  logger.info(f"Initialized LanguageModel w/ model: {self.model}")
121
133
  logger.debug(f"LanguageModel settings: {self.settings}")
@@ -337,6 +349,8 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
337
349
  messages: LanguageModelMessages,
338
350
  instructions: Optional[str] = None,
339
351
  mock_response: Optional[str] = None,
352
+ verbose: Optional[bool] = None,
353
+ debug: Optional[bool] = None,
340
354
  **kwargs: Any,
341
355
  ) -> Union[LanguageModelResponse[Any], LanguageModelStream[Any]]:
342
356
  """Run a language model request.
@@ -345,11 +359,20 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
345
359
  messages: The input messages/content for the request
346
360
  instructions: Optional system instructions to prepend
347
361
  mock_response: Mock response string for testing (saves API costs)
362
+ verbose: If True, set logger to INFO level for this request
363
+ debug: If True, set logger to DEBUG level for this request
348
364
  **kwargs: Additional request parameters
349
365
 
350
366
  Returns:
351
367
  LanguageModelResponse or LanguageModelStream depending on parameters
352
368
  """
369
+ # Set logger level for this request if specified
370
+ original_level = logger.level
371
+ if debug or (debug is None and self.debug):
372
+ logger.setLevel("DEBUG")
373
+ elif verbose or (verbose is None and self.verbose):
374
+ logger.setLevel("INFO")
375
+
353
376
  logger.info(f"Running LanguageModel request with model: {self.model}")
354
377
  logger.debug(f"LanguageModel request kwargs: {kwargs}")
355
378
 
@@ -388,6 +411,10 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
388
411
 
389
412
  except Exception as e:
390
413
  raise LanguageModelError(f"Error in language model request: {e}") from e
414
+ finally:
415
+ # Restore original logger level
416
+ if debug is not None or verbose is not None:
417
+ logger.setLevel(original_level)
391
418
 
392
419
  # Overloaded async_run methods for different return types
393
420
 
@@ -574,6 +601,8 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
574
601
  messages: LanguageModelMessages,
575
602
  instructions: Optional[str] = None,
576
603
  mock_response: Optional[str] = None,
604
+ verbose: Optional[bool] = None,
605
+ debug: Optional[bool] = None,
577
606
  **kwargs: Any,
578
607
  ) -> Union[LanguageModelResponse[Any], LanguageModelStream[Any]]:
579
608
  """Run an async language model request.
@@ -582,11 +611,20 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
582
611
  messages: The input messages/content for the request
583
612
  instructions: Optional system instructions to prepend
584
613
  mock_response: Mock response string for testing (saves API costs)
614
+ verbose: If True, set logger to INFO level for this request
615
+ debug: If True, set logger to DEBUG level for this request
585
616
  **kwargs: Additional request parameters
586
617
 
587
618
  Returns:
588
619
  LanguageModelResponse or LanguageModelAsyncStream depending on parameters
589
620
  """
621
+ # Set logger level for this request if specified
622
+ original_level = logger.level
623
+ if debug or (debug is None and self.debug):
624
+ logger.setLevel("DEBUG")
625
+ elif verbose or (verbose is None and self.verbose):
626
+ logger.setLevel("INFO")
627
+
590
628
  logger.info(f"Running async LanguageModel request with model: {self.model}")
591
629
  logger.debug(f"LanguageModel request kwargs: {kwargs}")
592
630
 
@@ -631,6 +669,10 @@ class LanguageModel(BaseGenAIModel, Generic[T]):
631
669
  raise LanguageModelError(
632
670
  f"Error in async language model request: {e}"
633
671
  ) from e
672
+ finally:
673
+ # Restore original logger level
674
+ if debug is not None or verbose is not None:
675
+ logger.setLevel(original_level)
634
676
 
635
677
  def _handle_completion_request(
636
678
  self, request: LanguageModelRequestBuilder, parsed_messages: List[Any]
@@ -1038,6 +1080,8 @@ def create_language_model(
1038
1080
  deployment_id: Optional[str] = None,
1039
1081
  model_list: Optional[List[Any]] = None,
1040
1082
  extra_headers: Optional[Dict[str, str]] = None,
1083
+ verbose: bool = False,
1084
+ debug: bool = False,
1041
1085
  ) -> LanguageModel:
1042
1086
  """Create a language model instance."""
1043
1087
  return LanguageModel(
@@ -1049,4 +1093,6 @@ def create_language_model(
1049
1093
  deployment_id=deployment_id,
1050
1094
  model_list=model_list,
1051
1095
  extra_headers=extra_headers,
1096
+ verbose=verbose,
1097
+ debug=debug,
1052
1098
  )
@@ -275,6 +275,8 @@ def run_language_model(
275
275
  messages: "LanguageModelMessages",
276
276
  instructions: Optional[str] = None,
277
277
  mock_response: Optional[bool] = None,
278
+ verbose: bool = False,
279
+ debug: bool = False,
278
280
  **kwargs: Any,
279
281
  ) -> Union["LanguageModelResponse[Any]", "LanguageModelStream[Any]"]:
280
282
  """Run a language model request with full parameter support.
@@ -282,6 +284,8 @@ def run_language_model(
282
284
  Args:
283
285
  messages: The input messages/content for the request
284
286
  instructions: Optional system instructions to prepend
287
+ verbose: If True, set logger to INFO level for detailed output
288
+ debug: If True, set logger to DEBUG level for maximum verbosity
285
289
  **kwargs: All request parameters from LanguageModelRequest
286
290
 
287
291
  Returns:
@@ -291,11 +295,16 @@ def run_language_model(
291
295
  model = kwargs.pop("model", "openai/gpt-4o-mini")
292
296
 
293
297
  # Create language model instance
294
- language_model = LanguageModel(model=model)
298
+ language_model = LanguageModel(model=model, verbose=verbose, debug=debug)
295
299
 
296
300
  # Forward to the instance method
297
301
  return language_model.run(
298
- messages, instructions, mock_response=mock_response, **kwargs
302
+ messages,
303
+ instructions,
304
+ mock_response=mock_response,
305
+ verbose=verbose,
306
+ debug=debug,
307
+ **kwargs,
299
308
  )
300
309
 
301
310
 
@@ -528,6 +537,8 @@ async def async_run_language_model(
528
537
  messages: "LanguageModelMessages",
529
538
  instructions: Optional[str] = None,
530
539
  mock_response: Optional[bool] = None,
540
+ verbose: bool = False,
541
+ debug: bool = False,
531
542
  **kwargs: Any,
532
543
  ) -> Union["LanguageModelResponse[Any]", "LanguageModelStream[Any]"]:
533
544
  """Run an async language model request with full parameter support.
@@ -535,6 +546,8 @@ async def async_run_language_model(
535
546
  Args:
536
547
  messages: The input messages/content for the request
537
548
  instructions: Optional system instructions to prepend
549
+ verbose: If True, set logger to INFO level for detailed output
550
+ debug: If True, set logger to DEBUG level for maximum verbosity
538
551
  **kwargs: All request parameters from LanguageModelRequest
539
552
 
540
553
  Returns:
@@ -544,9 +557,14 @@ async def async_run_language_model(
544
557
  model = kwargs.pop("model", "openai/gpt-4o-mini")
545
558
 
546
559
  # Create language model instance
547
- language_model = LanguageModel(model=model)
560
+ language_model = LanguageModel(model=model, verbose=verbose, debug=debug)
548
561
 
549
562
  # Forward to the instance method
550
563
  return await language_model.async_run(
551
- messages, instructions, mock_response=mock_response, **kwargs
564
+ messages,
565
+ instructions,
566
+ mock_response=mock_response,
567
+ verbose=verbose,
568
+ debug=debug,
569
+ **kwargs,
552
570
  )
@@ -47,7 +47,7 @@ class LanguageModelResponse(BaseGenAIModelResponse[T]):
47
47
  In many cases with tool calling, message content is not present, in these cases
48
48
  this field will **NOT** represent tool calls, and will be returned as `None`."""
49
49
 
50
- completion: "litellm.ModelResponse"
50
+ completion: Any
51
51
  """The raw Chat Completion (`litellm.ModelResponse`) object returned by the
52
52
  language model."""
53
53
 
@@ -75,7 +75,7 @@ def extract_tool_calls_from_response(
75
75
  ) -> List[Any]:
76
76
  """Extract tool calls from various response types."""
77
77
  # ensure type is of agent or language model
78
- if response.type not in ["language_model", "agent"]:
78
+ if response.type not in ["language_model", "agent", "graph"]:
79
79
  raise ValueError(f"Response type {response.type} is not supported")
80
80
 
81
81
  # Handle LanguageModelResponse
hammad/logging/logger.py CHANGED
@@ -534,6 +534,16 @@ class Logger:
534
534
 
535
535
  return JSONFormatter()
536
536
 
537
+ def setLevel(
538
+ self,
539
+ level: Union[LoggerLevelName, int],
540
+ ) -> None:
541
+ """Set the logging level."""
542
+ self._user_level = level
543
+ self._logger.setLevel(level)
544
+ for handler in self._logger.handlers:
545
+ handler.setLevel(level)
546
+
537
547
  def add_level(
538
548
  self, name: str, value: int, style: Optional[LoggerLevelSettings] = None
539
549
  ) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hammad-python
3
- Version: 0.0.23
3
+ Version: 0.0.24
4
4
  Author-email: Hammad Saeed <hammadaidev@gmail.com>
5
5
  License: MIT License
6
6
 
@@ -45,6 +45,7 @@ Requires-Dist: fastapi>=0.115.6; extra == 'all'
45
45
  Requires-Dist: instructor>=1.9.0; extra == 'all'
46
46
  Requires-Dist: litellm>=1.73.6; extra == 'all'
47
47
  Requires-Dist: mcp>=1.10.1; extra == 'all'
48
+ Requires-Dist: pydantic-graph>=0.4.2; extra == 'all'
48
49
  Requires-Dist: qdrant-client>=1.14.3; extra == 'all'
49
50
  Requires-Dist: uvicorn>=0.34.0; extra == 'all'
50
51
  Provides-Extra: genai
@@ -52,8 +53,11 @@ Requires-Dist: fastapi>=0.115.6; extra == 'genai'
52
53
  Requires-Dist: instructor>=1.9.0; extra == 'genai'
53
54
  Requires-Dist: litellm>=1.73.6; extra == 'genai'
54
55
  Requires-Dist: mcp>=1.10.1; extra == 'genai'
56
+ Requires-Dist: pydantic-graph>=0.4.2; extra == 'genai'
55
57
  Requires-Dist: qdrant-client>=1.14.3; extra == 'genai'
56
58
  Requires-Dist: uvicorn>=0.34.0; extra == 'genai'
59
+ Provides-Extra: graph
60
+ Requires-Dist: pydantic-graph>=0.4.2; extra == 'graph'
57
61
  Provides-Extra: mcp
58
62
  Requires-Dist: mcp>=1.10.1; extra == 'mcp'
59
63
  Provides-Extra: serve
@@ -1,11 +1,6 @@
1
- hammad/__init__.py,sha256=WAyOiSLwvKYR8hfdlJopSS-cyZRbVL3t7lLoKzNKTRY,643
1
+ hammad/__init__.py,sha256=4HD87ONlgDV8fLLE7xsGW_DXyubyPly7uai_X0cADws,7549
2
2
  hammad/_internal.py,sha256=qQGXjzQyyCxzH5kMjCHwVdAojp-2OOVAO2T2QDxOBn8,8957
3
3
  hammad/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- hammad/_main/__init__.py,sha256=BdftLXUx7B5N3nsj5zkYWXMOIuTajLfsaMC2kMaq0bQ,63
5
- hammad/_main/_fn.py,sha256=VAg52rPOfwwfbonzMfRpl3bE3vuBXoqSVRjO_BSOI-c,501
6
- hammad/_main/_new.py,sha256=9QTopNzqsxRYzDGuswd1KF2HkWt0v8oscGjvKAc0dNA,1852
7
- hammad/_main/_run.py,sha256=U3Cqyk7bY2CAa7q6hWsdUWxfat7Uv4F-CkKNMqEtDCY,1785
8
- hammad/_main/_to.py,sha256=0z-tbvKOY670R2o2J93r1JfV9fJNdAE_qzCdtTalgII,405
9
4
  hammad/cache/__init__.py,sha256=29vI8UkVITtiEe7fTr9UR5Q0lV7tr_SVe7tLlJmm1Ks,954
10
5
  hammad/cache/base_cache.py,sha256=kYJS2IcQtxhzT7BQBFtOWnhw4VkvAapPhAVkfbW5IeY,6353
11
6
  hammad/cache/cache.py,sha256=bzDXxjSolrSdIxqES2VMfVZZGTk_8k4x9n0AW4tlifs,4621
@@ -15,7 +10,7 @@ hammad/cache/ttl_cache.py,sha256=-0pJ4lkVgg1OIb98bQFub9n6f4zgWVs-dQfKZe_DmpE,215
15
10
  hammad/cli/__init__.py,sha256=DkBgA8zkdsOmReoPI5dqni5l5DGkaA7TzrIFvmy5MIo,785
16
11
  hammad/cli/_runner.py,sha256=XEdao-JplTOGfdynN396ganaV_PKhyP0q5D15y7qA-8,9556
17
12
  hammad/cli/animations.py,sha256=h68OuJBkDiYTLdB5pLPgQ2gpPT2c3dNulkDv2BtKHFA,19507
18
- hammad/cli/plugins.py,sha256=vj6QdWjoqp2X4UC0vm55PIT8hkkuznWE5uAU9FZXHKM,31778
13
+ hammad/cli/plugins.py,sha256=qWFtCUZMB0Tu6WwbUg9ut1PvCT5eIIUo2S5WFejUm4A,31804
19
14
  hammad/cli/styles/__init__.py,sha256=Ok7J_uhJgyswNkBWnDw50oTX9Xk1HPksUl3UbmT1qTI,1363
20
15
  hammad/cli/styles/settings.py,sha256=irChf9RsMij3djx_n9D9duoVIzxLCpd9-BlKl6U_OLk,5532
21
16
  hammad/cli/styles/types.py,sha256=vNIeQY_23m10K8qVT7Iy-PMwosGL-La-UAZKszHJjEE,7911
@@ -58,17 +53,21 @@ hammad/formatting/text/converters.py,sha256=g3z-ZGTaKNVbLFFKBSh6qN2Uz0BSkdxCaN3L
58
53
  hammad/formatting/text/markdown.py,sha256=D17NOoGkoXUBhoOGKelKHwi72iqsAwPU5HEFjRJtLQI,3407
59
54
  hammad/formatting/yaml/__init__.py,sha256=4dBeXPi0jx7ELT2_sC2fUYaiY8b8wFiUScLODc9ISEw,462
60
55
  hammad/formatting/yaml/converters.py,sha256=zvSB8QGb56uvwO0KjXllfTj9g1FmNINOKR06DTjvXw8,153
61
- hammad/genai/__init__.py,sha256=1nk9ccY_W_wcch15PUQjO-SB90HHT83L5x7hxZJ06I8,3743
62
- hammad/genai/agents/__init__.py,sha256=H_jThBEznMLk_HxNeRcVRIX3mCOpHRS4hmFTvLofVVU,1294
63
- hammad/genai/agents/agent.py,sha256=6r0_cpeXMw6qhrWThTyvPTv3qyEvbGpZqDtohWrMLkM,59494
64
- hammad/genai/agents/run.py,sha256=G3NLJgg8nXFHfOrh_XR1NpVjGzAgjnA_Ojc_rrMHz9E,23278
56
+ hammad/genai/__init__.py,sha256=KbnekLr0ijsXW509dr1wE78ze_npPkbAI-A6E583CFI,4795
57
+ hammad/genai/agents/__init__.py,sha256=2PIXzdBISSKy4lfJ0vYHuT8G9oRT2GYYIESQfENt9Hk,1500
58
+ hammad/genai/agents/agent.py,sha256=4qnJ8AQHhuqcSWmfdx4qhDQaGyULfYxsfn17ZNJk8H0,80802
59
+ hammad/genai/agents/run.py,sha256=FBD2fOURc8_VPFCQAR7x9VEcDyzj8Gjz8Ki0GH2OPD0,24953
65
60
  hammad/genai/agents/types/__init__.py,sha256=6X6_P82qe15dyqs-vAcXUk4na4tB-7oMdMf484v87io,1119
66
61
  hammad/genai/agents/types/agent_context.py,sha256=u4evwx9B-UKEHMtNcsNlN9q8i12bsW9HhtyvmU0NNTw,313
67
62
  hammad/genai/agents/types/agent_event.py,sha256=zNKXXPKKOsIO9MAhE-YNCOxeNg00O7j1mE0R1pA_Xr8,3925
68
63
  hammad/genai/agents/types/agent_hooks.py,sha256=wgys4ixiHjX5oux4zVSr9OPXyAZ-iJGk_MhaOKEgMxo,7853
69
64
  hammad/genai/agents/types/agent_messages.py,sha256=csjEq42bElaTZYZW2dE6nlFZc142-HgT3bB6h1KMg_w,846
70
- hammad/genai/agents/types/agent_response.py,sha256=vRR9bWwzSA6Y6a_cpf7KrrmJqoAwh5OuuNThTERNVwY,3806
65
+ hammad/genai/agents/types/agent_response.py,sha256=tQ3oNBZC_9dD7t-7tRuKA2h1a-XE5gGryVF9XcmZ5GA,3863
71
66
  hammad/genai/agents/types/agent_stream.py,sha256=VIfqZp55wq6jQh_OtPzZjiL_K4cEoVCkeEZS3s_MIXI,11069
67
+ hammad/genai/graphs/__init__.py,sha256=89SvH1dpir3isJBwWsR384BF7EV8Kg7OJQt0bJXWHyo,2917
68
+ hammad/genai/graphs/base.py,sha256=X0LspElhQgWl8Xx6BoGFo2cCbhcWmUs29-VZDm3V5Vo,41494
69
+ hammad/genai/graphs/plugins.py,sha256=AK_JSo2eLCD9cdrxZ5OxxZtLVrUDcQ8f_FWBxOQPzyw,10007
70
+ hammad/genai/graphs/types.py,sha256=bk3SaBYVgKhPtWNBRfv7CpHCWE4cjvbGoW5dM0vLdI8,20661
72
71
  hammad/genai/models/__init__.py,sha256=e4TbEsiKIoXENOEsdIdQcWWt0RnFdTEqCz0nICHQHtM,26
73
72
  hammad/genai/models/model_provider.py,sha256=2RdOeqr7KpjyrMqq4YH4OYy1pk6sjzf2CPu1ZHa1Pdk,75
74
73
  hammad/genai/models/multimodal.py,sha256=KXUyLXqM1eBgBGZFEbMw3dYbakZFAXoko2xYprronxY,1276
@@ -82,14 +81,14 @@ hammad/genai/models/embeddings/types/embedding_model_response.py,sha256=V2H_VTl1
82
81
  hammad/genai/models/embeddings/types/embedding_model_run_params.py,sha256=ZGhCXrEEzMF5y-V8neF2a73Gh1emzrYUHVxWkybg5uE,1570
83
82
  hammad/genai/models/embeddings/types/embedding_model_settings.py,sha256=KEwvoElXhPMSVCKW2uKwqqT2lSAAthQXmGXaV7Qk5cU,1268
84
83
  hammad/genai/models/language/__init__.py,sha256=jyn5GIT0J7gcDQAbKlcW25pU7jzUY-Jl-VT4Nc8Tleg,1915
85
- hammad/genai/models/language/model.py,sha256=TIw6DKGahpO97ju5-cI9B0LfgSGK63IPrLd4a1mRE-8,40154
86
- hammad/genai/models/language/run.py,sha256=41VBSq1UVnsWKV8cLqCEWRkSjsrJhYVnk8xSKaIIGE0,21439
84
+ hammad/genai/models/language/model.py,sha256=se0Lflc1d9Vw-T0SlWLxIKDqNv01QkSfOR3VETNNRFw,42027
85
+ hammad/genai/models/language/run.py,sha256=7h5EOD6ar1ITrs3GiktQa7ZT5kda7rY1-XK4osQ8ADw,22031
87
86
  hammad/genai/models/language/types/__init__.py,sha256=cdLnoCiVmK6T86-5CZrUJg2rxXKoSk-svyCSviUdgao,1534
88
87
  hammad/genai/models/language/types/language_model_instructor_mode.py,sha256=7ywBaY24m-UKRynnX6XsfVf_hsQrM2xHAHugTgV0Vho,1008
89
88
  hammad/genai/models/language/types/language_model_messages.py,sha256=e-HZ_YKXq17gwmMlpOmYUYUpBFm7Mu3aRawtjSslWXs,504
90
89
  hammad/genai/models/language/types/language_model_name.py,sha256=2V70cZ47L9yIcug6LCcMHcvEJaee7gRN6DUPhLUBlsE,8056
91
90
  hammad/genai/models/language/types/language_model_request.py,sha256=ZtzhCx8o6zkEBS3uTFXFLf_poDD7MnIp1y7MbKckOmI,3911
92
- hammad/genai/models/language/types/language_model_response.py,sha256=YHDEDJuhQ_ULs9qse2b-h5cx1ELWgfPc2BHk34OPVxE,7540
91
+ hammad/genai/models/language/types/language_model_response.py,sha256=uUmcaSBBb0-CrWOx1axZ-INHmgyac5ktiAbR-HyW-fk,7520
93
92
  hammad/genai/models/language/types/language_model_response_chunk.py,sha256=wIzGZw732KsI-a1-uASjATA6qvBuq-7rupWoFjsAgQo,1796
94
93
  hammad/genai/models/language/types/language_model_settings.py,sha256=C0EvLXZoOLgPZ4bX7mVFs_CWP-jam27qkseJRGsBAfQ,2794
95
94
  hammad/genai/models/language/types/language_model_stream.py,sha256=XgJ83JSbtTdf7jeLQMrDhMfI7zp0pRrdY7JWYbZV_h0,22043
@@ -99,10 +98,10 @@ hammad/genai/models/language/utils/structured_outputs.py,sha256=Va7pie9AOvLbJOaD
99
98
  hammad/genai/types/__init__.py,sha256=W0fzUnKhDynt4TkwZX8LCRYfgRTAVomSuWqPmhGu8sg,25
100
99
  hammad/genai/types/base.py,sha256=VnGL45w8oR-6rWl2GfGgWX4SjMC-23RGWuN0_H2bH_I,5437
101
100
  hammad/genai/types/history.py,sha256=zsfBvGMoFTHZCT7Igae-5_jszu409dVJ_wEmNw7alCk,10208
102
- hammad/genai/types/tools.py,sha256=3p7qhZcilP_NOCOnufCkubTeYN0yC7Ij5bqrUy-FYow,16554
101
+ hammad/genai/types/tools.py,sha256=Te4WU-MOTCoFvpMw0ddHB9NjlXvpeAYZ99Cd6pcchi4,16563
103
102
  hammad/logging/__init__.py,sha256=VtskZx0bKEAJ9FHTMflhB1CzeFUxLpDT5HPgcecAXUo,701
104
103
  hammad/logging/decorators.py,sha256=VbI1x3P4ft0-0BGjXq7nQgiuNqcXAA51CGmoSn47iSw,30122
105
- hammad/logging/logger.py,sha256=5Y41gCtH7APxNjIXtsZg1E9nwpi2xTgRAoC2l-QKil4,31706
104
+ hammad/logging/logger.py,sha256=60SrmxESlE4cd_iJr6tKwjUaOkvtqQcbUCjCCeh3Nog,31987
106
105
  hammad/mcp/__init__.py,sha256=5oTU-BLYjfz6fBHDH9cyWg3DpQ6Qar-jodbCR05SuWo,1123
107
106
  hammad/mcp/client/__init__.py,sha256=_SfnKvd5Za-FfFoE5GcXkBY9WcwprZND9SyZ6RY--no,795
108
107
  hammad/mcp/client/client.py,sha256=auKCiIJfcZkuVFRapTpqYP4PxoyIfx40gVbMYLBdTzI,20565
@@ -126,7 +125,7 @@ hammad/web/openapi/__init__.py,sha256=JhJQ6_laBmB2djIYFc0vgGha2GsdUe4FP1LDdZCQ5J
126
125
  hammad/web/openapi/client.py,sha256=1pXz7KAO_0pN4kQZoWKWskXDYGiJ535TsPO1GGCiC0E,26816
127
126
  hammad/web/search/__init__.py,sha256=e9A6znPIiZCz-4secyHbUs0uUGf5yAqW6wGacgx961U,24
128
127
  hammad/web/search/client.py,sha256=LIx2MsHhn6cRTuq5i1mWowRTdIhPobY4GQV3S3bk9lk,36694
129
- hammad_python-0.0.23.dist-info/METADATA,sha256=qQEcjvfgyHivMxhqEqkR1ER-MZU2J8FD8L2EjwpE7Vs,6570
130
- hammad_python-0.0.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
131
- hammad_python-0.0.23.dist-info/licenses/LICENSE,sha256=h74yFUWjbBaodcWG5wNmm30npjl8obVcxD-1nQfUp2I,1069
132
- hammad_python-0.0.23.dist-info/RECORD,,
128
+ hammad_python-0.0.24.dist-info/METADATA,sha256=aJPgdYoABndPWZn6gLJ1aQObIHsupEBf2itoFKutXjA,6755
129
+ hammad_python-0.0.24.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
130
+ hammad_python-0.0.24.dist-info/licenses/LICENSE,sha256=h74yFUWjbBaodcWG5wNmm30npjl8obVcxD-1nQfUp2I,1069
131
+ hammad_python-0.0.24.dist-info/RECORD,,
hammad/_main/__init__.py DELETED
@@ -1,4 +0,0 @@
1
- """hammad._main
2
-
3
- Main entrypoint for the `hammad` package.
4
- """
hammad/_main/_fn.py DELETED
@@ -1,20 +0,0 @@
1
- """hammad._fn
2
-
3
- Namespace resource for **DECORATORS** used at the top level
4
- of the `hammad` package."""
5
-
6
-
7
- class fn:
8
- """Top level namespace resource for decorators. This can
9
- be used as `@hammad.fn.cached`, hammad.fn...`. All functions within
10
- this module are decorators."""
11
-
12
- from ..cache import cached, auto_cached
13
- from ..genai import define_tool
14
- from ..logging import trace, trace_cls, trace_function, trace_http
15
- from ..service import (
16
- serve,
17
- )
18
-
19
-
20
- __all__ = "fn"
hammad/_main/_new.py DELETED
@@ -1,52 +0,0 @@
1
- """hammad._new
2
-
3
- Main entrypoint for the `new` resource.
4
- """
5
-
6
-
7
- class new:
8
- """Global factory resource for creating various objects available
9
- throughout the package. You can find most things in here."""
10
-
11
- from ..cache import create_cache as cache
12
- from ..data.configurations import (
13
- read_configuration_from_dotenv as configuration_from_dotenv,
14
- read_configuration_from_file as configuration_from_file,
15
- read_configuration_from_url as configuration_from_url,
16
- read_configuration_from_os_vars as configuration_from_os_vars,
17
- read_configuration_from_os_prefix as configuration_from_os_prefix,
18
- )
19
- from ..data.collections import (
20
- create_collection as collection,
21
- )
22
- from ..data.sql import (
23
- create_database as database,
24
- )
25
- from ..data.types import Text as text, Audio as audio, Image as image, File as file
26
- from ..genai import (
27
- create_embedding_model as embedding_model,
28
- create_language_model as language_model,
29
- create_agent as agent,
30
- )
31
- from ..logging import create_logger as logger
32
- from ..mcp import (
33
- MCPClient as mcp_client,
34
- MCPServerSseSettings as mcp_server_sse_settings,
35
- MCPClientSseSettings as mcp_client_sse_settings,
36
- MCPClientStreamableHttpSettings as mcp_client_http_settings,
37
- MCPServerStreamableHttpSettings as mcp_server_streamable_http_settings,
38
- MCPServerStdioSettings as mcp_server_stdio_settings,
39
- MCPClientStdioSettings as mcp_client_stdio_settings,
40
- )
41
- from ..service import (
42
- create_service as service,
43
- async_create_service as async_service,
44
- )
45
- from ..web import (
46
- create_http_client as http_client,
47
- create_openapi_client as openapi_client,
48
- create_search_client as search_client,
49
- )
50
-
51
-
52
- __all__ = "new"
hammad/_main/_run.py DELETED
@@ -1,50 +0,0 @@
1
- """hammad._run
2
-
3
- Main entrypoint for the `run` command and resource at the
4
- top level of the hammad package.
5
- """
6
-
7
-
8
- class run:
9
- """Top level namespace resource for running various things and stuff."""
10
-
11
- from ..genai import (
12
- # agents
13
- run_agent as agent,
14
- run_agent_iter as agent_iter,
15
- async_run_agent as async_agent,
16
- async_run_agent_iter as async_agent_iter,
17
- # models
18
- run_embedding_model as embedding_model,
19
- async_run_embedding_model as async_embedding_model,
20
- run_language_model as language_model,
21
- async_run_language_model as async_language_model,
22
- run_image_edit_model as image_edit_model,
23
- async_run_image_edit_model as async_image_edit_model,
24
- run_image_generation_model as image_generation_model,
25
- async_run_image_generation_model as async_image_generation_model,
26
- run_image_variation_model as image_variation_model,
27
- async_run_image_variation_model as async_image_variation_model,
28
- run_reranking_model as reranking_model,
29
- async_run_reranking_model as async_reranking_model,
30
- run_transcription_model as transcription_model,
31
- async_run_transcription_model as async_transcription_model,
32
- run_tts_model as tts_model,
33
- async_run_tts_model as async_tts_model,
34
- )
35
- from ..mcp import launch_mcp_servers as mcp_servers
36
- from ..runtime import (
37
- run_parallel as parallel,
38
- run_sequentially as sequentially,
39
- run_with_retry as with_retry,
40
- )
41
- from ..web import (
42
- read_web_page as web_reader,
43
- read_web_pages as web_reader_batch,
44
- run_web_search as web_search,
45
- run_news_search as news_search,
46
- run_web_request as web_request,
47
- )
48
-
49
-
50
- __all__ = ["run"]
hammad/_main/_to.py DELETED
@@ -1,19 +0,0 @@
1
- """hammad._to
2
-
3
- Top level namspace resource for converters."""
4
-
5
-
6
- class to:
7
- """Converter resource"""
8
-
9
- from ..data import (
10
- convert_to_pydantic_field as pydantic_field,
11
- convert_to_pydantic_model as pydantic_model,
12
- )
13
- from ..formatting.json import (
14
- convert_to_json_schema as json_schema,
15
- )
16
- from ..formatting.text import convert_to_text as text
17
-
18
-
19
- __all__ = "to"