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.
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/PKG-INFO +8 -4
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/setup.cfg +6 -2
- vavacars_data_utils-1.4.0/vava_utils/loganalytics/__init__.py +1 -0
- vavacars_data_utils-1.4.0/vava_utils/loganalytics/loganalytics_helper.py +51 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/PKG-INFO +8 -4
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/SOURCES.txt +4 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/requires.txt +6 -1
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/README.md +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/pyproject.toml +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/test/utils/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/test/utils/test_strings.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/azure/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/azure/az_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/bigquery/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/bigquery/bigquery_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/camunda/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/camunda/camunda_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/email/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/email/email_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/salesforce/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/salesforce/salesforce_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/smartiq_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/smartiq_helper_v2.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/sql/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/sql/sql_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/turkey/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/turkey/dates.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/callables.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/comparisons.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/naming.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/singleton.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/strings.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/utils/utils.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/vavaprice/__init__.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/vavaprice/vavaprice_helper.py +0 -0
- {vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/dependency_links.txt +0 -0
- {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
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: vavacars_data_utils
|
|
3
|
-
Version: 1.
|
|
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:
|
|
26
|
-
Requires-Dist:
|
|
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
|
+
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
|
-
|
|
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
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: vavacars_data_utils
|
|
3
|
-
Version: 1.
|
|
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:
|
|
26
|
-
Requires-Dist:
|
|
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
|
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/SOURCES.txt
RENAMED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/bigquery/bigquery_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/camunda/camunda_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/salesforce/salesforce_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/smartiq_helper.py
RENAMED
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/smartiq/smartiq_helper_v2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vava_utils/vavaprice/vavaprice_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.7 → vavacars_data_utils-1.4.0}/vavacars_data_utils.egg-info/top_level.txt
RENAMED
|
File without changes
|