vavacars-data-utils 1.7.0__tar.gz → 1.7.2__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 (49) hide show
  1. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/PKG-INFO +1 -1
  2. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/setup.cfg +1 -1
  3. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/auth/checker.py +19 -20
  4. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/auth/config.py +3 -11
  5. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vavacars_data_utils.egg-info/PKG-INFO +1 -1
  6. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/README.md +0 -0
  7. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/pyproject.toml +0 -0
  8. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/test/utils/__init__.py +0 -0
  9. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/test/utils/test_strings.py +0 -0
  10. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/__init__.py +0 -0
  11. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/auth/__init__.py +0 -0
  12. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/auth/sql/create_auth_tables.sql +0 -0
  13. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/auth/sql/provision_auth_db.sql +0 -0
  14. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/azure/__init__.py +0 -0
  15. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/azure/az_helper.py +0 -0
  16. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/bigquery/__init__.py +0 -0
  17. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/bigquery/bigquery_helper.py +0 -0
  18. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/camunda/__init__.py +0 -0
  19. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/camunda/camunda_helper.py +0 -0
  20. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/email/__init__.py +0 -0
  21. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/email/email_helper.py +0 -0
  22. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/keyvault/__init__.py +0 -0
  23. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/keyvault/vault_reader.py +0 -0
  24. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/loganalytics/__init__.py +0 -0
  25. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/loganalytics/loganalytics_helper.py +0 -0
  26. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/logging/__init__.py +0 -0
  27. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/logging/logging_middleware.py +0 -0
  28. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/salesforce/__init__.py +0 -0
  29. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/salesforce/salesforce_helper.py +0 -0
  30. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/smartiq/__init__.py +0 -0
  31. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/smartiq/smartiq_helper.py +0 -0
  32. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/smartiq/smartiq_helper_v2.py +0 -0
  33. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/sql/__init__.py +0 -0
  34. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/sql/sql_helper.py +0 -0
  35. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/turkey/__init__.py +0 -0
  36. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/turkey/dates.py +0 -0
  37. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/__init__.py +0 -0
  38. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/callables.py +0 -0
  39. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/comparisons.py +0 -0
  40. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/naming.py +0 -0
  41. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/singleton.py +0 -0
  42. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/strings.py +0 -0
  43. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/utils/utils.py +0 -0
  44. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/vavaprice/__init__.py +0 -0
  45. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vava_utils/vavaprice/vavaprice_helper.py +0 -0
  46. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vavacars_data_utils.egg-info/SOURCES.txt +0 -0
  47. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vavacars_data_utils.egg-info/dependency_links.txt +0 -0
  48. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vavacars_data_utils.egg-info/requires.txt +0 -0
  49. {vavacars_data_utils-1.7.0 → vavacars_data_utils-1.7.2}/vavacars_data_utils.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vavacars_data_utils
3
- Version: 1.7.0
3
+ Version: 1.7.2
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
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = vavacars_data_utils
3
- version = 1.7.0
3
+ version = 1.7.2
4
4
  author = Vavacars Data Science Team
5
5
  author_email = acg@vava.cars
6
6
  description = Package with utils
@@ -56,26 +56,30 @@ class AuthChecker:
56
56
  port: Optional[int] = None,
57
57
  user: Optional[str] = None,
58
58
  database: Optional[str] = None,
59
+ password: Optional[str] = None,
59
60
  key_vault: Optional[str] = None,
60
61
  secret: Optional[str] = None,
61
62
  ):
62
63
  self.env = env or os.environ.get("API_DEPLOYMENT_ENV", "dev")
63
64
  cfg = dict(AUTH_DB_CONFIG.get(self.env, {}))
64
65
  # explicit kwargs override the baked-in map - meant for local/testing use only
65
- overrides = dict(host=host, port=port, user=user, database=database, key_vault=key_vault, secret=secret)
66
+ overrides = dict(host=host, port=port, user=user, database=database)
66
67
  cfg.update({k: v for k, v in overrides.items() if v is not None})
67
- missing = [k for k in ("host", "user", "database", "key_vault", "secret") if not cfg.get(k)]
68
+ missing = [k for k in ("host", "user", "database") if not cfg.get(k)]
68
69
  if missing:
69
70
  raise ValueError(f"Missing auth DB configuration for env '{self.env}': {missing}")
70
71
 
71
- self._db = get_mysql_helper(
72
- host=cfg["host"],
73
- port=cfg.get("port", 3306),
74
- user=cfg["user"],
75
- database=cfg["database"],
76
- key_vault=cfg["key_vault"],
77
- secret=cfg["secret"],
78
- )
72
+ if password:
73
+ key_vault = secret = None
74
+ else:
75
+ key_vault = key_vault or cfg.get("key_vault")
76
+ secret = secret or cfg.get("secret")
77
+
78
+ if (key_vault is None) != (secret is None):
79
+ raise ValueError("Key Vault credentials require both key_vault and secret")
80
+
81
+ cfg.update(password=password, key_vault=key_vault, secret=secret)
82
+ self._db = get_mysql_helper(**cfg)
79
83
  self._cache_ttl = cache_ttl_seconds
80
84
  self._cache: Dict[Tuple[str, str, str], Tuple[float, bool]] = {}
81
85
 
@@ -146,33 +150,30 @@ class AuthChecker:
146
150
 
147
151
  def create_user(self, username: str, password: str) -> int:
148
152
  """Creates a new user and returns its id. Fails if the username already exists."""
149
- with self._db._engine.connect() as conn:
153
+ with self._db._engine.begin() as conn:
150
154
  result = conn.execute(
151
155
  text("INSERT INTO api_users (username, password_hash) VALUES (:username, :password_hash)"),
152
156
  {"username": username, "password_hash": hash_password(password)},
153
157
  )
154
- conn.commit()
155
158
  return result.lastrowid
156
159
 
157
160
  def set_password(self, username: str, password: str) -> None:
158
- with self._db._engine.connect() as conn:
161
+ with self._db._engine.begin() as conn:
159
162
  conn.execute(
160
163
  text("UPDATE api_users SET password_hash = :password_hash WHERE username = :username"),
161
164
  {"password_hash": hash_password(password), "username": username},
162
165
  )
163
- conn.commit()
164
166
 
165
167
  def set_active(self, username: str, is_active: bool) -> None:
166
- with self._db._engine.connect() as conn:
168
+ with self._db._engine.begin() as conn:
167
169
  conn.execute(
168
170
  text("UPDATE api_users SET is_active = :is_active WHERE username = :username"),
169
171
  {"is_active": is_active, "username": username},
170
172
  )
171
- conn.commit()
172
173
 
173
174
  def grant_access(self, username: str, api_name: str) -> None:
174
175
  api_name = self._normalize_api_name(api_name)
175
- with self._db._engine.connect() as conn:
176
+ with self._db._engine.begin() as conn:
176
177
  conn.execute(
177
178
  text(
178
179
  "INSERT IGNORE INTO api_user_access (user_id, api_name) "
@@ -180,11 +181,10 @@ class AuthChecker:
180
181
  ),
181
182
  {"api_name": api_name, "username": username},
182
183
  )
183
- conn.commit()
184
184
 
185
185
  def revoke_access(self, username: str, api_name: str) -> None:
186
186
  api_name = self._normalize_api_name(api_name)
187
- with self._db._engine.connect() as conn:
187
+ with self._db._engine.begin() as conn:
188
188
  conn.execute(
189
189
  text(
190
190
  "DELETE a FROM api_user_access a JOIN api_users u ON u.id = a.user_id "
@@ -192,7 +192,6 @@ class AuthChecker:
192
192
  ),
193
193
  {"username": username, "api_name": api_name},
194
194
  )
195
- conn.commit()
196
195
 
197
196
  @staticmethod
198
197
  def _normalize_api_name(api_name: str) -> str:
@@ -15,7 +15,7 @@ AUTH_DB_CONFIG = {
15
15
  user="auth_svc_dev",
16
16
  database="auth_dev",
17
17
  key_vault="kv-ds-tr-dev-v1",
18
- secret="authDbPasswordDevV2",
18
+ secret="auth-helper-dev",
19
19
  ),
20
20
  "uat": dict(
21
21
  host="mysql-vava-ds-tr-dev.mysql.database.azure.com",
@@ -23,15 +23,7 @@ AUTH_DB_CONFIG = {
23
23
  user="auth_svc_uat",
24
24
  database="auth_uat",
25
25
  key_vault="kv-ds-tr-uat-v1",
26
- secret="authDbPasswordUatV2",
27
- ),
28
- "stg": dict(
29
- host="mysql-vava-ds-tr-dev.mysql.database.azure.com",
30
- port=3306,
31
- user="auth_svc_stg",
32
- database="auth_stg",
33
- key_vault="kv-ds-tr-prod-v1",
34
- secret="authDbPasswordStgV2",
26
+ secret="auth-helper-uat",
35
27
  ),
36
28
  "prod": dict(
37
29
  host="mysql-vava-ds-tr-dev.mysql.database.azure.com",
@@ -39,6 +31,6 @@ AUTH_DB_CONFIG = {
39
31
  user="auth_svc",
40
32
  database="auth",
41
33
  key_vault="kv-ds-tr-prod-v1",
42
- secret="authDbPasswordProdV2",
34
+ secret="auth-helper",
43
35
  ),
44
36
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vavacars_data_utils
3
- Version: 1.7.0
3
+ Version: 1.7.2
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