vavacars-data-utils 1.3.7__tar.gz → 1.4.0__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 (40) hide show
  1. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/PKG-INFO +8 -4
  2. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/setup.cfg +6 -2
  3. vavacars_data_utils-1.4.0/vava_utils/loganalytics/__init__.py +1 -0
  4. vavacars_data_utils-1.4.0/vava_utils/loganalytics/loganalytics_helper.py +51 -0
  5. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/PKG-INFO +8 -4
  6. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/SOURCES.txt +4 -0
  7. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/requires.txt +6 -1
  8. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/README.md +0 -0
  9. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/pyproject.toml +0 -0
  10. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/test/utils/__init__.py +0 -0
  11. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/test/utils/test_strings.py +0 -0
  12. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/__init__.py +0 -0
  13. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/azure/__init__.py +0 -0
  14. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/azure/az_helper.py +0 -0
  15. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/bigquery/__init__.py +0 -0
  16. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/bigquery/bigquery_helper.py +0 -0
  17. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/camunda/__init__.py +0 -0
  18. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/camunda/camunda_helper.py +0 -0
  19. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/email/__init__.py +0 -0
  20. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/email/email_helper.py +0 -0
  21. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/salesforce/__init__.py +0 -0
  22. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/salesforce/salesforce_helper.py +0 -0
  23. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/__init__.py +0 -0
  24. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/smartiq_helper.py +0 -0
  25. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/smartiq_helper_v2.py +0 -0
  26. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/sql/__init__.py +0 -0
  27. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/sql/sql_helper.py +0 -0
  28. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/turkey/__init__.py +0 -0
  29. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/turkey/dates.py +0 -0
  30. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/__init__.py +0 -0
  31. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/callables.py +0 -0
  32. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/comparisons.py +0 -0
  33. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/naming.py +0 -0
  34. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/singleton.py +0 -0
  35. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/strings.py +0 -0
  36. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/utils.py +0 -0
  37. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/vavaprice/__init__.py +0 -0
  38. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/vavaprice/vavaprice_helper.py +0 -0
  39. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/dependency_links.txt +0 -0
  40. {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: vavacars_data_utils
3
- Version: 1.3.7
3
+ Version: 1.4.0
4
4
  Summary: Package with utils
5
5
  Home-page: https://dev.azure.com/vavacars/DataScience/_git/Data.Utils
6
6
  Author: Vavacars Data Science Team
@@ -22,10 +22,14 @@ Requires-Dist: sqlalchemy<2.0; extra == "sql"
22
22
  Requires-Dist: psycopg2-binary; extra == "sql"
23
23
  Requires-Dist: pyodbc; extra == "sql"
24
24
  Requires-Dist: msal; extra == "sql"
25
- Provides-Extra: emai
26
- Requires-Dist: azure-communication-email; extra == "emai"
25
+ Provides-Extra: email
26
+ Requires-Dist: azureml-core; extra == "email"
27
+ Requires-Dist: azure-communication-email; extra == "email"
27
28
  Provides-Extra: azure
28
29
  Requires-Dist: azureml-core; extra == "azure"
30
+ Provides-Extra: loganalytics
31
+ Requires-Dist: azureml-core; extra == "loganalytics"
32
+ Requires-Dist: azure-monitor-query; extra == "loganalytics"
29
33
 
30
34
  # Vavacars
31
35
 
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = vavacars_data_utils
3
- version = 1.3.7
3
+ version = 1.4.0
4
4
  author = Vavacars Data Science Team
5
5
  author_email = acg@vava.cars
6
6
  description = Package with utils
@@ -40,10 +40,14 @@ sql =
40
40
  psycopg2-binary
41
41
  pyodbc
42
42
  msal
43
- emai =
43
+ email =
44
+ azureml-core
44
45
  azure-communication-email
45
46
  azure =
46
47
  azureml-core
48
+ loganalytics =
49
+ azureml-core
50
+ azure-monitor-query
47
51
 
48
52
  [egg_info]
49
53
  tag_build =
@@ -0,0 +1 @@
1
+ from .loganalytics_helper import LogAnalyticsHelper
@@ -0,0 +1,51 @@
1
+ import logging
2
+ import pandas as pd
3
+ from azure.identity import ClientSecretCredential
4
+ from azure.monitor.query import LogsQueryClient, LogsQueryStatus
5
+ from azure.core.exceptions import HttpResponseError
6
+ import datetime
7
+
8
+
9
+ class UnknownQueryStatusError(Exception):
10
+ """Custom exception for unknown query status"""
11
+
12
+ pass
13
+
14
+
15
+ class LogAnalyticsHelper:
16
+
17
+ def __init__(
18
+ self,
19
+ service_principal_id: str,
20
+ service_principal_password: str,
21
+ tentant_id: str,
22
+ workspace_id: str = "58ca4766-72b7-4610-8d1c-4b6a88a49a01",
23
+ ):
24
+ self.client = LogsQueryClient(
25
+ ClientSecretCredential(tentant_id, service_principal_id, service_principal_password)
26
+ )
27
+ self.workspace_id = workspace_id
28
+
29
+ def query(self, query: str, start: datetime.datetime = None, end: datetime.datetime = None, **kwargs):
30
+
31
+ timespan = None if start is None or end is None else (start, end)
32
+ response = self.client.query_workspace(workspace_id=self.workspace_id, query=query, timespan=timespan, **kwargs)
33
+
34
+ if response.status == LogsQueryStatus.SUCCESS:
35
+ data = response.tables
36
+ elif response.status == LogsQueryStatus.PARTIAL:
37
+ logging.warning(f"Partial query success. Error: {response.partial_error.message}")
38
+ data = response.partial_data
39
+ else:
40
+ logging.error(f"Unknown query status: {response.status}")
41
+ raise UnknownQueryStatusError(f"Received an unknown query status: {response.status}")
42
+
43
+ dataframes = [pd.DataFrame(t.rows, columns=t.columns) for t in data]
44
+
45
+ if len(dataframes) == 1:
46
+ return dataframes[0]
47
+ elif len(dataframes) > 1:
48
+ return dataframes
49
+ else:
50
+ logging.warning("No data found in the query result")
51
+ return None
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: vavacars_data_utils
3
- Version: 1.3.7
3
+ Version: 1.4.0
4
4
  Summary: Package with utils
5
5
  Home-page: https://dev.azure.com/vavacars/DataScience/_git/Data.Utils
6
6
  Author: Vavacars Data Science Team
@@ -22,10 +22,14 @@ Requires-Dist: sqlalchemy<2.0; extra == "sql"
22
22
  Requires-Dist: psycopg2-binary; extra == "sql"
23
23
  Requires-Dist: pyodbc; extra == "sql"
24
24
  Requires-Dist: msal; extra == "sql"
25
- Provides-Extra: emai
26
- Requires-Dist: azure-communication-email; extra == "emai"
25
+ Provides-Extra: email
26
+ Requires-Dist: azureml-core; extra == "email"
27
+ Requires-Dist: azure-communication-email; extra == "email"
27
28
  Provides-Extra: azure
28
29
  Requires-Dist: azureml-core; extra == "azure"
30
+ Provides-Extra: loganalytics
31
+ Requires-Dist: azureml-core; extra == "loganalytics"
32
+ Requires-Dist: azure-monitor-query; extra == "loganalytics"
29
33
 
30
34
  # Vavacars
31
35
 
@@ -12,6 +12,8 @@ setup.cfg
12
12
  ./vava_utils/camunda/camunda_helper.py
13
13
  ./vava_utils/email/__init__.py
14
14
  ./vava_utils/email/email_helper.py
15
+ ./vava_utils/loganalytics/__init__.py
16
+ ./vava_utils/loganalytics/loganalytics_helper.py
15
17
  ./vava_utils/salesforce/__init__.py
16
18
  ./vava_utils/salesforce/salesforce_helper.py
17
19
  ./vava_utils/smartiq/__init__.py
@@ -41,6 +43,8 @@ vava_utils/camunda/__init__.py
41
43
  vava_utils/camunda/camunda_helper.py
42
44
  vava_utils/email/__init__.py
43
45
  vava_utils/email/email_helper.py
46
+ vava_utils/loganalytics/__init__.py
47
+ vava_utils/loganalytics/loganalytics_helper.py
44
48
  vava_utils/salesforce/__init__.py
45
49
  vava_utils/salesforce/salesforce_helper.py
46
50
  vava_utils/smartiq/__init__.py
@@ -10,9 +10,14 @@ azureml-core
10
10
  google-cloud-bigquery
11
11
  google-api-core
12
12
 
13
- [emai]
13
+ [email]
14
+ azureml-core
14
15
  azure-communication-email
15
16
 
17
+ [loganalytics]
18
+ azureml-core
19
+ azure-monitor-query
20
+
16
21
  [sql]
17
22
  sqlalchemy<2.0
18
23
  psycopg2-binary