vavacars-data-utils 1.3.4__tar.gz → 1.3.6__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.4 → vavacars_data_utils-1.3.6}/PKG-INFO +13 -7
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/setup.cfg +15 -7
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/sql/sql_helper.py +22 -15
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/PKG-INFO +13 -7
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/requires.txt +14 -4
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/README.md +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/pyproject.toml +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/test/utils/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/test/utils/test_strings.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/azure/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/azure/az_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/bigquery/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/bigquery/bigquery_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/camunda/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/camunda/camunda_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/email/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/email/email_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/salesforce/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/salesforce/salesforce_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/smartiq/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/smartiq/smartiq_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/smartiq/smartiq_helper_v2.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/sql/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/turkey/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/turkey/dates.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/callables.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/comparisons.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/naming.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/singleton.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/strings.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/utils/utils.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/vavaprice/__init__.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/vavaprice/vavaprice_helper.py +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/SOURCES.txt +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/dependency_links.txt +0 -0
- {vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vavacars_data_utils
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
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
|
|
@@ -13,13 +13,19 @@ Description-Content-Type: text/markdown
|
|
|
13
13
|
Requires-Dist: pandas
|
|
14
14
|
Requires-Dist: PyYAML>=6.0
|
|
15
15
|
Requires-Dist: requests
|
|
16
|
-
Requires-Dist: sqlalchemy<2.0
|
|
17
|
-
Requires-Dist: redis
|
|
18
|
-
Requires-Dist: msal
|
|
19
|
-
Requires-Dist: pyodbc
|
|
20
16
|
Requires-Dist: unidecode
|
|
21
|
-
|
|
22
|
-
Requires-Dist:
|
|
17
|
+
Provides-Extra: bigquery
|
|
18
|
+
Requires-Dist: google-cloud-bigquery; extra == "bigquery"
|
|
19
|
+
Requires-Dist: google-api-core; extra == "bigquery"
|
|
20
|
+
Provides-Extra: sql
|
|
21
|
+
Requires-Dist: sqlalchemy<2.0; extra == "sql"
|
|
22
|
+
Requires-Dist: psycopg2-binary; extra == "sql"
|
|
23
|
+
Requires-Dist: pyodbc; extra == "sql"
|
|
24
|
+
Requires-Dist: msal; extra == "sql"
|
|
25
|
+
Provides-Extra: emai
|
|
26
|
+
Requires-Dist: azure-communication-email; extra == "emai"
|
|
27
|
+
Provides-Extra: azure
|
|
28
|
+
Requires-Dist: azureml-core; extra == "azure"
|
|
23
29
|
|
|
24
30
|
# Vavacars
|
|
25
31
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[metadata]
|
|
2
2
|
name = vavacars_data_utils
|
|
3
|
-
version = 1.3.
|
|
3
|
+
version = 1.3.6
|
|
4
4
|
author = Vavacars Data Science Team
|
|
5
5
|
author_email = acg@vava.cars
|
|
6
6
|
description = Package with utils
|
|
@@ -22,13 +22,7 @@ install_requires =
|
|
|
22
22
|
pandas
|
|
23
23
|
PyYAML>=6.0
|
|
24
24
|
requests
|
|
25
|
-
sqlalchemy<2.0
|
|
26
|
-
redis
|
|
27
|
-
msal
|
|
28
|
-
pyodbc
|
|
29
25
|
unidecode
|
|
30
|
-
azure-communication-email
|
|
31
|
-
psycopg2-binary
|
|
32
26
|
|
|
33
27
|
[options.packages.find]
|
|
34
28
|
where = .
|
|
@@ -37,6 +31,20 @@ exclude =
|
|
|
37
31
|
README.md
|
|
38
32
|
notebooks
|
|
39
33
|
|
|
34
|
+
[options.extras_require]
|
|
35
|
+
bigquery =
|
|
36
|
+
google-cloud-bigquery
|
|
37
|
+
google-api-core
|
|
38
|
+
sql =
|
|
39
|
+
sqlalchemy<2.0
|
|
40
|
+
psycopg2-binary
|
|
41
|
+
pyodbc
|
|
42
|
+
msal
|
|
43
|
+
emai =
|
|
44
|
+
azure-communication-email
|
|
45
|
+
azure =
|
|
46
|
+
azureml-core
|
|
47
|
+
|
|
40
48
|
[egg_info]
|
|
41
49
|
tag_build =
|
|
42
50
|
tag_date = 0
|
|
@@ -26,9 +26,7 @@ def get_postgresql_helper(host, user, port, database=None, password=None, **kwar
|
|
|
26
26
|
engine_url = URL.create(
|
|
27
27
|
drivername="postgresql+psycopg2", host=host, username=user, database=database, password=password, port=port
|
|
28
28
|
)
|
|
29
|
-
engine = create_engine(
|
|
30
|
-
engine_url, pool_pre_ping=True, **kwargs
|
|
31
|
-
)
|
|
29
|
+
engine = create_engine(engine_url, pool_pre_ping=True, **kwargs)
|
|
32
30
|
|
|
33
31
|
return SQL_Helper(engine, engine_type=POSTGRESQL)
|
|
34
32
|
|
|
@@ -162,19 +160,29 @@ class SQL_Helper:
|
|
|
162
160
|
"""
|
|
163
161
|
return pd.read_sql_query(text(query), self._engine, **kwargs)
|
|
164
162
|
|
|
165
|
-
def write_df(
|
|
163
|
+
def write_df(
|
|
164
|
+
self, df: pd.DataFrame, table_name: str, chunksize: int = 1000, index: bool = False, if_exists="fail", **kwargs
|
|
165
|
+
):
|
|
166
166
|
"""
|
|
167
167
|
Store Pandas Dataframe into SQL table
|
|
168
168
|
|
|
169
169
|
Args:
|
|
170
170
|
df (pd.DataFrame): data to write
|
|
171
171
|
table_name (str): output database table name
|
|
172
|
+
if_exists (str): action to take if table already exists
|
|
173
|
+
* fail,
|
|
174
|
+
* replace
|
|
175
|
+
* append
|
|
176
|
+
* truncate: NEW, truncate table before writing, like 'replace' but keeps structure
|
|
172
177
|
**kwargs: additional keyword parameters passed to df.to_sql
|
|
173
178
|
"""
|
|
174
179
|
with self._engine.connect() as conn:
|
|
175
180
|
trans = conn.begin()
|
|
176
181
|
try:
|
|
177
|
-
|
|
182
|
+
if if_exists == "truncate":
|
|
183
|
+
conn.execute(f"TRUNCATE TABLE {table_name}")
|
|
184
|
+
if_exists = "append"
|
|
185
|
+
df.to_sql(table_name.lower(), conn, chunksize=chunksize, index=index, if_exists=if_exists, **kwargs)
|
|
178
186
|
trans.commit()
|
|
179
187
|
except Exception as ex:
|
|
180
188
|
LOGGER.warning(str(ex))
|
|
@@ -213,8 +221,8 @@ class SQL_Helper:
|
|
|
213
221
|
WHERE {not_exists_part_cols}
|
|
214
222
|
);
|
|
215
223
|
"""
|
|
216
|
-
col_names = [f
|
|
217
|
-
upsert_cols = [f
|
|
224
|
+
col_names = [f"[{x}]" for x in df.columns]
|
|
225
|
+
upsert_cols = [f"[{x}]" for x in upsert_cols]
|
|
218
226
|
|
|
219
227
|
elif self.engine_type == MYSQL:
|
|
220
228
|
tmp_table_name = f"{table_name}_tmp_{random.randrange(0, 1000)}"
|
|
@@ -237,8 +245,8 @@ class SQL_Helper:
|
|
|
237
245
|
WHERE {not_exists_part_cols}
|
|
238
246
|
);
|
|
239
247
|
"""
|
|
240
|
-
col_names = [f
|
|
241
|
-
upsert_cols = [f
|
|
248
|
+
col_names = [f"`{x}`" for x in df.columns]
|
|
249
|
+
upsert_cols = [f"`{x}`" for x in upsert_cols]
|
|
242
250
|
|
|
243
251
|
elif self.engine_type == POSTGRESQL:
|
|
244
252
|
tmp_table_name = f"{table_name}_tmp_{random.randrange(0, 1000)}"
|
|
@@ -261,8 +269,8 @@ class SQL_Helper:
|
|
|
261
269
|
WHERE {not_exists_part_cols}
|
|
262
270
|
);
|
|
263
271
|
"""
|
|
264
|
-
col_names = [f
|
|
265
|
-
upsert_cols = [f
|
|
272
|
+
col_names = [f"`{x}`" for x in df.columns]
|
|
273
|
+
upsert_cols = [f"`{x}`" for x in upsert_cols]
|
|
266
274
|
|
|
267
275
|
else:
|
|
268
276
|
raise NotImplementedError(f"Method not implemented for {self.engine_type} engine")
|
|
@@ -309,10 +317,10 @@ class SQL_Helper:
|
|
|
309
317
|
not_exists_part_cols=not_exists_part_cols,
|
|
310
318
|
)
|
|
311
319
|
conn.execute(text(insert_sql))
|
|
312
|
-
|
|
320
|
+
|
|
313
321
|
# DROP tmp table
|
|
314
322
|
conn.execute(text(f"DROP TABLE {tmp_table_name};"))
|
|
315
|
-
|
|
323
|
+
|
|
316
324
|
trans.commit()
|
|
317
325
|
except Exception as ex:
|
|
318
326
|
LOGGER.warning(str(ex))
|
|
@@ -389,6 +397,5 @@ class SQL_Helper:
|
|
|
389
397
|
|
|
390
398
|
return "UPDATE" if exists else "CREATE"
|
|
391
399
|
|
|
392
|
-
|
|
393
400
|
def execute(self, query: str) -> LegacyCursorResult:
|
|
394
|
-
return self._engine.execute(query)
|
|
401
|
+
return self._engine.execute(query)
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vavacars_data_utils
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
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
|
|
@@ -13,13 +13,19 @@ Description-Content-Type: text/markdown
|
|
|
13
13
|
Requires-Dist: pandas
|
|
14
14
|
Requires-Dist: PyYAML>=6.0
|
|
15
15
|
Requires-Dist: requests
|
|
16
|
-
Requires-Dist: sqlalchemy<2.0
|
|
17
|
-
Requires-Dist: redis
|
|
18
|
-
Requires-Dist: msal
|
|
19
|
-
Requires-Dist: pyodbc
|
|
20
16
|
Requires-Dist: unidecode
|
|
21
|
-
|
|
22
|
-
Requires-Dist:
|
|
17
|
+
Provides-Extra: bigquery
|
|
18
|
+
Requires-Dist: google-cloud-bigquery; extra == "bigquery"
|
|
19
|
+
Requires-Dist: google-api-core; extra == "bigquery"
|
|
20
|
+
Provides-Extra: sql
|
|
21
|
+
Requires-Dist: sqlalchemy<2.0; extra == "sql"
|
|
22
|
+
Requires-Dist: psycopg2-binary; extra == "sql"
|
|
23
|
+
Requires-Dist: pyodbc; extra == "sql"
|
|
24
|
+
Requires-Dist: msal; extra == "sql"
|
|
25
|
+
Provides-Extra: emai
|
|
26
|
+
Requires-Dist: azure-communication-email; extra == "emai"
|
|
27
|
+
Provides-Extra: azure
|
|
28
|
+
Requires-Dist: azureml-core; extra == "azure"
|
|
23
29
|
|
|
24
30
|
# Vavacars
|
|
25
31
|
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/requires.txt
RENAMED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
pandas
|
|
2
2
|
PyYAML>=6.0
|
|
3
3
|
requests
|
|
4
|
-
sqlalchemy<2.0
|
|
5
|
-
redis
|
|
6
|
-
msal
|
|
7
|
-
pyodbc
|
|
8
4
|
unidecode
|
|
5
|
+
|
|
6
|
+
[azure]
|
|
7
|
+
azureml-core
|
|
8
|
+
|
|
9
|
+
[bigquery]
|
|
10
|
+
google-cloud-bigquery
|
|
11
|
+
google-api-core
|
|
12
|
+
|
|
13
|
+
[emai]
|
|
9
14
|
azure-communication-email
|
|
15
|
+
|
|
16
|
+
[sql]
|
|
17
|
+
sqlalchemy<2.0
|
|
10
18
|
psycopg2-binary
|
|
19
|
+
pyodbc
|
|
20
|
+
msal
|
|
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.4 → vavacars_data_utils-1.3.6}/vava_utils/bigquery/bigquery_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/camunda/camunda_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/salesforce/salesforce_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/smartiq/smartiq_helper.py
RENAMED
|
File without changes
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/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
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vava_utils/vavaprice/vavaprice_helper.py
RENAMED
|
File without changes
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.3.4 → vavacars_data_utils-1.3.6}/vavacars_data_utils.egg-info/top_level.txt
RENAMED
|
File without changes
|