cwyodmodules 0.3.48__py3-none-any.whl → 0.3.49__py3-none-any.whl

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.
@@ -1,24 +1,24 @@
1
1
  """
2
2
  Azure Project Management Configuration Template
3
3
 
4
- This template provides standardized configuration for Azure logging, identity,
5
- and KeyVault management across projects. It creates singleton instances of
6
- AzureLogger, AzureIdentity, and AzureKeyVault that can be imported and used
7
- throughout your application.
4
+ This template provides standardized configuration for Azure logging and identity
5
+ management across projects. It creates singleton instances of AzureLogger and
6
+ AzureIdentity that can be imported and used throughout your application.
8
7
 
9
8
  Usage:
10
- from mgmt_config import logger, identity, keyvault
9
+ from mgmt_config import logger, identity
11
10
 
12
11
  logger.info("Application started")
13
12
  credential = identity.get_credential()
14
- secret = keyvault.get_secret("my-secret") if keyvault else None
15
13
  """
16
14
 
17
15
  import os
18
16
  from typing import Optional, Dict, Any
19
- from azpaddypy.mgmt.logging import create_app_logger
17
+ from azpaddypy.mgmt.logging import create_app_logger, create_function_logger
20
18
  from azpaddypy.mgmt.identity import create_azure_identity
21
- from azpaddypy.resources.keyvault import create_azure_keyvault, AzureKeyVault
19
+ from azpaddypy.resources.keyvault import create_azure_keyvault
20
+
21
+ # Alias for import in other packages
22
22
 
23
23
  # =============================================================================
24
24
  # SERVICE CONFIGURATION
@@ -68,29 +68,40 @@ IDENTITY_CONNECTION_STRING = LOGGER_CONNECTION_STRING
68
68
  # KEYVAULT CONFIGURATION
69
69
  # =============================================================================
70
70
 
71
- # KeyVault URL (optional, will be None if not configured)
71
+ # Azure Key Vault URL (required for Key Vault operations)
72
72
  KEYVAULT_URL = os.getenv("key_vault_uri")
73
+ HEAD_KEYVAULT_URL = os.getenv("head_key_vault_uri")
73
74
 
74
- # KeyVault client enablement settings
75
+ # Enable specific Key Vault client types
75
76
  KEYVAULT_ENABLE_SECRETS = os.getenv("KEYVAULT_ENABLE_SECRETS", "true").lower() == "true"
76
77
  KEYVAULT_ENABLE_KEYS = os.getenv("KEYVAULT_ENABLE_KEYS", "false").lower() == "true"
77
78
  KEYVAULT_ENABLE_CERTIFICATES = os.getenv("KEYVAULT_ENABLE_CERTIFICATES", "false").lower() == "true"
78
79
 
79
- # Connection string for KeyVault logging (uses same as logger by default)
80
+ # Connection string for keyvault logging (uses same as logger by default)
80
81
  KEYVAULT_CONNECTION_STRING = LOGGER_CONNECTION_STRING
81
82
 
82
83
  # =============================================================================
83
84
  # INITIALIZE SERVICES
84
85
  # =============================================================================
85
-
86
86
  # Create logger instance
87
- logger = create_app_logger(
88
- service_name=SERVICE_NAME,
89
- service_version=SERVICE_VERSION,
90
- connection_string=LOGGER_CONNECTION_STRING,
91
- enable_console_logging=LOGGER_ENABLE_CONSOLE,
92
- instrumentation_options=LOGGER_INSTRUMENTATION_OPTIONS,
93
- )
87
+ if "functionapp" in os.getenv("REFLECTION_KIND", "app"):
88
+ logger = create_function_logger(
89
+ function_app_name=os.getenv("REFLECTION_NAME", "app"),
90
+ function_name="backend",
91
+ service_version=SERVICE_VERSION,
92
+ connection_string=LOGGER_CONNECTION_STRING,
93
+ instrumentation_options=LOGGER_INSTRUMENTATION_OPTIONS,
94
+ )
95
+ logger.info("Function logger initialized")
96
+ else:
97
+ logger = create_app_logger(
98
+ service_name=SERVICE_NAME,
99
+ service_version=SERVICE_VERSION,
100
+ connection_string=LOGGER_CONNECTION_STRING,
101
+ enable_console_logging=LOGGER_ENABLE_CONSOLE,
102
+ instrumentation_options=LOGGER_INSTRUMENTATION_OPTIONS,
103
+ )
104
+ logger.info("App logger initialized")
94
105
 
95
106
  # Create identity instance with shared logger
96
107
  identity = create_azure_identity(
@@ -103,7 +114,7 @@ identity = create_azure_identity(
103
114
  logger=logger,
104
115
  )
105
116
 
106
- # Create KeyVault instance with shared logger and identity (only if URL is configured)
117
+ # Create keyvault instance with shared logger and identity (if URL is configured)
107
118
  keyvault = None
108
119
  if KEYVAULT_URL:
109
120
  keyvault = create_azure_keyvault(
@@ -118,12 +129,10 @@ if KEYVAULT_URL:
118
129
  enable_certificates=KEYVAULT_ENABLE_CERTIFICATES,
119
130
  )
120
131
 
121
- def create_keyvault_client(vault_url: str) -> Optional[AzureKeyVault]:
122
- """Creates a secondary KeyVault client for a different vault."""
123
- if not vault_url:
124
- return None
125
- return create_azure_keyvault(
126
- vault_url=vault_url,
132
+ head_keyvault = None
133
+ if HEAD_KEYVAULT_URL:
134
+ head_keyvault = create_azure_keyvault(
135
+ vault_url=HEAD_KEYVAULT_URL,
127
136
  azure_identity=identity,
128
137
  service_name=SERVICE_NAME,
129
138
  service_version=SERVICE_VERSION,
@@ -139,7 +148,7 @@ def create_keyvault_client(vault_url: str) -> Optional[AzureKeyVault]:
139
148
  # =============================================================================
140
149
 
141
150
  # Validate critical configuration
142
- if SERVICE_NAME == "your-service-name":
151
+ if SERVICE_NAME == __name__:
143
152
  logger.warning(
144
153
  "SERVICE_NAME is not configured. Please set SERVICE_NAME environment variable or update this template.",
145
154
  extra={"configuration_issue": "service_name_not_set"}
@@ -153,10 +162,16 @@ if not LOGGER_CONNECTION_STRING:
153
162
 
154
163
  if not KEYVAULT_URL:
155
164
  logger.info(
156
- "No KeyVault URL configured. KeyVault operations will be disabled.",
165
+ "No Key Vault URL configured. Key Vault operations will be disabled.",
157
166
  extra={"keyvault_status": "disabled"}
158
167
  )
159
168
 
169
+ if not HEAD_KEYVAULT_URL:
170
+ logger.info(
171
+ "No Head Key Vault URL configured. Head Key Vault operations will be disabled.",
172
+ extra={"head_keyvault_status": "disabled"}
173
+ )
174
+
160
175
  # Log successful initialization
161
176
  logger.info(
162
177
  f"Management configuration initialized for service '{SERVICE_NAME}' v{SERVICE_VERSION}",
@@ -167,9 +182,10 @@ logger.info(
167
182
  "token_cache_enabled": IDENTITY_ENABLE_TOKEN_CACHE,
168
183
  "telemetry_enabled": bool(LOGGER_CONNECTION_STRING),
169
184
  "keyvault_enabled": bool(KEYVAULT_URL),
170
- "keyvault_secrets_enabled": KEYVAULT_ENABLE_SECRETS,
171
- "keyvault_keys_enabled": KEYVAULT_ENABLE_KEYS,
172
- "keyvault_certificates_enabled": KEYVAULT_ENABLE_CERTIFICATES,
185
+ "head_keyvault_enabled": bool(HEAD_KEYVAULT_URL),
186
+ "keyvault_secrets_enabled": KEYVAULT_ENABLE_SECRETS if KEYVAULT_URL else False,
187
+ "keyvault_keys_enabled": KEYVAULT_ENABLE_KEYS if KEYVAULT_URL else False,
188
+ "keyvault_certificates_enabled": KEYVAULT_ENABLE_CERTIFICATES if KEYVAULT_URL else False,
173
189
  }
174
190
  )
175
191
 
@@ -178,4 +194,4 @@ logger.info(
178
194
  # =============================================================================
179
195
 
180
196
  # Export logger, identity, and keyvault for use in applications
181
- __all__ = ["logger", "identity", "keyvault", "create_keyvault_client"]
197
+ __all__ = ["logger", "identity", "keyvault", "head_keyvault"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cwyodmodules
3
- Version: 0.3.48
3
+ Version: 0.3.49
4
4
  Summary: Add your description here
5
5
  Author-email: Patrik <patrikhartl@gmail.com>
6
6
  Classifier: Operating System :: OS Independent
@@ -1,5 +1,5 @@
1
1
  cwyodmodules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- cwyodmodules/mgmt_config.py,sha256=YFVPC_Q3enDDf3tw9mQ4dWeGfvtCnxsEkIFu0616C4w,7163
2
+ cwyodmodules/mgmt_config.py,sha256=xYhAhsIzDJc8ZizRolR5YNIY-P1gLAdepTeudzQqdj8,7819
3
3
  cwyodmodules/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  cwyodmodules/api/chat_history.py,sha256=bVXFmhTHIfEiHv_nBrfizO-cQRHhKgrdcZ07OD1b0Tw,20683
5
5
  cwyodmodules/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -109,8 +109,8 @@ cwyodmodules/graphrag/query/generate.py,sha256=BZiB6iw7PkIovw-CyYFogMHnDxK0Qu_4u
109
109
  cwyodmodules/graphrag/query/graph_search.py,sha256=95h3ecSWx4864XgKABtG0fh3Nk8HkqJVzoCrO8daJ-Y,7724
110
110
  cwyodmodules/graphrag/query/types.py,sha256=1Iq1dp4I4a56_cuFjOZ0NTgd0A2_MpVFznp_czgt6cI,617
111
111
  cwyodmodules/graphrag/query/vector_search.py,sha256=9Gwu9LPjtoAYUU8WKqCvbCHAIg3dpk71reoYd1scLnQ,1807
112
- cwyodmodules-0.3.48.dist-info/licenses/LICENSE,sha256=UqBDTipijsSW2ZSOXyTZnMsXmLoEHTgNEM0tL4g-Sso,1150
113
- cwyodmodules-0.3.48.dist-info/METADATA,sha256=9YMDuaHhW4n_XMuMVucVnaefjDVdVch9u7s6bl4O5Bg,2002
114
- cwyodmodules-0.3.48.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
115
- cwyodmodules-0.3.48.dist-info/top_level.txt,sha256=99RENLbkdRX-qpJvsxZ5AfmTL5s6shSaKOWYpz1vwzg,13
116
- cwyodmodules-0.3.48.dist-info/RECORD,,
112
+ cwyodmodules-0.3.49.dist-info/licenses/LICENSE,sha256=UqBDTipijsSW2ZSOXyTZnMsXmLoEHTgNEM0tL4g-Sso,1150
113
+ cwyodmodules-0.3.49.dist-info/METADATA,sha256=3W5TdCC31Bv_3PNPjM9V-AzBOLjoWscS1e-HcwD7b6Y,2002
114
+ cwyodmodules-0.3.49.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
115
+ cwyodmodules-0.3.49.dist-info/top_level.txt,sha256=99RENLbkdRX-qpJvsxZ5AfmTL5s6shSaKOWYpz1vwzg,13
116
+ cwyodmodules-0.3.49.dist-info/RECORD,,