hivetrace 1.3.15__py3-none-any.whl → 1.4.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hivetrace
3
- Version: 1.3.15
3
+ Version: 1.4.0
4
4
  Summary: Hivetrace SDK for monitoring LLM applications
5
5
  Home-page: http://hivetrace.ai
6
6
  Author: Raft
@@ -53,7 +53,14 @@ Dynamic: summary
53
53
 
54
54
  ## Overview
55
55
 
56
- The Hivetrace SDK lets you integrate with the Hivetrace service to monitor user prompts and LLM responses. It supports both synchronous and asynchronous workflows and can be configured via environment variables.
56
+ The Hivetrace SDK integrates your application with Hivetrace to inspect and monitor both user prompts (input) and LLM responses (output).
57
+
58
+ Typical use cases:
59
+
60
+ - **Observability**: trace prompts/responses with consistent metadata (session, user, agent, etc.)
61
+ - **Policy enforcement**: detect unsafe or disallowed content and decide what to do next
62
+ - **Sanitization**: optionally use cleaned text when data cleaning is enabled
63
+ - **Attachments (optional)**: attach files for analysis when needed (you can omit files entirely)
57
64
 
58
65
  ---
59
66
 
@@ -67,12 +74,90 @@ pip install hivetrace[base]
67
74
 
68
75
  ---
69
76
 
77
+ ## Configuration
78
+
79
+ By default, the SDK reads its connection settings from environment variables:
80
+
81
+ - `HIVETRACE_URL` — Base URL of your Hivetrace instance (must start with `http://` or `https://`)
82
+ - `HIVETRACE_ACCESS_TOKEN` — API token used for authentication (created in the UI)
83
+
84
+ `HIVETRACE_APP_ID` is optional and is used by some integrations/examples as a convenient place to store your application ID. You can always pass `application_id` explicitly per call.
85
+
86
+ ### Recommended: `.env` file
87
+
88
+ ```bash
89
+ HIVETRACE_URL=https://your-hivetrace-instance.com
90
+ HIVETRACE_ACCESS_TOKEN=your-access-token
91
+ HIVETRACE_APP_ID=your-application-id
92
+ ```
93
+
94
+ ### Alternative: pass config explicitly
95
+
96
+ ```python
97
+ from hivetrace import SyncHivetraceSDK
98
+
99
+ client = SyncHivetraceSDK(
100
+ config={
101
+ "HIVETRACE_URL": "https://your-hivetrace-instance.com",
102
+ "HIVETRACE_ACCESS_TOKEN": "your-access-token",
103
+ }
104
+ )
105
+ ```
106
+
107
+ ---
108
+
70
109
  ## Quick Start
71
110
 
72
111
  ```python
73
- from hivetrace import SyncHivetraceSDK, AsyncHivetraceSDK
112
+ from hivetrace import SyncHivetraceSDK
113
+ ```
114
+
115
+ Create an application in the Hivetrace UI and copy its `application_id`.
116
+
117
+ ### Sync: use Hivetrace before/after your LLM
118
+
119
+ In synchronous mode you can use Hivetrace results to decide:
120
+
121
+ - **Whether to call your LLM at all** (when the user input is not allowed)
122
+ - **What to return to the end user** (when the LLM output is not allowed)
123
+
124
+ This lets you return a safe, prepared response instead of sending a violating prompt to the LLM or returning a potentially unsafe LLM answer.
125
+
126
+ **Recommended flow (best practice):**
127
+
128
+ - **Step 1 — inspect input**: call `client.input(...)` for the user message.
129
+ - If the result indicates a violation (guardrails/custom policy), **stop** and return a **prepared safe reply** (e.g. “Sorry, I can’t help with that.”). Do not call your LLM.
130
+ - If the result includes sanitized text (e.g. `dataclean.cleaned_text`), you may choose to send the sanitized version to your LLM instead of the raw user text.
131
+ - **Step 2 — call your LLM**: only if the input is acceptable.
132
+ - **Step 3 — inspect output**: call `client.output(...)` for the LLM answer.
133
+ - If the output violates your policies, return a **prepared safe reply** instead of the LLM answer.
134
+
135
+ ```python
136
+ from hivetrace import SyncHivetraceSDK
137
+
138
+ APP_ID = "your-application-id" # created in the Hivetrace UI
139
+
140
+ client = SyncHivetraceSDK()
141
+
142
+ user_message = "My name is John"
143
+
144
+ # 1) Inspect the user prompt (input)
145
+ input_result = client.input(application_id=APP_ID, message=user_message)
146
+
147
+ # If available, you can prefer sanitized text (data cleaning) for your LLM call.
148
+ prompt_for_llm = input_result.get("dataclean", {}).get("cleaned_text", user_message)
149
+
150
+ # 2) Call your LLM (your code)
151
+ assistant_message = call_your_llm(prompt_for_llm)
152
+
153
+ # 3) Inspect the LLM response (output)
154
+ output_result = client.output(application_id=APP_ID, message=assistant_message)
74
155
  ```
75
156
 
157
+ ---
158
+
159
+ ## Clients
160
+
76
161
  You can use either the synchronous client (`SyncHivetraceSDK`) or the asynchronous client (`AsyncHivetraceSDK`). Choose the one that fits your runtime.
77
162
 
78
163
  ---
@@ -86,42 +171,26 @@ You can use either the synchronous client (`SyncHivetraceSDK`) or the asynchrono
86
171
  client = SyncHivetraceSDK()
87
172
  ```
88
173
 
89
- ### Send a user prompt (input)
174
+ ### Resource management (Sync)
90
175
 
91
176
  ```python
92
- response = client.input(
93
- application_id="your-application-id", # Obtained after registering the application in the UI
94
- message="User prompt here",
95
- )
177
+ from hivetrace import SyncHivetraceSDK
96
178
 
97
- # Optionally attach files (filename, bytes, mime_type)
98
- files = [
99
- ("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
100
- ]
101
- response_with_files = client.input(
102
- application_id="your-application-id",
103
- message="User prompt with files",
104
- files=files,
105
- )
106
- ```
179
+ APP_ID = "your-application-id" # created in the Hivetrace UI
107
180
 
108
- ### Send an LLM response (output)
181
+ def main():
182
+ # option 1: context manager
183
+ with SyncHivetraceSDK() as client:
184
+ client.input(application_id=APP_ID, message="User prompt here")
109
185
 
110
- ```python
111
- response = client.output(
112
- application_id="your-application-id",
113
- message="LLM response here",
114
- )
186
+ # option 2: manual close
187
+ client = SyncHivetraceSDK()
188
+ try:
189
+ client.input(application_id=APP_ID, message="User prompt here")
190
+ finally:
191
+ client.close()
115
192
 
116
- # With files
117
- files = [
118
- ("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
119
- ]
120
- response_with_files = client.output(
121
- application_id="your-application-id",
122
- message="LLM response with files",
123
- files=files,
124
- )
193
+ main()
125
194
  ```
126
195
 
127
196
  ---
@@ -131,73 +200,74 @@ response_with_files = client.output(
131
200
  ### Initialize (Async)
132
201
 
133
202
  ```python
134
- # The async client can be used as a context manager
203
+ from hivetrace import AsyncHivetraceSDK
204
+
205
+ # The async client reads configuration from environment variables or accepts an explicit config
135
206
  client = AsyncHivetraceSDK()
136
207
  ```
137
208
 
138
- ### Send a user prompt (input)
209
+ ### Resource management (Async)
139
210
 
140
211
  ```python
141
- response = await client.input(
142
- application_id="your-application-id",
143
- message="User prompt here",
144
- )
212
+ import asyncio
213
+ from hivetrace import AsyncHivetraceSDK
145
214
 
146
- # With files (filename, bytes, mime_type)
147
- files = [
148
- ("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
149
- ]
150
- response_with_files = await client.input(
151
- application_id="your-application-id",
152
- message="User prompt with files",
153
- files=files,
154
- )
155
- ```
215
+ APP_ID = "your-application-id" # created in the Hivetrace UI
156
216
 
157
- ### Send an LLM response (output)
217
+ async def main():
218
+ # option 1: context manager
219
+ async with AsyncHivetraceSDK() as client:
220
+ await client.input(application_id=APP_ID, message="User prompt here")
158
221
 
159
- ```python
160
- response = await client.output(
161
- application_id="your-application-id",
162
- message="LLM response here",
163
- )
222
+ # option 2: manual close
223
+ client = AsyncHivetraceSDK()
224
+ try:
225
+ await client.input(application_id=APP_ID, message="User prompt here")
226
+ finally:
227
+ await client.close()
164
228
 
165
- # With files
166
- files = [
167
- ("doc1.txt", open("doc1.txt", "rb"), "text/plain"),
168
- ]
169
- response_with_files = await client.output(
170
- application_id="your-application-id",
171
- message="LLM response with files",
172
- files=files,
173
- )
229
+ asyncio.run(main())
174
230
  ```
175
231
 
176
232
  ---
177
233
 
178
- ## Example with Additional Parameters
234
+ ## Optional context (`additional_parameters`) and files (`files`)
235
+
236
+ Both `input()` and `output()` accept:
237
+
238
+ - **`additional_parameters` (optional)**: any JSON-serializable metadata you want to attach (session id, user id, agent info, etc.)
239
+
240
+ File attachments (`files`) are **optional** and are currently supported for **user prompts only** (`input()`).
179
241
 
180
242
  ```python
181
- response = client.input(
182
- application_id="your-application-id",
183
- message="User prompt here",
184
- additional_parameters={
243
+ from pathlib import Path
244
+ from hivetrace import SyncHivetraceSDK
245
+
246
+ APP_ID = "your-application-id" # created in the Hivetrace UI
247
+ client = SyncHivetraceSDK()
248
+
249
+ files = [
250
+ ("doc1.txt", Path("doc1.txt").read_bytes(), "text/plain"),
251
+ ]
252
+
253
+ result = client.input(
254
+ application_id=APP_ID,
255
+ message="My name is John",
256
+ additional_parameters={ # optional
185
257
  "session_id": "your-session-id",
186
258
  "user_id": "your-user-id",
187
259
  "agents": {
188
260
  "agent-1-id": {"name": "Agent 1", "description": "Agent description"},
189
261
  "agent-2-id": {"name": "Agent 2"},
190
- "agent-3-id": {}
191
262
  },
192
- # If you want to send only to censor and avoid DB persistence on backend
193
- "censor_only": True,
194
- }
263
+ },
264
+ files=files, # optional (input only)
195
265
  )
196
266
  ```
197
267
 
198
268
  ---
199
269
 
200
- ## API
270
+ ## API Reference
201
271
 
202
272
  ### `input`
203
273
 
@@ -224,22 +294,35 @@ Sends a **user prompt** to Hivetrace.
224
294
  * `application_id` — Application identifier (must be a valid UUID, created in the UI)
225
295
  * `message` — The user prompt
226
296
  * `additional_parameters` — Optional dictionary with extra context (session, user, agents, etc.)
227
- - Supported special flags: `censor_only: bool` — when `True`, backend should not persist the message in DB and only pass it to the censor
228
- * `files` — Optional list of tuples `(filename: str, content: bytes, mime_type: str)`; files are attached to the created analysis record
229
-
230
- Response contains a `blocked` flag that indicates role restrictions.
297
+ * `files` — Optional list of tuples `(filename: str, content: bytes, mime_type: str)`
231
298
 
232
299
  **Response example:**
233
300
 
234
301
  ```json
235
302
  {
236
- "blocked": false,
237
- "status": "processed",
238
- "monitoring_result": {
239
- "is_toxic": false,
240
- "type_of_violation": "benign",
241
- "token_count": 9,
242
- "token_usage_severity": None
303
+ "request_id": "62c51dcf-f7bb-44d3-8c3a-6007b2a44d7d",
304
+ "schema_version": "2.0.0",
305
+ "status": "success",
306
+ "errors": [],
307
+ "tokens": {
308
+ "count": 8,
309
+ "usage_severity": null
310
+ },
311
+ "guardrails": {
312
+ "flagged": false
313
+ },
314
+ "custom_policy": {
315
+ "flagged": false
316
+ },
317
+ "dataclean": {
318
+ "flagged": true,
319
+ "cleaned_text": "My name is XXXX",
320
+ "types": [
321
+ {
322
+ "type": "NAME",
323
+ "count": 1
324
+ }
325
+ ]
243
326
  }
244
327
  }
245
328
  ```
@@ -254,7 +337,6 @@ def output(
254
337
  application_id: str,
255
338
  message: str,
256
339
  additional_parameters: dict | None = None,
257
- files: list[tuple[str, bytes, str]] | None = None,
258
340
  ) -> dict: ...
259
341
 
260
342
  # Async
@@ -262,7 +344,6 @@ async def output(
262
344
  application_id: str,
263
345
  message: str,
264
346
  additional_parameters: dict | None = None,
265
- files: list[tuple[str, bytes, str]] | None = None,
266
347
  ) -> dict: ...
267
348
  ```
268
349
 
@@ -271,133 +352,37 @@ Sends an **LLM response** to Hivetrace.
271
352
  * `application_id` — Application identifier (must be a valid UUID, created in the UI)
272
353
  * `message` — The LLM response
273
354
  * `additional_parameters` — Optional dictionary with extra context (session, user, agents, etc.)
274
- * `files` — Optional list of tuples `(filename: str, content: bytes, mime_type: str)`
275
-
276
- > Files are uploaded after the main request completes and an analysis ID is available.
277
-
278
- Response contains a `blocked` flag that indicates role restrictions.
279
355
 
280
356
  **Response example:**
281
357
 
282
358
  ```json
283
359
  {
284
- "blocked": false,
285
- "status": "processed",
286
- "monitoring_result": {
287
- "is_toxic": false,
288
- "type_of_violation": "safe",
289
- "token_count": 21,
290
- "token_usage_severity": None
360
+ "request_id": "f1e45e80-8f95-449b-9ac4-977b8616ed99",
361
+ "schema_version": "2.0.0",
362
+ "status": "success",
363
+ "errors": [],
364
+ "tokens": {
365
+ "count": 5,
366
+ "usage_severity": null
367
+ },
368
+ "guardrails": {
369
+ "flagged": false
370
+ },
371
+ "dataclean": {
372
+ "flagged": true,
373
+ "cleaned_text": "My name is XXXX",
374
+ "types": [
375
+ {
376
+ "type": "NAME",
377
+ "count": 1
378
+ }
379
+ ]
291
380
  }
292
381
  }
293
382
  ```
294
383
 
295
384
  ---
296
385
 
297
- ## Sending Requests in Sync Mode
298
-
299
- ```python
300
- def main():
301
- # option 1: context manager
302
- with SyncHivetraceSDK() as client:
303
- response = client.input(
304
- application_id="your-application-id",
305
- message="User prompt here",
306
- )
307
-
308
- # option 2: manual close
309
- client = SyncHivetraceSDK()
310
- try:
311
- response = client.input(
312
- application_id="your-application-id",
313
- message="User prompt here",
314
- )
315
- finally:
316
- client.close()
317
-
318
- main()
319
- ```
320
-
321
- ---
322
-
323
- ## Sending Requests in Async Mode
324
-
325
- ```python
326
- import asyncio
327
-
328
- async def main():
329
- # option 1: context manager
330
- async with AsyncHivetraceSDK() as client:
331
- response = await client.input(
332
- application_id="your-application-id",
333
- message="User prompt here",
334
- )
335
-
336
- # option 2: manual close
337
- client = AsyncHivetraceSDK()
338
- try:
339
- response = await client.input(
340
- application_id="your-application-id",
341
- message="User prompt here",
342
- )
343
- finally:
344
- await client.close()
345
-
346
- asyncio.run(main())
347
- ```
348
-
349
- ### Closing the Async Client
350
-
351
- ```python
352
- await client.close()
353
- ```
354
-
355
- ---
356
-
357
- ## Configuration
358
-
359
- The SDK reads configuration from environment variables:
360
-
361
- * `HIVETRACE_URL` — Base URL allowed to call.
362
- * `HIVETRACE_ACCESS_TOKEN` — API token used for authentication.
363
-
364
- These are loaded automatically when you create a client.
365
-
366
-
367
- ### Configuration Sources
368
-
369
- Hivetrace SDK can retrieve configuration from the following sources:
370
-
371
- **.env File:**
372
-
373
- ```bash
374
- HIVETRACE_URL=https://your-hivetrace-instance.com
375
- HIVETRACE_ACCESS_TOKEN=your-access-token # obtained in the UI (API Tokens page)
376
- ```
377
-
378
- The SDK will automatically load these settings.
379
-
380
- You can also pass a config dict explicitly when creating a client instance.
381
- ```bash
382
- client = SyncHivetraceSDK(
383
- config={
384
- "HIVETRACE_URL": HIVETRACE_URL,
385
- "HIVETRACE_ACCESS_TOKEN": HIVETRACE_ACCESS_TOKEN,
386
- },
387
- )
388
- ```
389
-
390
- ## Environment Variables
391
-
392
- Set up your environment variables for easier configuration:
393
-
394
- ```bash
395
- # .env file
396
- HIVETRACE_URL=https://your-hivetrace-instance.com
397
- HIVETRACE_ACCESS_TOKEN=your-access-token
398
- HIVETRACE_APP_ID=your-application-id
399
- ```
400
-
401
386
  # CrewAI Integration
402
387
 
403
388
  **Demo repository**
@@ -1,12 +1,12 @@
1
1
  hivetrace/__init__.py,sha256=4pzKgIwuoemA_gzK0af8_XEOFFRYcPhxCjE-ElhuPYU,3252
2
2
  hivetrace/adapters/__init__.py,sha256=lWWh3KWDghlAz8H9U8TOGaoRv76QQyKg46zvkuVWG7Y,1033
3
- hivetrace/adapters/base_adapter.py,sha256=fg-6WgSWS48WSZPyO6YyrwEVz8jyUadnv48oHcG5brg,6940
3
+ hivetrace/adapters/base_adapter.py,sha256=W4ZvxrrKnS4f9PLDMVwcTEflvaI-oxLPPJvZ0PG_iNQ,7245
4
4
  hivetrace/adapters/crewai/__init__.py,sha256=cHxroLbjZAH5HX763SEc4cRZrfJGQ6XjETJRx6LFjWY,239
5
- hivetrace/adapters/crewai/adapter.py,sha256=RhScjGOao-foiDpYpGTV8Xk3Iq25_kQP0PX1bCg2Gv8,15965
6
- hivetrace/adapters/crewai/decorators.py,sha256=TMlJmWI7t4RpDItj5Qg7U2x-uQCk_p7wPGFlNeIMvbM,1662
7
- hivetrace/adapters/crewai/monitored_agent.py,sha256=11hDjAFqV_hkvBl99r9N0h9aJHyY3vKBvq_4GNfdan4,3138
5
+ hivetrace/adapters/crewai/adapter.py,sha256=k0c57tuwv8OjfPnTJAFuoGIXxrefP9vVlE1pb5M7QE8,16078
6
+ hivetrace/adapters/crewai/decorators.py,sha256=KFv___yzY_OoLg4KyXQanfal7hSpQiHiyNrLdNEfi1Q,1749
7
+ hivetrace/adapters/crewai/monitored_agent.py,sha256=AgPpViRiuksDjAqNDykrRRqL5XsP_7EDo34aEnu40EU,3163
8
8
  hivetrace/adapters/crewai/monitored_crew.py,sha256=9Bv3s4sxhyCfM0lri9PIJH8f7lgvI9tL-ZGkDWch75s,5041
9
- hivetrace/adapters/crewai/tool_wrapper.py,sha256=FBBN2kScY2lQnSa6VfEiF7l8GhGNFp9GCnmPMWTkHaM,1993
9
+ hivetrace/adapters/crewai/tool_wrapper.py,sha256=qOH7F8dinZIdC03x_V0Fl7_kC8X6fCVmCwX7MSzU-c0,2064
10
10
  hivetrace/adapters/langchain/__init__.py,sha256=yqQxJffaLa6VX9FK-RUJ4I9GupomMVEZcasvOnvMoVk,552
11
11
  hivetrace/adapters/langchain/adapter.py,sha256=zvnDP_Yg1GDGHRUecN3Xo-AElYlUwdp9HeDD2BCYoOo,12777
12
12
  hivetrace/adapters/langchain/api.py,sha256=LeY6f1rI3j6hAzhe1QeaAt7UM7Aii-WHEJ_wiEsKJs4,8968
@@ -15,31 +15,31 @@ hivetrace/adapters/langchain/callback.py,sha256=LJXzJDwAECOQIlZqkVvSCn1KzBjUVSQp
15
15
  hivetrace/adapters/langchain/decorators.py,sha256=yocDjsDup8omiMYFX2Dx8mws45bTKsMGhF6-nuDwmfk,3193
16
16
  hivetrace/adapters/langchain/models.py,sha256=Pk4cQRrdSu9q8Mp49dU6oeUIesw1f1gG5rt1R9HjLMo,1435
17
17
  hivetrace/adapters/openai_agents/__init__.py,sha256=T-SEEfPEYQpWljoK6D5g3UPFJXBPs8wSQYITrh-32jQ,128
18
- hivetrace/adapters/openai_agents/adapter.py,sha256=tpgNnXU0Gr7Iu022CpjJ5Tear94etImh9vN_AaViCXE,5317
18
+ hivetrace/adapters/openai_agents/adapter.py,sha256=UZhEZXyu_khuf4jC571HJ9DZK_6msBWyiaQFP2xVRIA,6012
19
19
  hivetrace/adapters/openai_agents/models.py,sha256=THbpcD-J6BnMVZ4vYzymzmr-iezAV2crCr-Sd8wdWzw,1379
20
- hivetrace/adapters/openai_agents/tracing.py,sha256=aOmJV2PT77x0bKZHXy46GRsExFmGw6ABPwUy7R9F0tA,5253
20
+ hivetrace/adapters/openai_agents/tracing.py,sha256=QSkD_-o6mSSI5DCjrNGWPtegBVxieYT5KhUCGfytp3o,5380
21
21
  hivetrace/adapters/utils/__init__.py,sha256=AkdJzecQlhT3hHFOIO5zWbAIEXvbgH_5vmzlPViedt0,142
22
22
  hivetrace/adapters/utils/logging.py,sha256=UxCMFvlpP6vJfzRwMYhhJIi7RTWdgVK2sWtCeEB67_w,1126
23
23
  hivetrace/client/__init__.py,sha256=Daz_KxOMzGSBKUpv48tTooGZrmzk0wzDq8QUTHuBZBU,313
24
- hivetrace/client/async_client.py,sha256=i5k11Lx9azdY1ZKnfY1iEOf039wi8c3OwKh_RDHT_Ms,6962
25
- hivetrace/client/base.py,sha256=FuhOZh_at02DNAj2v5UobIF_NQIEKH0NqeeZMT6LLWU,8072
26
- hivetrace/client/sync_client.py,sha256=mfUGhfW195jbo6qAtavF7mQrQIU1WNuI7Swfs87DyA4,6791
24
+ hivetrace/client/async_client.py,sha256=_XjwSIo6cjVLUkq_1uxszun6L6mlifdxKHfEjMkpiek,5209
25
+ hivetrace/client/base.py,sha256=eL_VpXElmPJogaIAeB-4oZQZC8Z3-wDu1OTN2cl3HrY,7639
26
+ hivetrace/client/sync_client.py,sha256=_r3rXcr7VzNX9j9lsLFFNE1FgAMyEejHIaaHICVe3BA,5034
27
27
  hivetrace/errors/__init__.py,sha256=3Sqr2Pz4NwE_u8CgTzVbzoNj-B52cwzdsHINnpWO3Yg,1006
28
- hivetrace/errors/api.py,sha256=ThIoH8akPWuSqF6bqnex5f25p8ZBnRFsz2IrcivAHgc,1029
28
+ hivetrace/errors/api.py,sha256=r7nmeprgdXMqh8l382zphWnaBeQFG2rMOFmO3gdLqOs,1043
29
29
  hivetrace/errors/base.py,sha256=_2o8TbvlPzJEzKGl4T3u1XbTAJgP5fO19T6XQSfH3pI,686
30
30
  hivetrace/errors/network.py,sha256=4GlFpUU9BV5Q1yoizadRQjDPLlIn7lh4Nyn8e7ZAQQg,697
31
- hivetrace/errors/validation.py,sha256=2XFgxumDAU8dZnkDiF_eFqANiqsc8lIsbwjrzcAva98,1020
31
+ hivetrace/errors/validation.py,sha256=I_W5ZUcbs1kqvXcE7z4RzZzy1zka5J0W7W0zh-xaBfc,1027
32
32
  hivetrace/handlers/__init__.py,sha256=9edrtdJyvx8UkANmrjjVhg9f0kWMxfXVrmURTUrW6mg,435
33
33
  hivetrace/handlers/error_handler.py,sha256=aWLL--HKBm4h8AO4oQSpsFObq2TjHXntYXBDXWp-Q30,3774
34
- hivetrace/handlers/response_builder.py,sha256=Y5ieXdVnwsKMZjj9WHasGjw16t6K8uhcPqnRky-E4co,2747
34
+ hivetrace/handlers/response_builder.py,sha256=JDsjWYhcg_jrrGgqvSDbW-Ywo5t0evpqpSCdQ7506Hw,1103
35
35
  hivetrace/models/__init__.py,sha256=qQvtDkI0Awlch6c_kedH5Jq8aWn3XhDXbxbch5nf-RI,1020
36
- hivetrace/models/requests.py,sha256=iv7NXm5q-tVzs-54o9DfydgE8aMV-AjLa0vgzjGaKCQ,2588
37
- hivetrace/models/responses.py,sha256=F2IECVxZMAm5wfzRlsLdn9sdTT0qHEmPEnv0nJJ1G-U,3208
36
+ hivetrace/models/requests.py,sha256=cwfwlbvV_Q-pEhr9VGkV1gz0Lm-Hj00HXnlyE3EXcUk,2502
37
+ hivetrace/models/responses.py,sha256=ENkUiHsO10pkiAVpthNjSk3QUZpEx58HJB1EVt_-YBg,3803
38
38
  hivetrace/utils/__init__.py,sha256=BNYbeSuUbrZL7RradjE_OFAxam3L6eexbL2IMfjImv0,747
39
- hivetrace/utils/error_helpers.py,sha256=egVQpENputLR8exNpV1cui2LSHqbf8pI6SHRbLdxOX8,2661
39
+ hivetrace/utils/error_helpers.py,sha256=axFTKiYwdLI4Ezoq4ggx2bSlTBTyhNshc9m7XBCvlc4,3359
40
40
  hivetrace/utils/uuid_generator.py,sha256=W4i2tUSyClNKNgm4O-bk_Qkkmw3cWIuf29DjwXftx0c,344
41
- hivetrace-1.3.15.dist-info/licenses/LICENSE,sha256=8d3g3prbWPDLQ5AV0dtyWfYTj5QPl8MJ_wlr2l8pjEU,11333
42
- hivetrace-1.3.15.dist-info/METADATA,sha256=ycTCSXC6SQZZJictdo2YrfY20bmK6K4sxj9O4RuM6AI,28054
43
- hivetrace-1.3.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
- hivetrace-1.3.15.dist-info/top_level.txt,sha256=F6mZCzZ5CSftMc-M0NeOYWbwyTzjybR72P4qSBMyZZM,10
45
- hivetrace-1.3.15.dist-info/RECORD,,
41
+ hivetrace-1.4.0.dist-info/licenses/LICENSE,sha256=8d3g3prbWPDLQ5AV0dtyWfYTj5QPl8MJ_wlr2l8pjEU,11333
42
+ hivetrace-1.4.0.dist-info/METADATA,sha256=SX8JMrQoRw8BrR-_fKIn0VQnPnXCX5ummvotckAp67E,28714
43
+ hivetrace-1.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
+ hivetrace-1.4.0.dist-info/top_level.txt,sha256=F6mZCzZ5CSftMc-M0NeOYWbwyTzjybR72P4qSBMyZZM,10
45
+ hivetrace-1.4.0.dist-info/RECORD,,