xautomata-hive 3.20.0__tar.gz → 3.20.1__tar.gz

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.
Files changed (82) hide show
  1. {xautomata_hive-3.20.0/xautomata_hive.egg-info → xautomata_hive-3.20.1}/PKG-INFO +2 -2
  2. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/api.py +2 -1
  3. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/calendars.py +86 -78
  4. xautomata_hive-3.20.1/hive/cookbook/files.py +87 -0
  5. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/objects.py +63 -6
  6. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/probes.py +28 -0
  7. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/sites.py +57 -0
  8. xautomata_hive-3.20.1/hive/version.py +1 -0
  9. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/setup.py +2 -2
  10. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1/xautomata_hive.egg-info}/PKG-INFO +2 -2
  11. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/xautomata_hive.egg-info/SOURCES.txt +1 -0
  12. xautomata_hive-3.20.0/hive/version.py +0 -1
  13. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/LICENSE +0 -0
  14. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/README.md +0 -0
  15. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/__init__.py +0 -0
  16. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/__init__.py +0 -0
  17. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/acl_docs.py +0 -0
  18. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/acl_overrides.py +0 -0
  19. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/analytics.py +0 -0
  20. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/anomalies.py +0 -0
  21. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/automata_ingest.py +0 -0
  22. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/contacts.py +0 -0
  23. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/cost_tagging.py +0 -0
  24. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/cost_tags.py +0 -0
  25. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/cost_tree_nodes.py +0 -0
  26. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/cost_tree_resources.py +0 -0
  27. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/cost_views.py +0 -0
  28. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/customers.py +0 -0
  29. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/dashboards.py +0 -0
  30. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/dispatchers.py +0 -0
  31. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/downtimes.py +0 -0
  32. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/external_tickets.py +0 -0
  33. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/features.py +0 -0
  34. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/firmware_updates.py +0 -0
  35. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/google.py +0 -0
  36. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/groups.py +0 -0
  37. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/jobs.py +0 -0
  38. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/last_status.py +0 -0
  39. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/last_status_v2.py +0 -0
  40. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/login.py +0 -0
  41. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/messages.py +0 -0
  42. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/metric_ingest.py +0 -0
  43. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/metric_types.py +0 -0
  44. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/metrics.py +0 -0
  45. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/microsoft.py +0 -0
  46. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/notification_provider_types.py +0 -0
  47. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/notification_providers.py +0 -0
  48. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/opening_reasons.py +0 -0
  49. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/probe_types.py +0 -0
  50. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/probes_log_ingest.py +0 -0
  51. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/profile_topics.py +0 -0
  52. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/questions.py +0 -0
  53. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/reason_for_closure.py +0 -0
  54. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/retention_rules.py +0 -0
  55. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/schedules.py +0 -0
  56. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/services.py +0 -0
  57. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/terms_and_conditions.py +0 -0
  58. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/tree_hierarchy.py +0 -0
  59. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/tree_hierarchy_v2.py +0 -0
  60. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_automata_state.py +0 -0
  61. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_cost_azure_raw.py +0 -0
  62. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_cost_management.py +0 -0
  63. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_cost_management_v2.py +0 -0
  64. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_metric_status.py +0 -0
  65. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_metric_value.py +0 -0
  66. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_ntop_flows.py +0 -0
  67. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_service_status.py +0 -0
  68. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/ts_service_value.py +0 -0
  69. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/users.py +0 -0
  70. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/users_notifications.py +0 -0
  71. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/virtual_domains.py +0 -0
  72. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/webhooks.py +0 -0
  73. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/widget_groups.py +0 -0
  74. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/cookbook/widgets.py +0 -0
  75. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/decorators.py +0 -0
  76. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/exceptions.py +0 -0
  77. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/infrastrucure_keys.py +0 -0
  78. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/hive/tools.py +0 -0
  79. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/setup.cfg +0 -0
  80. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/xautomata_hive.egg-info/dependency_links.txt +0 -0
  81. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/xautomata_hive.egg-info/requires.txt +1 -1
  82. {xautomata_hive-3.20.0 → xautomata_hive-3.20.1}/xautomata_hive.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xautomata-hive
3
- Version: 3.20.0
3
+ Version: 3.20.1
4
4
  Home-page: https://github.com/sherlogic/xautomata-hive.git
5
5
  Author: Enrico Ferro - Andrea Jacassi
6
6
  Author-email:
@@ -8,9 +8,9 @@ License: MIT
8
8
  Requires-Python: >=3.8.0
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
+ Requires-Dist: requests==2.31.0
11
12
  Requires-Dist: tqdm==4.64.1
12
13
  Requires-Dist: urllib3==2.0.4
13
- Requires-Dist: requests==2.31.0
14
14
 
15
15
  # Xautomata API
16
16
  Pacchetto che fornisca una interfaccia semplice per usare le API di Xautomata in python
@@ -489,6 +489,7 @@ from hive.cookbook.dispatchers import Dispatchers
489
489
  from hive.cookbook.downtimes import Downtimes
490
490
  from hive.cookbook.external_tickets import ExternalTickets
491
491
  from hive.cookbook.features import Features
492
+ from hive.cookbook.files import Files
492
493
  from hive.cookbook.firmware_updates import FirmwareUpdates
493
494
  from hive.cookbook.groups import Groups
494
495
  from hive.cookbook.automata_ingest import AutomataIngest
@@ -537,7 +538,7 @@ from hive.cookbook.widget_groups import WidgetGroups
537
538
  # hive imports stop
538
539
 
539
540
 
540
- class XautomataApi(AclDocs, AclOverrides, Analytics, Anomalies, Calendars, CostTagging, CostTags, CostViews, CostTreeNodes, CostTreeResources, Contacts, Customers, Dashboards, Dispatchers, Downtimes, ExternalTickets, Features, FirmwareUpdates, Groups, AutomataIngest, MetricIngest, Microsoft, Google, Login, Jobs, Messages, Metrics, ProbesLogIngest, MetricTypes, NotificationProviders, NotificationProviderTypes, Objects, OpeningReasons, Probes, ProbeTypes, ProfileTopics, Questions, ReasonForClosure, RetentionRules, Schedules, Services, Sites, LastStatus, LastStatusV2, TermsAndConditions, TreeHierarchy, TreeHierarchyV2, TsAutomataState, TsCostAzureRaw, TsCostManagement, TsCostManagementV2, TsMetricStatus, TsMetricValue, TsNtopFlows, TsServiceStatus, TsServiceValue, Users, UsersNotifications, VirtualDomains, Widgets, Webhooks, WidgetGroups):
541
+ class XautomataApi(AclDocs, AclOverrides, Analytics, Anomalies, Calendars, CostTagging, CostTags, CostViews, CostTreeNodes, CostTreeResources, Contacts, Customers, Dashboards, Dispatchers, Downtimes, ExternalTickets, Features, Files, FirmwareUpdates, Groups, AutomataIngest, MetricIngest, Microsoft, Google, Login, Jobs, Messages, Metrics, ProbesLogIngest, MetricTypes, NotificationProviders, NotificationProviderTypes, Objects, OpeningReasons, Probes, ProbeTypes, ProfileTopics, Questions, ReasonForClosure, RetentionRules, Schedules, Services, Sites, LastStatus, LastStatusV2, TermsAndConditions, TreeHierarchy, TreeHierarchyV2, TsAutomataState, TsCostAzureRaw, TsCostManagement, TsCostManagementV2, TsMetricStatus, TsMetricValue, TsNtopFlows, TsServiceStatus, TsServiceValue, Users, UsersNotifications, VirtualDomains, Widgets, Webhooks, WidgetGroups):
541
542
  """
542
543
  Class with each specific API, based on the ApiManager Class created for a more general interaction with Xautomata API
543
544
  """
@@ -20,6 +20,7 @@ class Calendars(ApiManager):
20
20
  null_fields (string optional): additional filter - parameter
21
21
  name (string optional): additional filter - parameter
22
22
  local_public_holidays (boolean optional): additional filter - parameter
23
+ timezone (string optional): additional filter - parameter
23
24
  mon_int1_start (string optional): additional filter - parameter
24
25
  mon_int1_end (string optional): additional filter - parameter
25
26
  mon_int2_start (string optional): additional filter - parameter
@@ -58,35 +59,35 @@ class Calendars(ApiManager):
58
59
  if kwargs is None:
59
60
  kwargs = dict()
60
61
  official_params_list = ['sort_by', 'null_fields', 'name',
61
- 'local_public_holidays', 'mon_int1_start', 'mon_int1_end',
62
- 'mon_int2_start', 'mon_int2_end', 'tue_int1_start',
63
- 'tue_int1_end', 'tue_int2_start', 'tue_int2_end',
64
- 'wed_int1_start', 'wed_int1_end', 'wed_int2_start',
65
- 'wed_int2_end', 'thu_int1_start', 'thu_int1_end',
66
- 'thu_int2_start', 'thu_int2_end', 'fri_int1_start',
67
- 'fri_int1_end', 'fri_int2_start', 'fri_int2_end',
68
- 'sat_int1_start', 'sat_int1_end', 'sat_int2_start',
69
- 'sat_int2_end', 'sun_int1_start', 'sun_int1_end',
70
- 'sun_int2_start', 'sun_int2_end', 'skip', 'limit', 'like',
71
- 'join', 'count']
62
+ 'local_public_holidays', 'timezone', 'mon_int1_start',
63
+ 'mon_int1_end', 'mon_int2_start', 'mon_int2_end',
64
+ 'tue_int1_start', 'tue_int1_end', 'tue_int2_start',
65
+ 'tue_int2_end', 'wed_int1_start', 'wed_int1_end',
66
+ 'wed_int2_start', 'wed_int2_end', 'thu_int1_start',
67
+ 'thu_int1_end', 'thu_int2_start', 'thu_int2_end',
68
+ 'fri_int1_start', 'fri_int1_end', 'fri_int2_start',
69
+ 'fri_int2_end', 'sat_int1_start', 'sat_int1_end',
70
+ 'sat_int2_start', 'sat_int2_end', 'sun_int1_start',
71
+ 'sun_int1_end', 'sun_int2_start', 'sun_int2_end', 'skip',
72
+ 'limit', 'like', 'join', 'count']
72
73
  params.get('sort_by'), params.get('null_fields'), params.get('name'
73
- ), params.get('local_public_holidays'), params.get('mon_int1_start'
74
- ), params.get('mon_int1_end'), params.get('mon_int2_start'
75
- ), params.get('mon_int2_end'), params.get('tue_int1_start'
76
- ), params.get('tue_int1_end'), params.get('tue_int2_start'
77
- ), params.get('tue_int2_end'), params.get('wed_int1_start'
78
- ), params.get('wed_int1_end'), params.get('wed_int2_start'
79
- ), params.get('wed_int2_end'), params.get('thu_int1_start'
80
- ), params.get('thu_int1_end'), params.get('thu_int2_start'
81
- ), params.get('thu_int2_end'), params.get('fri_int1_start'
82
- ), params.get('fri_int1_end'), params.get('fri_int2_start'
83
- ), params.get('fri_int2_end'), params.get('sat_int1_start'
84
- ), params.get('sat_int1_end'), params.get('sat_int2_start'
85
- ), params.get('sat_int2_end'), params.get('sun_int1_start'
86
- ), params.get('sun_int1_end'), params.get('sun_int2_start'
87
- ), params.get('sun_int2_end'), params.get('skip'), params.get(
88
- 'limit'), params.get('like'), params.get('join'), params.get(
89
- 'count')
74
+ ), params.get('local_public_holidays'), params.get('timezone'
75
+ ), params.get('mon_int1_start'), params.get('mon_int1_end'
76
+ ), params.get('mon_int2_start'), params.get('mon_int2_end'
77
+ ), params.get('tue_int1_start'), params.get('tue_int1_end'
78
+ ), params.get('tue_int2_start'), params.get('tue_int2_end'
79
+ ), params.get('wed_int1_start'), params.get('wed_int1_end'
80
+ ), params.get('wed_int2_start'), params.get('wed_int2_end'
81
+ ), params.get('thu_int1_start'), params.get('thu_int1_end'
82
+ ), params.get('thu_int2_start'), params.get('thu_int2_end'
83
+ ), params.get('fri_int1_start'), params.get('fri_int1_end'
84
+ ), params.get('fri_int2_start'), params.get('fri_int2_end'
85
+ ), params.get('sat_int1_start'), params.get('sat_int1_end'
86
+ ), params.get('sat_int2_start'), params.get('sat_int2_end'
87
+ ), params.get('sun_int1_start'), params.get('sun_int1_end'
88
+ ), params.get('sun_int2_start'), params.get('sun_int2_end'
89
+ ), params.get('skip'), params.get('limit'), params.get('like'
90
+ ), params.get('join'), params.get('count')
90
91
  if not self._silence_warning:
91
92
  warning_wrong_parameters(self.calendars.__name__, params,
92
93
  official_params_list)
@@ -104,6 +105,7 @@ class Calendars(ApiManager):
104
105
 
105
106
  Keyword Args:
106
107
  name (string required): additional filter - payload
108
+ timezone (string required): additional filter - payload
107
109
  local_public_holidays (boolean required): additional filter - payload
108
110
  mon_int1_start (string optional): additional filter - payload
109
111
  mon_int1_end (string optional): additional filter - payload
@@ -137,31 +139,33 @@ class Calendars(ApiManager):
137
139
  Returns: list"""
138
140
  if kwargs is None:
139
141
  kwargs = dict()
140
- official_payload_list = ['name', 'local_public_holidays',
141
- 'mon_int1_start', 'mon_int1_end', 'mon_int2_start',
142
- 'mon_int2_end', 'tue_int1_start', 'tue_int1_end',
143
- 'tue_int2_start', 'tue_int2_end', 'wed_int1_start',
144
- 'wed_int1_end', 'wed_int2_start', 'wed_int2_end',
145
- 'thu_int1_start', 'thu_int1_end', 'thu_int2_start',
146
- 'thu_int2_end', 'fri_int1_start', 'fri_int1_end',
147
- 'fri_int2_start', 'fri_int2_end', 'sat_int1_start',
148
- 'sat_int1_end', 'sat_int2_start', 'sat_int2_end',
149
- 'sun_int1_start', 'sun_int1_end', 'sun_int2_start', 'sun_int2_end']
150
- payload.get('name'), payload.get('local_public_holidays'), payload.get(
151
- 'mon_int1_start'), payload.get('mon_int1_end'), payload.get(
152
- 'mon_int2_start'), payload.get('mon_int2_end'), payload.get(
153
- 'tue_int1_start'), payload.get('tue_int1_end'), payload.get(
154
- 'tue_int2_start'), payload.get('tue_int2_end'), payload.get(
155
- 'wed_int1_start'), payload.get('wed_int1_end'), payload.get(
156
- 'wed_int2_start'), payload.get('wed_int2_end'), payload.get(
157
- 'thu_int1_start'), payload.get('thu_int1_end'), payload.get(
158
- 'thu_int2_start'), payload.get('thu_int2_end'), payload.get(
159
- 'fri_int1_start'), payload.get('fri_int1_end'), payload.get(
160
- 'fri_int2_start'), payload.get('fri_int2_end'), payload.get(
161
- 'sat_int1_start'), payload.get('sat_int1_end'), payload.get(
162
- 'sat_int2_start'), payload.get('sat_int2_end'), payload.get(
163
- 'sun_int1_start'), payload.get('sun_int1_end'), payload.get(
164
- 'sun_int2_start'), payload.get('sun_int2_end')
142
+ official_payload_list = ['name', 'timezone',
143
+ 'local_public_holidays', 'mon_int1_start', 'mon_int1_end',
144
+ 'mon_int2_start', 'mon_int2_end', 'tue_int1_start',
145
+ 'tue_int1_end', 'tue_int2_start', 'tue_int2_end',
146
+ 'wed_int1_start', 'wed_int1_end', 'wed_int2_start',
147
+ 'wed_int2_end', 'thu_int1_start', 'thu_int1_end',
148
+ 'thu_int2_start', 'thu_int2_end', 'fri_int1_start',
149
+ 'fri_int1_end', 'fri_int2_start', 'fri_int2_end',
150
+ 'sat_int1_start', 'sat_int1_end', 'sat_int2_start',
151
+ 'sat_int2_end', 'sun_int1_start', 'sun_int1_end',
152
+ 'sun_int2_start', 'sun_int2_end']
153
+ payload.get('name'), payload.get('timezone'), payload.get(
154
+ 'local_public_holidays'), payload.get('mon_int1_start'
155
+ ), payload.get('mon_int1_end'), payload.get('mon_int2_start'
156
+ ), payload.get('mon_int2_end'), payload.get('tue_int1_start'
157
+ ), payload.get('tue_int1_end'), payload.get('tue_int2_start'
158
+ ), payload.get('tue_int2_end'), payload.get('wed_int1_start'
159
+ ), payload.get('wed_int1_end'), payload.get('wed_int2_start'
160
+ ), payload.get('wed_int2_end'), payload.get('thu_int1_start'
161
+ ), payload.get('thu_int1_end'), payload.get('thu_int2_start'
162
+ ), payload.get('thu_int2_end'), payload.get('fri_int1_start'
163
+ ), payload.get('fri_int1_end'), payload.get('fri_int2_start'
164
+ ), payload.get('fri_int2_end'), payload.get('sat_int1_start'
165
+ ), payload.get('sat_int1_end'), payload.get('sat_int2_start'
166
+ ), payload.get('sat_int2_end'), payload.get('sun_int1_start'
167
+ ), payload.get('sun_int1_end'), payload.get('sun_int2_start'
168
+ ), payload.get('sun_int2_end')
165
169
  if not self._silence_warning:
166
170
  warning_wrong_parameters(self.calendars_create.__name__,
167
171
  payload, official_payload_list)
@@ -195,6 +199,7 @@ class Calendars(ApiManager):
195
199
 
196
200
  Keyword Args:
197
201
  name (string optional): additional filter - payload
202
+ timezone (string optional): additional filter - payload
198
203
  local_public_holidays (boolean optional): additional filter - payload
199
204
  mon_int1_start (string optional): additional filter - payload
200
205
  mon_int1_end (string optional): additional filter - payload
@@ -228,31 +233,33 @@ class Calendars(ApiManager):
228
233
  Returns: list"""
229
234
  if kwargs is None:
230
235
  kwargs = dict()
231
- official_payload_list = ['name', 'local_public_holidays',
232
- 'mon_int1_start', 'mon_int1_end', 'mon_int2_start',
233
- 'mon_int2_end', 'tue_int1_start', 'tue_int1_end',
234
- 'tue_int2_start', 'tue_int2_end', 'wed_int1_start',
235
- 'wed_int1_end', 'wed_int2_start', 'wed_int2_end',
236
- 'thu_int1_start', 'thu_int1_end', 'thu_int2_start',
237
- 'thu_int2_end', 'fri_int1_start', 'fri_int1_end',
238
- 'fri_int2_start', 'fri_int2_end', 'sat_int1_start',
239
- 'sat_int1_end', 'sat_int2_start', 'sat_int2_end',
240
- 'sun_int1_start', 'sun_int1_end', 'sun_int2_start', 'sun_int2_end']
241
- payload.get('name'), payload.get('local_public_holidays'), payload.get(
242
- 'mon_int1_start'), payload.get('mon_int1_end'), payload.get(
243
- 'mon_int2_start'), payload.get('mon_int2_end'), payload.get(
244
- 'tue_int1_start'), payload.get('tue_int1_end'), payload.get(
245
- 'tue_int2_start'), payload.get('tue_int2_end'), payload.get(
246
- 'wed_int1_start'), payload.get('wed_int1_end'), payload.get(
247
- 'wed_int2_start'), payload.get('wed_int2_end'), payload.get(
248
- 'thu_int1_start'), payload.get('thu_int1_end'), payload.get(
249
- 'thu_int2_start'), payload.get('thu_int2_end'), payload.get(
250
- 'fri_int1_start'), payload.get('fri_int1_end'), payload.get(
251
- 'fri_int2_start'), payload.get('fri_int2_end'), payload.get(
252
- 'sat_int1_start'), payload.get('sat_int1_end'), payload.get(
253
- 'sat_int2_start'), payload.get('sat_int2_end'), payload.get(
254
- 'sun_int1_start'), payload.get('sun_int1_end'), payload.get(
255
- 'sun_int2_start'), payload.get('sun_int2_end')
236
+ official_payload_list = ['name', 'timezone',
237
+ 'local_public_holidays', 'mon_int1_start', 'mon_int1_end',
238
+ 'mon_int2_start', 'mon_int2_end', 'tue_int1_start',
239
+ 'tue_int1_end', 'tue_int2_start', 'tue_int2_end',
240
+ 'wed_int1_start', 'wed_int1_end', 'wed_int2_start',
241
+ 'wed_int2_end', 'thu_int1_start', 'thu_int1_end',
242
+ 'thu_int2_start', 'thu_int2_end', 'fri_int1_start',
243
+ 'fri_int1_end', 'fri_int2_start', 'fri_int2_end',
244
+ 'sat_int1_start', 'sat_int1_end', 'sat_int2_start',
245
+ 'sat_int2_end', 'sun_int1_start', 'sun_int1_end',
246
+ 'sun_int2_start', 'sun_int2_end']
247
+ payload.get('name'), payload.get('timezone'), payload.get(
248
+ 'local_public_holidays'), payload.get('mon_int1_start'
249
+ ), payload.get('mon_int1_end'), payload.get('mon_int2_start'
250
+ ), payload.get('mon_int2_end'), payload.get('tue_int1_start'
251
+ ), payload.get('tue_int1_end'), payload.get('tue_int2_start'
252
+ ), payload.get('tue_int2_end'), payload.get('wed_int1_start'
253
+ ), payload.get('wed_int1_end'), payload.get('wed_int2_start'
254
+ ), payload.get('wed_int2_end'), payload.get('thu_int1_start'
255
+ ), payload.get('thu_int1_end'), payload.get('thu_int2_start'
256
+ ), payload.get('thu_int2_end'), payload.get('fri_int1_start'
257
+ ), payload.get('fri_int1_end'), payload.get('fri_int2_start'
258
+ ), payload.get('fri_int2_end'), payload.get('sat_int1_start'
259
+ ), payload.get('sat_int1_end'), payload.get('sat_int2_start'
260
+ ), payload.get('sat_int2_end'), payload.get('sun_int1_start'
261
+ ), payload.get('sun_int1_end'), payload.get('sun_int2_start'
262
+ ), payload.get('sun_int2_end')
256
263
  if not self._silence_warning:
257
264
  warning_wrong_parameters(self.calendars_put.__name__, payload,
258
265
  official_payload_list)
@@ -328,6 +335,7 @@ class Calendars(ApiManager):
328
335
  [
329
336
  {
330
337
  "name": "string", required
338
+ "timezone": "string", required
331
339
  "local_public_holidays": "boolean", required
332
340
  "mon_int1_start": "string", optional
333
341
  "mon_int1_end": "string", optional
@@ -0,0 +1,87 @@
1
+ from hive.api import ApiManager, handling_single_page_methods, warning_wrong_parameters
2
+
3
+
4
+ class Files(ApiManager):
5
+ """Class that handles all the XAutomata files APIs"""
6
+
7
+ def files(self, warm_start: bool = False, single_page: bool = False,
8
+ page_size: int = 5000, kwargs: dict = None, **params) -> list:
9
+ """List User Files
10
+
11
+ Args:
12
+ warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
13
+ single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
14
+ page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 5000.
15
+ kwargs (dict, optional): additional parameters for execute. Default to None.
16
+ **params: additional parameters for the API.
17
+
18
+ Keyword Args:
19
+ name (string optional): additional filter - parameter
20
+ username (string optional): additional filter - parameter
21
+ uuid_service (string optional): additional filter - parameter
22
+ type (string optional): additional filter - parameter
23
+ start_ts (string optional): additional filter - parameter
24
+ end_ts (string optional): additional filter - parameter
25
+ skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
26
+ limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
27
+ like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
28
+ join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
29
+ count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
30
+
31
+ Returns: list"""
32
+ if kwargs is None:
33
+ kwargs = dict()
34
+ official_params_list = ['name', 'username', 'uuid_service', 'type',
35
+ 'start_ts', 'end_ts', 'skip', 'limit', 'like', 'join', 'count']
36
+ params.get('name'), params.get('username'), params.get('uuid_service'
37
+ ), params.get('type'), params.get('start_ts'), params.get('end_ts'
38
+ ), params.get('skip'), params.get('limit'), params.get('like'
39
+ ), params.get('join'), params.get('count')
40
+ if not self._silence_warning:
41
+ warning_wrong_parameters(self.files.__name__, params,
42
+ official_params_list)
43
+ response = self.execute('GET', path=f'/files/', single_page=
44
+ single_page, page_size=page_size, warm_start=warm_start, params
45
+ =params, **kwargs)
46
+ return response
47
+
48
+ def files_create(self, params: dict = False, kwargs: dict = None, **payload
49
+ ) -> list:
50
+ """Post User File
51
+
52
+ Args:
53
+ params (dict, optional): additional parameters for the API.
54
+ kwargs (dict, optional): additional parameters for execute. Default to None.
55
+ **payload: additional parameters for the API.
56
+
57
+ Keyword Args:
58
+ uuid_service (string optional): additional filter - parameter
59
+ file (string required): additional filter - payload
60
+
61
+ Returns: list"""
62
+ if kwargs is None:
63
+ kwargs = dict()
64
+ official_payload_list = ['file']
65
+ payload.get('file')
66
+ if not self._silence_warning:
67
+ warning_wrong_parameters(self.files_create.__name__, payload,
68
+ official_payload_list)
69
+ response = self.execute('POST', path=f'/files/', params=params,
70
+ payload=payload, **kwargs)
71
+ return response
72
+
73
+ def files_download(self, uuid: str, warm_start: bool = False,
74
+ kwargs: dict = None) -> list:
75
+ """Download User File
76
+
77
+ Args:
78
+ uuid (str, required): uuid
79
+ warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
80
+ kwargs (dict, optional): additional parameters for execute. Default to None.
81
+
82
+ Returns: list"""
83
+ if kwargs is None:
84
+ kwargs = dict()
85
+ response = self.execute('GET', path=f'/files/{uuid}/download',
86
+ warm_start=warm_start, **kwargs)
87
+ return response
@@ -83,6 +83,52 @@ class Objects(ApiManager):
83
83
  **kwargs)
84
84
  return response
85
85
 
86
+ def objects_v2(self, warm_start: bool = False,
87
+ single_page: bool = False, page_size: int = 5000,
88
+ kwargs: dict = None, **params) -> list:
89
+ """Read Objects V2
90
+
91
+ Args:
92
+ warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
93
+ single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
94
+ page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 5000.
95
+ kwargs (dict, optional): additional parameters for execute. Default to None.
96
+ **params: additional parameters for the API.
97
+
98
+ Keyword Args:
99
+ sort_by (string optional): Stringa separata da virgole di campi su cui ordinare. Si indica uno o piu campi della risposta e si puo chiedere di ottenere i valori di quei campi in ordine ascendente o discendente. Esempio "Customer:Desc". Default to "". - parameter
100
+ null_fields (string optional): additional filter - parameter
101
+ name (string optional): additional filter - parameter
102
+ description (string optional): additional filter - parameter
103
+ feedback_for_operator (string optional): additional filter - parameter
104
+ profile (string optional): additional filter - parameter
105
+ status (string optional): additional filter - parameter
106
+ extract_severity (boolean optional): Se True nella risposta e' anche presente la severita, Default to False. - parameter
107
+ skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
108
+ limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
109
+ like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
110
+ join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
111
+ count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
112
+
113
+ Returns: list"""
114
+ if kwargs is None:
115
+ kwargs = dict()
116
+ official_params_list = ['sort_by', 'null_fields', 'name',
117
+ 'description', 'feedback_for_operator', 'profile', 'status',
118
+ 'extract_severity', 'skip', 'limit', 'like', 'join', 'count']
119
+ params.get('sort_by'), params.get('null_fields'), params.get('name'
120
+ ), params.get('description'), params.get('feedback_for_operator'
121
+ ), params.get('profile'), params.get('status'), params.get(
122
+ 'extract_severity'), params.get('skip'), params.get('limit'
123
+ ), params.get('like'), params.get('join'), params.get('count')
124
+ if not self._silence_warning:
125
+ warning_wrong_parameters(self.objects_v2.__name__, params,
126
+ official_params_list)
127
+ response = self.execute('GET', path=f'/objects/v2/', single_page=
128
+ single_page, page_size=page_size, warm_start=warm_start, params
129
+ =params, **kwargs)
130
+ return response
131
+
86
132
  def object(self, uuid: str, warm_start: bool = False, kwargs: dict = None
87
133
  ) -> list:
88
134
  """Read Object
@@ -582,7 +628,7 @@ class Objects(ApiManager):
582
628
 
583
629
  def objects_create_bulk(self, payload: list, single_page: bool = False,
584
630
  page_size: int = 50, kwargs: dict = None, **params) -> list:
585
- """Bulk Create Objects
631
+ """Bulk Create Objects With Relationship
586
632
 
587
633
  Args:
588
634
  payload (list[dict], optional): List dict to create.
@@ -606,6 +652,7 @@ class Objects(ApiManager):
606
652
  "data_profile": "array object", optional
607
653
  "automata_domain": "array object", optional
608
654
  "status": "string", required
655
+ "uuid_groups": "array", optional
609
656
  }
610
657
  ]
611
658
 
@@ -714,7 +761,7 @@ class Objects(ApiManager):
714
761
  def objects_downtimes_bulk(self, payload: list,
715
762
  warm_start: bool = False, single_page: bool = False,
716
763
  page_size: int = 50, kwargs: dict = None, **params) -> list:
717
- """Bulk Read Objects Downtimes
764
+ """Bulk Read Downtimes
718
765
 
719
766
  Args:
720
767
  payload (list[dict], optional): List dict to create.
@@ -725,10 +772,16 @@ class Objects(ApiManager):
725
772
  **params: additional parameters for the API.
726
773
 
727
774
  Keyword Args:
775
+ code (string optional): additional filter - parameter
776
+ status (string optional): additional filter - parameter
728
777
  active_at_timestamp (string optional): additional filter - parameter
729
778
  active_after_timestamp (string optional): additional filter - parameter
730
779
  active_at_or_after_timestamp (string optional): additional filter - parameter
780
+ skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
781
+ limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
782
+ like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
731
783
  join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
784
+ count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
732
785
 
733
786
  Examples:
734
787
  payload =
@@ -739,10 +792,14 @@ class Objects(ApiManager):
739
792
  Returns: list"""
740
793
  if kwargs is None:
741
794
  kwargs = dict()
742
- official_params_list = ['active_at_timestamp',
743
- 'active_after_timestamp', 'active_at_or_after_timestamp', 'join']
744
- params.get('active_at_timestamp'), params.get('active_after_timestamp'
745
- ), params.get('active_at_or_after_timestamp'), params.get('join')
795
+ official_params_list = ['code', 'status', 'active_at_timestamp',
796
+ 'active_after_timestamp', 'active_at_or_after_timestamp',
797
+ 'skip', 'limit', 'like', 'join', 'count']
798
+ params.get('code'), params.get('status'), params.get(
799
+ 'active_at_timestamp'), params.get('active_after_timestamp'
800
+ ), params.get('active_at_or_after_timestamp'), params.get('skip'
801
+ ), params.get('limit'), params.get('like'), params.get('join'
802
+ ), params.get('count')
746
803
  if not self._silence_warning:
747
804
  warning_wrong_parameters(self.objects_downtimes_bulk.__name__,
748
805
  params, official_params_list)
@@ -168,6 +168,34 @@ class Probes(ApiManager):
168
168
  response = self.execute('DELETE', path=f'/probes/{uuid}', **kwargs)
169
169
  return response
170
170
 
171
+ def probes_v2(self, uuid: str, warm_start: bool = False,
172
+ kwargs: dict = None, **params) -> list:
173
+ """Read Probe V2
174
+
175
+ Args:
176
+ uuid (str, required): uuid
177
+ warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
178
+ kwargs (dict, optional): additional parameters for execute. Default to None.
179
+ **params: additional parameters for the API.
180
+
181
+ Keyword Args:
182
+ join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
183
+ extract_severity (boolean optional): Se True nella risposta e' anche presente la severita, Default to False. - parameter
184
+
185
+ Returns: list"""
186
+ if kwargs is None:
187
+ kwargs = dict()
188
+ kwargs, params = handling_single_page_methods(kwargs=kwargs, params
189
+ =params)
190
+ official_params_list = ['join', 'extract_severity']
191
+ params.get('join'), params.get('extract_severity')
192
+ if not self._silence_warning:
193
+ warning_wrong_parameters(self.probes_v2.__name__, params,
194
+ official_params_list)
195
+ response = self.execute('GET', path=f'/probes/{uuid}/v2/',
196
+ warm_start=warm_start, params=params, **kwargs)
197
+ return response
198
+
171
199
  def probes_agent_put(self, uuid: str, kwargs: dict = None, **payload
172
200
  ) -> list:
173
201
  """Agent Update Probe
@@ -102,6 +102,63 @@ class Sites(ApiManager):
102
102
  payload=payload, **kwargs)
103
103
  return response
104
104
 
105
+ def sites_v2(self, warm_start: bool = False, single_page: bool = False,
106
+ page_size: int = 5000, kwargs: dict = None, **params) -> list:
107
+ """Read Sites V2
108
+
109
+ Args:
110
+ warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
111
+ single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
112
+ page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 5000.
113
+ kwargs (dict, optional): additional parameters for execute. Default to None.
114
+ **params: additional parameters for the API.
115
+
116
+ Keyword Args:
117
+ sort_by (string optional): Stringa separata da virgole di campi su cui ordinare. Si indica uno o piu campi della risposta e si puo chiedere di ottenere i valori di quei campi in ordine ascendente o discendente. Esempio "Customer:Desc". Default to "". - parameter
118
+ null_fields (string optional): additional filter - parameter
119
+ uuid_customer (string optional): additional filter - parameter
120
+ type (string optional): additional filter - parameter
121
+ code (string optional): additional filter - parameter
122
+ description (string optional): additional filter - parameter
123
+ address (string optional): additional filter - parameter
124
+ zip_code (string optional): additional filter - parameter
125
+ city (string optional): additional filter - parameter
126
+ country (string optional): additional filter - parameter
127
+ notes (string optional): additional filter - parameter
128
+ state_province (string optional): additional filter - parameter
129
+ status (string optional): additional filter - parameter
130
+ filter_group_types (string optional): additional filter - parameter
131
+ extract_severity (boolean optional): Se True nella risposta e' anche presente la severita, Default to False. - parameter
132
+ skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
133
+ limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
134
+ like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
135
+ join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
136
+ count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
137
+
138
+ Returns: list"""
139
+ if kwargs is None:
140
+ kwargs = dict()
141
+ official_params_list = ['sort_by', 'null_fields', 'uuid_customer',
142
+ 'type', 'code', 'description', 'address', 'zip_code', 'city',
143
+ 'country', 'notes', 'state_province', 'status',
144
+ 'filter_group_types', 'extract_severity', 'skip', 'limit',
145
+ 'like', 'join', 'count']
146
+ params.get('sort_by'), params.get('null_fields'), params.get(
147
+ 'uuid_customer'), params.get('type'), params.get('code'
148
+ ), params.get('description'), params.get('address'), params.get(
149
+ 'zip_code'), params.get('city'), params.get('country'), params.get(
150
+ 'notes'), params.get('state_province'), params.get('status'
151
+ ), params.get('filter_group_types'), params.get('extract_severity'
152
+ ), params.get('skip'), params.get('limit'), params.get('like'
153
+ ), params.get('join'), params.get('count')
154
+ if not self._silence_warning:
155
+ warning_wrong_parameters(self.sites_v2.__name__, params,
156
+ official_params_list)
157
+ response = self.execute('GET', path=f'/sites/v2/', single_page=
158
+ single_page, page_size=page_size, warm_start=warm_start, params
159
+ =params, **kwargs)
160
+ return response
161
+
105
162
  def site(self, uuid: str, warm_start: bool = False, kwargs: dict = None,
106
163
  **params) -> list:
107
164
  """Read Site
@@ -0,0 +1 @@
1
+ version = '3.20.1'
@@ -15,9 +15,9 @@ with open("hive/version.py", "r") as f:
15
15
  version = version[0].split("'")[1]
16
16
 
17
17
  # version go
18
+ requests = 'requests==2.31.0'
18
19
  tqdm = 'tqdm==4.64.1'
19
20
  urllib3 = 'urllib3==2.0.4'
20
- requests = 'requests==2.31.0'
21
21
  # version end
22
22
 
23
23
  setup(
@@ -32,5 +32,5 @@ setup(
32
32
  author_email='',
33
33
  description='',
34
34
  url="https://github.com/sherlogic/xautomata-hive.git",
35
- install_requires=[tqdm, urllib3, requests],
35
+ install_requires=[requests, tqdm, urllib3],
36
36
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xautomata-hive
3
- Version: 3.20.0
3
+ Version: 3.20.1
4
4
  Home-page: https://github.com/sherlogic/xautomata-hive.git
5
5
  Author: Enrico Ferro - Andrea Jacassi
6
6
  Author-email:
@@ -8,9 +8,9 @@ License: MIT
8
8
  Requires-Python: >=3.8.0
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
+ Requires-Dist: requests==2.31.0
11
12
  Requires-Dist: tqdm==4.64.1
12
13
  Requires-Dist: urllib3==2.0.4
13
- Requires-Dist: requests==2.31.0
14
14
 
15
15
  # Xautomata API
16
16
  Pacchetto che fornisca una interfaccia semplice per usare le API di Xautomata in python
@@ -27,6 +27,7 @@ hive/cookbook/dispatchers.py
27
27
  hive/cookbook/downtimes.py
28
28
  hive/cookbook/external_tickets.py
29
29
  hive/cookbook/features.py
30
+ hive/cookbook/files.py
30
31
  hive/cookbook/firmware_updates.py
31
32
  hive/cookbook/google.py
32
33
  hive/cookbook/groups.py
@@ -1 +0,0 @@
1
- version = '3.20.0'
File without changes
@@ -1,3 +1,3 @@
1
+ requests==2.31.0
1
2
  tqdm==4.64.1
2
3
  urllib3==2.0.4
3
- requests==2.31.0