pyxecm 2.0.4__py3-none-any.whl → 3.0.1__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.
Potentially problematic release.
This version of pyxecm might be problematic. Click here for more details.
- pyxecm/coreshare.py +5 -3
- pyxecm/helper/data.py +4 -4
- pyxecm/helper/otel_config.py +26 -0
- pyxecm/helper/web.py +1 -2
- pyxecm/otca.py +1356 -16
- pyxecm/otcs.py +2354 -593
- pyxecm/otds.py +1 -1
- pyxecm/otmm.py +4 -5
- pyxecm/py.typed +0 -0
- pyxecm-3.0.1.dist-info/METADATA +126 -0
- pyxecm-3.0.1.dist-info/RECORD +96 -0
- {pyxecm-2.0.4.dist-info → pyxecm-3.0.1.dist-info}/WHEEL +1 -2
- pyxecm-3.0.1.dist-info/entry_points.txt +4 -0
- {pyxecm/customizer/api → pyxecm_api}/__main__.py +1 -1
- pyxecm_api/agents/__init__.py +7 -0
- pyxecm_api/agents/app.py +13 -0
- pyxecm_api/agents/functions.py +119 -0
- pyxecm_api/agents/models.py +10 -0
- pyxecm_api/agents/otcm_knowledgegraph/functions.py +85 -0
- pyxecm_api/agents/otcm_knowledgegraph/models.py +61 -0
- pyxecm_api/agents/otcm_knowledgegraph/router.py +74 -0
- pyxecm_api/agents/otcm_user_agent/models.py +20 -0
- pyxecm_api/agents/otcm_user_agent/router.py +65 -0
- pyxecm_api/agents/otcm_workspace_agent/models.py +40 -0
- pyxecm_api/agents/otcm_workspace_agent/router.py +200 -0
- pyxecm_api/app.py +221 -0
- {pyxecm/customizer/api → pyxecm_api}/auth/functions.py +10 -2
- {pyxecm/customizer/api → pyxecm_api}/auth/router.py +4 -3
- {pyxecm/customizer/api → pyxecm_api}/common/functions.py +39 -9
- {pyxecm/customizer/api → pyxecm_api}/common/metrics.py +1 -2
- {pyxecm/customizer/api → pyxecm_api}/common/router.py +7 -8
- {pyxecm/customizer/api → pyxecm_api}/settings.py +21 -6
- {pyxecm/customizer/api → pyxecm_api}/terminal/router.py +1 -1
- {pyxecm/customizer/api → pyxecm_api}/v1_csai/router.py +39 -10
- pyxecm_api/v1_csai/statics/bindings/utils.js +189 -0
- pyxecm_api/v1_csai/statics/tom-select/tom-select.complete.min.js +356 -0
- pyxecm_api/v1_csai/statics/tom-select/tom-select.css +334 -0
- pyxecm_api/v1_csai/statics/vis-9.1.2/vis-network.css +1 -0
- pyxecm_api/v1_csai/statics/vis-9.1.2/vis-network.min.js +27 -0
- pyxecm_api/v1_maintenance/__init__.py +1 -0
- {pyxecm/customizer/api → pyxecm_api}/v1_maintenance/functions.py +3 -3
- {pyxecm/customizer/api → pyxecm_api}/v1_maintenance/router.py +8 -8
- pyxecm_api/v1_otcs/__init__.py +1 -0
- {pyxecm/customizer/api → pyxecm_api}/v1_otcs/functions.py +7 -5
- {pyxecm/customizer/api → pyxecm_api}/v1_otcs/router.py +8 -7
- pyxecm_api/v1_payload/__init__.py +1 -0
- {pyxecm/customizer/api → pyxecm_api}/v1_payload/functions.py +10 -7
- {pyxecm/customizer/api → pyxecm_api}/v1_payload/router.py +11 -10
- {pyxecm/customizer → pyxecm_customizer}/__init__.py +8 -0
- {pyxecm/customizer → pyxecm_customizer}/__main__.py +15 -21
- {pyxecm/customizer → pyxecm_customizer}/browser_automation.py +414 -103
- {pyxecm/customizer → pyxecm_customizer}/customizer.py +178 -116
- {pyxecm/customizer → pyxecm_customizer}/guidewire.py +60 -20
- {pyxecm/customizer → pyxecm_customizer}/k8s.py +4 -4
- pyxecm_customizer/knowledge_graph.py +719 -0
- pyxecm_customizer/log.py +35 -0
- {pyxecm/customizer → pyxecm_customizer}/m365.py +41 -33
- {pyxecm/customizer → pyxecm_customizer}/payload.py +2265 -1933
- {pyxecm/customizer/api/common → pyxecm_customizer}/payload_list.py +18 -55
- {pyxecm/customizer → pyxecm_customizer}/salesforce.py +1 -1
- {pyxecm/customizer → pyxecm_customizer}/sap.py +6 -2
- {pyxecm/customizer → pyxecm_customizer}/servicenow.py +2 -4
- {pyxecm/customizer → pyxecm_customizer}/settings.py +7 -6
- {pyxecm/customizer → pyxecm_customizer}/successfactors.py +40 -28
- {pyxecm/customizer → pyxecm_customizer}/translate.py +1 -1
- {pyxecm/maintenance_page → pyxecm_maintenance_page}/__main__.py +1 -1
- {pyxecm/maintenance_page → pyxecm_maintenance_page}/app.py +14 -8
- pyxecm/customizer/api/app.py +0 -157
- pyxecm/customizer/log.py +0 -107
- pyxecm/customizer/nhc.py +0 -1169
- pyxecm/customizer/openapi.py +0 -258
- pyxecm/customizer/pht.py +0 -1357
- pyxecm-2.0.4.dist-info/METADATA +0 -119
- pyxecm-2.0.4.dist-info/RECORD +0 -78
- pyxecm-2.0.4.dist-info/licenses/LICENSE +0 -202
- pyxecm-2.0.4.dist-info/top_level.txt +0 -1
- {pyxecm/customizer/api → pyxecm_api}/__init__.py +0 -0
- {pyxecm/customizer/api/auth → pyxecm_api/agents/otcm_knowledgegraph}/__init__.py +0 -0
- {pyxecm/customizer/api/common → pyxecm_api/agents/otcm_user_agent}/__init__.py +0 -0
- {pyxecm/customizer/api/v1_csai → pyxecm_api/agents/otcm_workspace_agent}/__init__.py +0 -0
- {pyxecm/customizer/api/v1_maintenance → pyxecm_api/auth}/__init__.py +0 -0
- {pyxecm/customizer/api → pyxecm_api}/auth/models.py +0 -0
- {pyxecm/customizer/api/v1_otcs → pyxecm_api/common}/__init__.py +0 -0
- {pyxecm/customizer/api → pyxecm_api}/common/models.py +0 -0
- {pyxecm/customizer/api → pyxecm_api}/terminal/__init__.py +0 -0
- {pyxecm/customizer/api/v1_payload → pyxecm_api/v1_csai}/__init__.py +0 -0
- {pyxecm/customizer/api → pyxecm_api}/v1_csai/models.py +0 -0
- {pyxecm/customizer/api → pyxecm_api}/v1_maintenance/models.py +0 -0
- {pyxecm/customizer/api → pyxecm_api}/v1_payload/models.py +0 -0
- {pyxecm/customizer → pyxecm_customizer}/exceptions.py +0 -0
- {pyxecm/maintenance_page → pyxecm_maintenance_page}/__init__.py +0 -0
- {pyxecm/maintenance_page → pyxecm_maintenance_page}/settings.py +0 -0
- {pyxecm/maintenance_page → pyxecm_maintenance_page}/static/favicon.avif +0 -0
- {pyxecm/maintenance_page → pyxecm_maintenance_page}/templates/maintenance.html +0 -0
pyxecm/coreshare.py
CHANGED
|
@@ -2590,7 +2590,8 @@ class CoreShare:
|
|
|
2590
2590
|
is_confirmed = self.get_result_value(response=user, key="isConfirmed")
|
|
2591
2591
|
if not is_confirmed:
|
|
2592
2592
|
self.logger.info(
|
|
2593
|
-
"User -> %s is not yet confirmed - so it cannot have files to cleanup.",
|
|
2593
|
+
"User -> %s (%s) is not yet confirmed - so it cannot have files to cleanup.",
|
|
2594
|
+
user_login,
|
|
2594
2595
|
user_id,
|
|
2595
2596
|
)
|
|
2596
2597
|
return True
|
|
@@ -2612,14 +2613,15 @@ class CoreShare:
|
|
|
2612
2613
|
# Get all folders of the user:
|
|
2613
2614
|
response = self.get_folders(parent_id=user_root_folder_id)
|
|
2614
2615
|
if not response or not response["results"]:
|
|
2615
|
-
self.logger.info("User -> %s has no items to cleanup!", user_id)
|
|
2616
|
+
self.logger.info("User -> %s (%s) has no items to cleanup!", user_login, user_id)
|
|
2616
2617
|
else:
|
|
2617
2618
|
items = response["results"]
|
|
2618
2619
|
for item in items:
|
|
2619
2620
|
if item["isShared"]:
|
|
2620
2621
|
if item["owner"]["id"] == user_id:
|
|
2621
2622
|
self.logger.info(
|
|
2622
|
-
"User -> %s stops sharing item -> %s (%s)...",
|
|
2623
|
+
"User -> %s (%s) stops sharing item -> %s (%s)...",
|
|
2624
|
+
user_login,
|
|
2623
2625
|
user_id,
|
|
2624
2626
|
item["name"],
|
|
2625
2627
|
item["id"],
|
pyxecm/helper/data.py
CHANGED
|
@@ -1410,7 +1410,7 @@ class Data:
|
|
|
1410
1410
|
for value in values:
|
|
1411
1411
|
# Do we want a special treatment for this value (e.g. the current year)
|
|
1412
1412
|
if value in special_values:
|
|
1413
|
-
self.logger.
|
|
1413
|
+
self.logger.debug("Processing special value -> '%s'...", value)
|
|
1414
1414
|
if value not in special_url_templates and str(value) not in special_url_templates:
|
|
1415
1415
|
self.logger.error(
|
|
1416
1416
|
"Cannot find key -> '%s' in special URL templates dictionary -> %s! Skipping...",
|
|
@@ -2127,7 +2127,7 @@ class Data:
|
|
|
2127
2127
|
)
|
|
2128
2128
|
continue
|
|
2129
2129
|
# Apply cleansing to dictionary values in the main column
|
|
2130
|
-
self.logger.
|
|
2130
|
+
self.logger.debug(
|
|
2131
2131
|
"Cleansing for column -> '%s' has a subfield -> '%s' configured. Do cleansing for dictionary items with key -> '%s'...",
|
|
2132
2132
|
column,
|
|
2133
2133
|
dict_key,
|
|
@@ -2165,7 +2165,7 @@ class Data:
|
|
|
2165
2165
|
# Handle string columns:
|
|
2166
2166
|
if self.is_string_column(self._df[column]):
|
|
2167
2167
|
# Apply cleansing operations on string column
|
|
2168
|
-
self.logger.
|
|
2168
|
+
self.logger.debug(
|
|
2169
2169
|
"Column -> '%s' has string values. Do cleansing for string values...",
|
|
2170
2170
|
column,
|
|
2171
2171
|
)
|
|
@@ -2195,7 +2195,7 @@ class Data:
|
|
|
2195
2195
|
elif self.is_list_column(self._df[column]):
|
|
2196
2196
|
# Handle list-like columns for this we iterate over each list item
|
|
2197
2197
|
# and apply the cleansing by calling _apply_string_cleansing() for item:
|
|
2198
|
-
self.logger.
|
|
2198
|
+
self.logger.debug(
|
|
2199
2199
|
"Column -> '%s' has list values. Do cleansing for each list item...",
|
|
2200
2200
|
column,
|
|
2201
2201
|
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""Define OpenTelemtry configuration."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from opentelemetry import trace
|
|
6
|
+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
|
7
|
+
from opentelemetry.instrumentation.requests import RequestsInstrumentor
|
|
8
|
+
from opentelemetry.instrumentation.threading import ThreadingInstrumentor
|
|
9
|
+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
|
10
|
+
from opentelemetry.sdk.trace import TracerProvider
|
|
11
|
+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
12
|
+
|
|
13
|
+
resource = Resource.create(attributes={SERVICE_NAME: "pyxecm"})
|
|
14
|
+
|
|
15
|
+
trace.set_tracer_provider(TracerProvider(resource=resource))
|
|
16
|
+
|
|
17
|
+
if os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT"):
|
|
18
|
+
trace.get_tracer_provider().add_span_processor(
|
|
19
|
+
BatchSpanProcessor(OTLPSpanExporter()),
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Auto-instrument requests
|
|
23
|
+
RequestsInstrumentor().instrument()
|
|
24
|
+
ThreadingInstrumentor().instrument()
|
|
25
|
+
|
|
26
|
+
tracer = trace.get_tracer("pyxecm")
|
pyxecm/helper/web.py
CHANGED
|
@@ -326,8 +326,7 @@ class HTTP:
|
|
|
326
326
|
)
|
|
327
327
|
os.makedirs(directory)
|
|
328
328
|
with open(filename, "wb") as download_file:
|
|
329
|
-
|
|
330
|
-
download_file.write(chunk)
|
|
329
|
+
download_file.writelines(response.iter_content(chunk_size=chunk_size))
|
|
331
330
|
self.logger.debug(
|
|
332
331
|
"File downloaded successfully as -> '%s' (size -> %s).",
|
|
333
332
|
filename,
|