glpi-python-client 0.3.2__py3-none-any.whl → 0.3.3__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.
@@ -72,7 +72,7 @@ from glpi_python_client.models import (
72
72
  TicketMarkdownOptions,
73
73
  )
74
74
 
75
- __version__ = "0.3.2"
75
+ __version__ = "0.3.3"
76
76
 
77
77
  __all__ = [
78
78
  "AsyncGlpiClient",
@@ -7,11 +7,12 @@ Notes
7
7
  -----
8
8
  The live GLPI v2 server returns each entry of the list endpoint wrapped
9
9
  in a ``{"type": "Document_Item", "item": {...}}`` envelope, even though
10
- the OpenAPI contract documents a flat array of ``Document_Item``. Real
11
- behaviour wins over the contract, so :func:`list_ticket_timeline_documents`
12
- unwraps the envelope through the shared
13
- :meth:`~glpi_python_client.clients.commons._transport.TransportMixin._resource_list`
14
- helper and tolerates both shapes.
10
+ the OpenAPI contract documents a flat array of ``Document_Item``. The
11
+ ``item`` value is a full ``Document`` record (matching :class:`GetDocument`),
12
+ not a ``Document_Item`` link record — real behaviour wins over the contract.
13
+ :func:`list_ticket_timeline_documents` unwraps the envelope through the shared
14
+ ``TransportMixin._resource_list`` helper and deserialises each inner object
15
+ as :class:`GetDocument`.
15
16
  """
16
17
 
17
18
  from __future__ import annotations
@@ -24,19 +25,17 @@ from glpi_python_client.clients.commons._constants import (
24
25
  from glpi_python_client.clients.commons._transport import TransportMixin
25
26
  from glpi_python_client.models.api_schema.assistance.timeline._document import (
26
27
  DeleteTimelineDocument,
27
- GetTimelineDocument,
28
28
  PatchTimelineDocument,
29
29
  PostTimelineDocument,
30
30
  )
31
+ from glpi_python_client.models.api_schema.management._document import GetDocument
31
32
 
32
33
 
33
34
  class TimelineDocumentMixin(TransportMixin):
34
35
  """Synchronous CRUD helpers for the ticket document timeline endpoint."""
35
36
 
36
- def list_ticket_timeline_documents(
37
- self, ticket_id: GlpiId
38
- ) -> list[GetTimelineDocument]:
39
- """List all timeline documents linked to one ticket.
37
+ def list_ticket_timeline_documents(self, ticket_id: GlpiId) -> list[GetDocument]:
38
+ """List all documents linked to one ticket timeline.
40
39
 
41
40
  Parameters
42
41
  ----------
@@ -45,14 +44,16 @@ class TimelineDocumentMixin(TransportMixin):
45
44
 
46
45
  Returns
47
46
  -------
48
- list[GetTimelineDocument]
49
- Document links returned by the GLPI server, with the timeline
50
- envelope unwrapped where present.
47
+ list[GetDocument]
48
+ Document records returned by the GLPI server. The live API
49
+ wraps each entry in a ``{"type": "Document_Item", "item": {...}}``
50
+ envelope whose ``item`` value is a full ``Document`` record; the
51
+ envelope is unwrapped automatically.
51
52
  """
52
53
 
53
54
  return self._resource_list(
54
55
  f"{TICKET_ENDPOINT}/{ticket_id}/{TIMELINE_DOCUMENT_SUFFIX}",
55
- GetTimelineDocument,
56
+ GetDocument,
56
57
  failure_message=(
57
58
  f"Failed to list timeline documents for ticket {ticket_id}"
58
59
  ),
@@ -61,20 +62,20 @@ class TimelineDocumentMixin(TransportMixin):
61
62
 
62
63
  def get_ticket_timeline_document(
63
64
  self, ticket_id: GlpiId, document_link_id: GlpiId
64
- ) -> GetTimelineDocument:
65
- """Fetch one timeline document link by identifier.
65
+ ) -> GetDocument:
66
+ """Fetch one document linked to the ticket timeline by its document ID.
66
67
 
67
68
  Parameters
68
69
  ----------
69
70
  ticket_id : GlpiId
70
71
  Numeric identifier of the parent ticket.
71
72
  document_link_id : GlpiId
72
- Numeric identifier of the timeline document link to retrieve.
73
+ Numeric identifier of the linked document to retrieve.
73
74
 
74
75
  Returns
75
76
  -------
76
- GetTimelineDocument
77
- Validated document-link payload.
77
+ GetDocument
78
+ Validated document payload.
78
79
 
79
80
  Raises
80
81
  ------
@@ -85,7 +86,7 @@ class TimelineDocumentMixin(TransportMixin):
85
86
  return self._resource_get(
86
87
  f"{TICKET_ENDPOINT}/{ticket_id}/"
87
88
  f"{TIMELINE_DOCUMENT_SUFFIX}/{document_link_id}",
88
- GetTimelineDocument,
89
+ GetDocument,
89
90
  failure_message=(
90
91
  f"Failed to get timeline document {document_link_id} on "
91
92
  f"ticket {ticket_id}"
@@ -95,10 +95,12 @@ class StatisticsMixin(TransportMixin):
95
95
  Parameters
96
96
  ----------
97
97
  start_date : str | None, optional
98
- ISO ``YYYY-MM-DD`` start of the window. Defaults to
99
- ``end_date - default_days + 1`` when omitted.
98
+ ISO ``YYYY-MM-DD`` start of the window (inclusive from
99
+ 00:00:00). Defaults to ``end_date - default_days + 1``
100
+ when omitted.
100
101
  end_date : str | None, optional
101
- ISO ``YYYY-MM-DD`` end of the window. Defaults to today.
102
+ ISO ``YYYY-MM-DD`` end of the window (inclusive through
103
+ 23:59:59). Defaults to today.
102
104
  default_days : int, optional
103
105
  Span in days used when ``start_date`` is omitted (defaults
104
106
  to 30 and must be a positive integer).
@@ -147,9 +149,10 @@ class StatisticsMixin(TransportMixin):
147
149
  entity_filter = rsql_any_filter(
148
150
  *(f"entities_id=={e.id}" for e in entities if e.id is not None)
149
151
  )
150
-
152
+ date_filter = f"date_creation=ge={start.isoformat()};"
153
+ date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
151
154
  query = rsql_all_filter(
152
- f"date_creation=ge={start.isoformat()};date_creation=le={end.isoformat()}",
155
+ date_filter,
153
156
  entity_filter,
154
157
  extra_filter,
155
158
  )
@@ -226,10 +229,12 @@ class StatisticsMixin(TransportMixin):
226
229
  Parameters
227
230
  ----------
228
231
  start_date : str | None, optional
229
- ISO ``YYYY-MM-DD`` start of the window. Defaults to
230
- ``end_date - default_days + 1`` when omitted.
232
+ ISO ``YYYY-MM-DD`` start of the window (inclusive from
233
+ 00:00:00). Defaults to ``end_date - default_days + 1``
234
+ when omitted.
231
235
  end_date : str | None, optional
232
- ISO ``YYYY-MM-DD`` end of the window. Defaults to today.
236
+ ISO ``YYYY-MM-DD`` end of the window (inclusive through
237
+ 23:59:59). Defaults to today.
233
238
  default_days : int, optional
234
239
  Span in days used when ``start_date`` is omitted (defaults
235
240
  to 30 and must be a positive integer).
@@ -269,9 +274,8 @@ class StatisticsMixin(TransportMixin):
269
274
  end_date=end_date,
270
275
  default_days=default_days,
271
276
  )
272
- date_filter = (
273
- f"date_creation=ge={start.isoformat()};date_creation=le={end.isoformat()}"
274
- )
277
+ date_filter = f"date_creation=ge={start.isoformat()};"
278
+ date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
275
279
 
276
280
  entity_filter: str | None = None
277
281
  if entity_id is not None:
@@ -399,9 +403,11 @@ class StatisticsMixin(TransportMixin):
399
403
  firstname : str | None, optional
400
404
  Filter by given name (substring match).
401
405
  start_date : str | None, optional
402
- ISO ``YYYY-MM-DD`` start of the activity window.
406
+ ISO ``YYYY-MM-DD`` start of the activity window (inclusive
407
+ from 00:00:00).
403
408
  end_date : str | None, optional
404
- ISO ``YYYY-MM-DD`` end of the activity window. Defaults to today.
409
+ ISO ``YYYY-MM-DD`` end of the activity window (inclusive
410
+ through 23:59:59). Defaults to today.
405
411
  default_days : int, optional
406
412
  Span in days used when ``start_date`` is omitted (default 30).
407
413
 
@@ -460,9 +466,8 @@ class StatisticsMixin(TransportMixin):
460
466
  if u.id is not None
461
467
  }
462
468
 
463
- date_range = (
464
- f"date_creation=ge={start.isoformat()};date_creation=le={end.isoformat()}"
465
- )
469
+ date_range = f"date_creation=ge={start.isoformat()};"
470
+ date_range += f"date_creation=le={end.isoformat()} 23:59:59"
466
471
 
467
472
  users_output: dict[str, UserActivityEntry] = {}
468
473
  for uid in resolved_user_ids:
@@ -102,9 +102,11 @@ class AsyncStatisticsMixin(StatisticsMixin):
102
102
  Parameters
103
103
  ----------
104
104
  start_date : str | None, optional
105
- ISO ``YYYY-MM-DD`` start of the window.
105
+ ISO ``YYYY-MM-DD`` start of the window (inclusive from
106
+ 00:00:00).
106
107
  end_date : str | None, optional
107
- ISO ``YYYY-MM-DD`` end of the window.
108
+ ISO ``YYYY-MM-DD`` end of the window (inclusive through
109
+ 23:59:59). Defaults to today.
108
110
  default_days : int, optional
109
111
  Span in days used when ``start_date`` is omitted (default 30).
110
112
  entity_id : int | None, optional
@@ -143,10 +145,8 @@ class AsyncStatisticsMixin(StatisticsMixin):
143
145
  end_date=end_date,
144
146
  default_days=default_days,
145
147
  )
146
- date_filter = (
147
- f"date_creation=ge={start.isoformat()};date_creation=le={end.isoformat()}"
148
- )
149
-
148
+ date_filter = f"date_creation=ge={start.isoformat()};"
149
+ date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
150
150
  entity_filter: str | None = None
151
151
  if entity_id is not None:
152
152
  entity_filter = f"entities_id=={entity_id}"
@@ -274,9 +274,11 @@ class AsyncStatisticsMixin(StatisticsMixin):
274
274
  Parameters
275
275
  ----------
276
276
  start_date : str | None, optional
277
- ISO ``YYYY-MM-DD`` start of the window.
277
+ ISO ``YYYY-MM-DD`` start of the window (inclusive from
278
+ 00:00:00).
278
279
  end_date : str | None, optional
279
- ISO ``YYYY-MM-DD`` end of the window. Defaults to today.
280
+ ISO ``YYYY-MM-DD`` end of the window (inclusive through
281
+ 23:59:59). Defaults to today.
280
282
  default_days : int, optional
281
283
  Span in days used when ``start_date`` is omitted (default 30).
282
284
  entity_id : int | None, optional
@@ -328,8 +330,10 @@ class AsyncStatisticsMixin(StatisticsMixin):
328
330
  *(f"entities_id=={e.id}" for e in entities if e.id is not None)
329
331
  )
330
332
 
333
+ date_filter = f"date_creation=ge={start.isoformat()};"
334
+ date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
331
335
  query = rsql_all_filter(
332
- f"date_creation=ge={start.isoformat()};date_creation=le={end.isoformat()}",
336
+ date_filter,
333
337
  entity_filter,
334
338
  extra_filter,
335
339
  )
@@ -369,9 +373,11 @@ class AsyncStatisticsMixin(StatisticsMixin):
369
373
  firstname : str | None, optional
370
374
  Filter by given name (substring match).
371
375
  start_date : str | None, optional
372
- ISO ``YYYY-MM-DD`` start of the activity window.
376
+ ISO ``YYYY-MM-DD`` start of the activity window (inclusive
377
+ from 00:00:00).
373
378
  end_date : str | None, optional
374
- ISO ``YYYY-MM-DD`` end of the activity window. Defaults to today.
379
+ ISO ``YYYY-MM-DD`` end of the activity window (inclusive
380
+ through 23:59:59). Defaults to today.
375
381
  default_days : int, optional
376
382
  Span in days used when ``start_date`` is omitted (default 30).
377
383
 
@@ -438,9 +444,8 @@ class AsyncStatisticsMixin(StatisticsMixin):
438
444
  if u.id is not None
439
445
  }
440
446
 
441
- date_range = (
442
- f"date_creation=ge={start.isoformat()};date_creation=le={end.isoformat()}"
443
- )
447
+ date_range = f"date_creation=ge={start.isoformat()};"
448
+ date_range += f"date_creation=le={end.isoformat()} 23:59:59"
444
449
 
445
450
  users_output: dict[str, UserActivityEntry] = {}
446
451
  for uid in resolved_user_ids:
@@ -130,7 +130,7 @@ def test_get_ticket_statistics_default_window_uses_today(
130
130
  end = date.today()
131
131
  start = end - timedelta(days=6)
132
132
  assert f"date_creation=ge={start.isoformat()}" in captured["filter"]
133
- assert f"date_creation=le={end.isoformat()}" in captured["filter"]
133
+ assert f"date_creation=le={end.isoformat()} 23:59:59" in captured["filter"]
134
134
 
135
135
 
136
136
  def test_get_ticket_statistics_rejects_invalid_window(client: GlpiClient) -> None:
@@ -306,7 +306,7 @@ def test_get_ticket_statistics_default_days_window(client: GlpiClient) -> None:
306
306
  end = date.today()
307
307
  start = end - timedelta(days=13)
308
308
  assert f"date_creation=ge={start.isoformat()}" in captured["filter"]
309
- assert f"date_creation=le={end.isoformat()}" in captured["filter"]
309
+ assert f"date_creation=le={end.isoformat()} 23:59:59" in captured["filter"]
310
310
 
311
311
 
312
312
  # ---------------------------------------------------------------------------
@@ -570,7 +570,7 @@ def test_list_get_update_unlink_timeline_documents(client: GlpiClient) -> None:
570
570
 
571
571
  rec = _Recorder(
572
572
  get_payload=[
573
- {"type": "Document_Item", "item": {"id": 1, "documents_id": 99}},
573
+ {"type": "Document_Item", "item": {"id": 1, "filename": "report.txt"}},
574
574
  ]
575
575
  )
576
576
  rec.install(client)
@@ -578,7 +578,7 @@ def test_list_get_update_unlink_timeline_documents(client: GlpiClient) -> None:
578
578
  assert items[0].id == 1
579
579
  assert rec.calls[0]["endpoint"] == "Assistance/Ticket/7/Timeline/Document"
580
580
 
581
- rec._get_payload = {"id": 1, "documents_id": 99} # type: ignore[attr-defined]
581
+ rec._get_payload = {"id": 1, "filename": "report.txt"} # type: ignore[attr-defined]
582
582
  doc = client.get_ticket_timeline_document(7, 1)
583
583
  assert doc.id == 1
584
584
 
@@ -18,9 +18,6 @@ from pydantic import Field
18
18
  from glpi_python_client.models._base import GlpiModel
19
19
  from glpi_python_client.models.api_schema._common import IdNameRef
20
20
  from glpi_python_client.models.api_schema.assistance._ticket import GetTicket
21
- from glpi_python_client.models.api_schema.assistance.timeline._document import (
22
- GetTimelineDocument,
23
- )
24
21
  from glpi_python_client.models.api_schema.assistance.timeline._followup import (
25
22
  GetFollowup,
26
23
  )
@@ -30,6 +27,7 @@ from glpi_python_client.models.api_schema.assistance.timeline._solution import (
30
27
  from glpi_python_client.models.api_schema.assistance.timeline._task import (
31
28
  GetTicketTask,
32
29
  )
30
+ from glpi_python_client.models.api_schema.management._document import GetDocument
33
31
 
34
32
  _MAX_DATETIME = datetime.max
35
33
 
@@ -184,15 +182,15 @@ class GlpiTicketContext(GlpiModel):
184
182
  Linked followup records.
185
183
  solutions : list[GetSolution], optional
186
184
  Linked solution records.
187
- documents : list[GetTimelineDocument], optional
188
- Linked timeline document records.
185
+ documents : list[GetDocument], optional
186
+ Linked document records.
189
187
  """
190
188
 
191
189
  ticket: GetTicket
192
190
  tasks: list[GetTicketTask] = Field(default_factory=list)
193
191
  followups: list[GetFollowup] = Field(default_factory=list)
194
192
  solutions: list[GetSolution] = Field(default_factory=list)
195
- documents: list[GetTimelineDocument] = Field(default_factory=list)
193
+ documents: list[GetDocument] = Field(default_factory=list)
196
194
 
197
195
  def to_markdown(
198
196
  self,
@@ -331,9 +329,14 @@ class GlpiTicketContext(GlpiModel):
331
329
  lines.append("")
332
330
  lines.append("## Documents")
333
331
  for document in self.documents:
334
- identifier = document.documents_id or document.id
335
- label = document.filepath or (
336
- f"document #{identifier}" if identifier is not None else "document"
332
+ label = (
333
+ document.filename
334
+ or document.name
335
+ or (
336
+ f"document #{document.id}"
337
+ if document.id is not None
338
+ else "document"
339
+ )
337
340
  )
338
341
  lines.append(f"- {label}")
339
342
 
@@ -38,11 +38,11 @@ def test_ticket_context_accepts_timeline_records() -> None:
38
38
  "tasks": [{"id": 11, "content": "<p>do</p>"}],
39
39
  "followups": [{"id": 12, "content": "<p>note</p>"}],
40
40
  "solutions": [{"id": 13, "content": "<p>fix</p>"}],
41
- "documents": [{"id": 14, "documents_id": 99}],
41
+ "documents": [{"id": 14, "filename": "report.pdf"}],
42
42
  }
43
43
  context = GlpiTicketContext.model_validate(payload)
44
44
  assert context.tasks[0].id == 11
45
- assert context.documents[0].documents_id == 99
45
+ assert context.documents[0].filename == "report.pdf"
46
46
 
47
47
 
48
48
  def test_to_markdown_renders_header_and_status() -> None:
@@ -151,8 +151,8 @@ def test_to_markdown_renders_solution_and_documents() -> None:
151
151
  "ticket": {"id": 7, "name": "Reset"},
152
152
  "solutions": [{"id": 4, "content": "All fixed"}],
153
153
  "documents": [
154
- {"id": 11, "documents_id": 99, "filepath": "logs/run.txt"},
155
- {"id": 12, "documents_id": 100},
154
+ {"id": 11, "filename": "run.txt"},
155
+ {"id": 12},
156
156
  ],
157
157
  }
158
158
  )
@@ -160,8 +160,8 @@ def test_to_markdown_renders_solution_and_documents() -> None:
160
160
  assert "### Solution #4" in rendered
161
161
  assert "All fixed" in rendered
162
162
  assert "## Documents" in rendered
163
- assert "- logs/run.txt" in rendered
164
- assert "- document #100" in rendered
163
+ assert "- run.txt" in rendered
164
+ assert "- document #12" in rendered
165
165
 
166
166
 
167
167
  def test_to_markdown_handles_empty_timeline() -> None:
@@ -232,7 +232,7 @@ _FULL_PAYLOAD = {
232
232
  "followups": [{"id": 10, "content": "followup body"}],
233
233
  "tasks": [{"id": 20, "content": "task body", "duration": 600}],
234
234
  "solutions": [{"id": 30, "content": "solution body"}],
235
- "documents": [{"id": 40, "documents_id": 99, "filepath": "file.txt"}],
235
+ "documents": [{"id": 40, "filename": "file.txt"}],
236
236
  }
237
237
 
238
238
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: glpi-python-client
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: A typed Python client for GLPI ITSM APIs.
5
5
  Project-URL: Homepage, https://github.com/baraline/glpi_python_client
6
6
  Project-URL: Documentation, https://glpi-python-client.readthedocs.io/en/latest/
@@ -1,4 +1,4 @@
1
- glpi_python_client/__init__.py,sha256=iiu0xVhHuSXNe3KRUOkwH1kOXWjiTq0wXS1A55YPYgQ,2924
1
+ glpi_python_client/__init__.py,sha256=L2Js7OyaIUdZygG-B1h_T3w-ePdI3iMs6HqCJxuXZ1E,2924
2
2
  glpi_python_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  glpi_python_client/auth/__init__.py,sha256=rvvca0KTgvI2bkTSYX-h5KxpPpHQd2n9UFYl0nHAJ_Y,457
4
4
  glpi_python_client/auth/_v1_session.py,sha256=R_SlKBrFJXCmXF0K3rmGAqkxH8cjaltItOJstcd-GVY,10263
@@ -16,7 +16,7 @@ glpi_python_client/clients/api/assistance/__init__.py,sha256=HCvaeTmmPeaU1FVIerC
16
16
  glpi_python_client/clients/api/assistance/_team.py,sha256=jWTZfRZOdfB2bpVtl7A_eYT9KEpnuNH4TpJ_-4hCmBM,3848
17
17
  glpi_python_client/clients/api/assistance/_ticket.py,sha256=_DPbTsXvhdDY5RmIMvm0Q6Bnzvkqpe_5Tu0QZMFueZQ,7455
18
18
  glpi_python_client/clients/api/assistance/timeline/__init__.py,sha256=ANN-7VCllLJjNBxfn4xvFBpobtRVby-GFZHc5_lF6tU,598
19
- glpi_python_client/clients/api/assistance/timeline/_document.py,sha256=43ilmYEoPKaEe5kiFf46GGkWmQsGBAcra1bwhl33FLQ,6934
19
+ glpi_python_client/clients/api/assistance/timeline/_document.py,sha256=JFeYHAHvGIGIxe_1Jb6HGpEVYilZg1zgdIosK9iLg94,7197
20
20
  glpi_python_client/clients/api/assistance/timeline/_followup.py,sha256=E03icdCrcLL1aW_QUWZXD1-pc97XIeJqlI8BzEo35SU,6077
21
21
  glpi_python_client/clients/api/assistance/timeline/_solution.py,sha256=FraEVi_1ms-oNc2FdA94qZYeSu-xG7u_ZZmoUBSeJmE,6012
22
22
  glpi_python_client/clients/api/assistance/timeline/_task.py,sha256=VIU0m1KLB6fFrEAwH_qCQkKv-_QN-8DYOgQyQfKEJ7A,5725
@@ -41,15 +41,15 @@ glpi_python_client/clients/commons/tests/test_payloads.py,sha256=6vGSg1fQ_-wgt9b
41
41
  glpi_python_client/clients/commons/tests/test_transport.py,sha256=gccXa-gL8vmlpgUcA4eSSoTqVAgcz1kkPTfoAik_6Fg,4807
42
42
  glpi_python_client/clients/custom/__init__.py,sha256=vKkUt_zgahHC0ZC-68fZAdez1-K2ahFZCZofI9rpfFA,1416
43
43
  glpi_python_client/clients/custom/_pagination_async.py,sha256=ivRAznT1nqsmZuN2kwonR_NXti877wztFVwjzMUfSb4,5857
44
- glpi_python_client/clients/custom/_statistics.py,sha256=cSiM_wyliEpz_3p7Xi4lt9L7TY2KnbsTJFZlmQ-BbUA,25334
45
- glpi_python_client/clients/custom/_statistics_async.py,sha256=zjWX0YN4mRtVMJpB3FLpLlN_ys1csWYkFaxpgq7I4S0,18889
44
+ glpi_python_client/clients/custom/_statistics.py,sha256=Nc-QZf-R4UHSMlW-Op4xqI6lvgQziS5qNEJ4Y7JVzow,25663
45
+ glpi_python_client/clients/custom/_statistics_async.py,sha256=4KojIL7AOoM4vDif1VgXAVLUO2rSOCSvU4kUo-2Mvm0,19237
46
46
  glpi_python_client/clients/custom/_ticket_context.py,sha256=OhHG_HHuHP97V9-SRo49QmHgnUKMtZDWxlyUC8aFtWk,2438
47
47
  glpi_python_client/clients/custom/_ticket_context_async.py,sha256=S1oKYtTLHuOz7lypgzytqItKnlwISIAhUMNYqenZxro,2685
48
- glpi_python_client/clients/custom/tests/test_statistics.py,sha256=uOCdgKvfR-Xwo9UFX5Az1LKvrMOfqtT16Ci0m4XF6qQ,19253
48
+ glpi_python_client/clients/custom/tests/test_statistics.py,sha256=Sb328gPnRGq6yJdAe6EBpdZ5WlMyUwzGeInEJ6R6GZY,19271
49
49
  glpi_python_client/clients/custom/tests/test_statistics_async.py,sha256=I5EQnC4yiMTGjtiHRs2MGXgZp94qmGz35xGcAB7dneQ,7595
50
50
  glpi_python_client/clients/custom/tests/test_ticket_context.py,sha256=JdfZ0sKCLVx30-TWa0ZwSdbxdHLGMy1UTzGR4gNjFDc,1977
51
51
  glpi_python_client/clients/tests/__init__.py,sha256=3_krQG_d1e51Agj54B-dzQtCEya3BdaSOemvczXCk4Q,53
52
- glpi_python_client/clients/tests/test_api_coverage.py,sha256=y477FIdUjqwqWEy6EwPML6roosJgEu2UYYpl8HVs9kQ,29492
52
+ glpi_python_client/clients/tests/test_api_coverage.py,sha256=bNvXr5huXsg9LgeMYHA9EqYyJzmJeerFgCLcPQJuxHc,29504
53
53
  glpi_python_client/clients/tests/test_async_branches.py,sha256=fjnCEbmBAENZyY4o2MLl6tEy_thGgymZvNJasMQk25I,23558
54
54
  glpi_python_client/clients/tests/test_async_smoke.py,sha256=9yfjkrgvm7JZZAvds6hW96vWb0L7YR6kFochosne_Fc,4948
55
55
  glpi_python_client/clients/tests/test_glpi_client.py,sha256=e8OklDWV4mJhTsqyNUh0LvgQ_zxkt3HFKXR1WyPSlrc,8227
@@ -92,13 +92,13 @@ glpi_python_client/models/api_schema/management/_document.py,sha256=RzKF-rNlz8Cs
92
92
  glpi_python_client/models/api_schema/management/tests/__init__.py,sha256=c_aRMSPAlwOgz_YlkII5mvYgr780F4Du4eSnZn5ITpM,63
93
93
  glpi_python_client/models/api_schema/management/tests/test_management_schemas.py,sha256=wMM8287WBhDUezKezCgINMyxqwjtYxpYRTKkRpmRNTI,1473
94
94
  glpi_python_client/models/custom_schema/__init__.py,sha256=Usp592x9OWws30vU1rEXbkkRBhcgytM5nxRPTB1gqhY,500
95
- glpi_python_client/models/custom_schema/_ticket_context.py,sha256=IqPPQ5G8PtB1djicIUH3a1kyFmttx7WiQk2y4RnQitU,13553
95
+ glpi_python_client/models/custom_schema/_ticket_context.py,sha256=bf0nUUcIwGjTPHNeecWX8RPepeK1UW1YghEBWU1OcYM,13591
96
96
  glpi_python_client/models/custom_schema/tests/__init__.py,sha256=62-bctnIbC39LbL18mCX10ItpxeqFvpORXslREcqjzs,55
97
- glpi_python_client/models/custom_schema/tests/test_ticket_context.py,sha256=rdQJRRuTWM8XNGm0YaZx_ViWGd8d0tJ3Td2pl8cct_0,14023
97
+ glpi_python_client/models/custom_schema/tests/test_ticket_context.py,sha256=MbJIRFp9PZ4rNZ-VwUy1CoIn6hmTcybKNalpu5oIppY,13963
98
98
  glpi_python_client/testing/__init__.py,sha256=ilUPAUlbMa2NuXiRGZjC97argNKMnJ-heK_kf7fotkE,512
99
99
  glpi_python_client/testing/fixtures.py,sha256=EYj0cKjlM6eCgnNHLHrsZhcwFAfwifVyZihB6Pv2u4s,764
100
100
  glpi_python_client/testing/utils.py,sha256=GJxsFNTB64JDmaPS6ox2t36vAbzOGVBGuEHSMjs4fsI,3574
101
- glpi_python_client-0.3.2.dist-info/METADATA,sha256=Bs1QmcCEV1B34i4kNGuL_JMz76pOUmbLAdWJQJ6ZcQw,7641
102
- glpi_python_client-0.3.2.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
103
- glpi_python_client-0.3.2.dist-info/licenses/LICENSE,sha256=nL8re-TIKkxCoL7OkSBja6EB4NsQR1HoOJgxv_MEhtc,1088
104
- glpi_python_client-0.3.2.dist-info/RECORD,,
101
+ glpi_python_client-0.3.3.dist-info/METADATA,sha256=Zqt2bHNRaEG8feqD8wm_yqhT_4UEka1ouP2RHfdd6ts,7641
102
+ glpi_python_client-0.3.3.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
103
+ glpi_python_client-0.3.3.dist-info/licenses/LICENSE,sha256=nL8re-TIKkxCoL7OkSBja6EB4NsQR1HoOJgxv_MEhtc,1088
104
+ glpi_python_client-0.3.3.dist-info/RECORD,,