cavisson-pythonagent 0.0.1__tar.gz → 0.0.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 (208) hide show
  1. cavisson_pythonagent-0.0.2/MANIFEST.in +2 -0
  2. {cavisson_pythonagent-0.0.1/cavisson_pythonagent.egg-info → cavisson_pythonagent-0.0.2}/PKG-INFO +2 -11
  3. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2/cavisson_pythonagent.egg-info}/PKG-INFO +2 -11
  4. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/SOURCES.txt +21 -3
  5. cavisson_pythonagent-0.0.2/cavisson_pythonagent.egg-info/entry_points.txt +2 -0
  6. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/agent.py +4 -16
  7. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/find.py +4 -14
  8. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/base.py +10 -6
  9. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/aiohttp_web.py +6 -4
  10. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/asgi.py +5 -3
  11. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/tornado_async_web.py +4 -2
  12. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/wsgi.py +5 -3
  13. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/grpc/server_interceptor.py +4 -2
  14. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/aiohttp_client.py +7 -6
  15. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/httpx_client.py +14 -12
  16. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/base_tool.py +2 -1
  17. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/langchain_community.py +2 -1
  18. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/langchain_openai.py +2 -1
  19. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/message_brokers/pika.py +9 -8
  20. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/openai/openai.py +4 -2
  21. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libcavapr-1.so +0 -0
  22. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libcrypto.so.3 +0 -0
  23. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libssl.so.3 +0 -0
  24. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libuuid.so.1 +0 -0
  25. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libwebsockets.so +0 -0
  26. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libcavapr-1.so +0 -0
  27. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libcrypto.so.1.1 +0 -0
  28. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libssl.so.1.1 +0 -0
  29. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libwebsockets.so +0 -0
  30. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/opensuse/libcavapr-1.so +0 -0
  31. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/opensuse/libndsdk_py.so +0 -0
  32. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/opensuse/libwebsockets.so +0 -0
  33. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libcavapr-1.so +0 -0
  34. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libcrypto.so.1.1 +0 -0
  35. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libssl.so.1.1 +0 -0
  36. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libwebsockets.so +0 -0
  37. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/sles/libcavapr-1.so +0 -0
  38. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/sles/libndsdk_py.so +0 -0
  39. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/sles/libwebsockets.so +0 -0
  40. cavisson_pythonagent-0.0.2/pythonagent/bootstrap/setup_native_libs.py +196 -0
  41. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/setup.cfg +8 -1
  42. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/setup.py +2 -2
  43. cavisson_pythonagent-0.0.1/MANIFEST.in +0 -1
  44. cavisson_pythonagent-0.0.1/pythonagent/agent/internal/metadata/agent_meta_data.py +0 -276
  45. cavisson_pythonagent-0.0.1/pythonagent/agent/probes/Instrumentation/module_version_resolver.py +0 -155
  46. cavisson_pythonagent-0.0.1/pythonagent/vendor/pympler/util/__init__.py +0 -0
  47. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/LICENSE +0 -0
  48. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/README.md +0 -0
  49. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/dependency_links.txt +0 -0
  50. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/top_level.txt +0 -0
  51. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pyproject.toml +0 -0
  52. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/__init__.py +0 -0
  53. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/__init__.py +0 -0
  54. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/__init__.py +0 -0
  55. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/framesinfo.py +0 -0
  56. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/heap_dump.py +0 -0
  57. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/intercept_module.py +0 -0
  58. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/logs.py +0 -0
  59. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/proc_compat.py +0 -0
  60. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/profile.py +0 -0
  61. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/provider.py +0 -0
  62. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/thread_dump.py +0 -0
  63. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/udp.py +0 -0
  64. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/udp_message.py +0 -0
  65. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/__init__.py +0 -0
  66. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/new_parser.py +0 -0
  67. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/parser.py +0 -0
  68. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/__init__.py +0 -0
  69. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/cache/__init__.py +0 -0
  70. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/cache/redis.py +0 -0
  71. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/cache/redis_asyncio.py +0 -0
  72. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/coroutines/__init__.py +0 -0
  73. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/coroutines/asyncio.py +0 -0
  74. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/elasticdb/__init__.py +0 -0
  75. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/elasticdb/aelastic.py +0 -0
  76. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/__init__.py +0 -0
  77. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/agentprofiler.py +0 -0
  78. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/aisess.py +0 -0
  79. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/bottle.py +0 -0
  80. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/cherry.py +0 -0
  81. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/django.py +0 -0
  82. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/falcon.py +0 -0
  83. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/fastapi.py +0 -0
  84. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/flask.py +0 -0
  85. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/pyramid.py +0 -0
  86. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/test.py +0 -0
  87. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/tornado_web.py +0 -0
  88. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/grpc/__init__.py +0 -0
  89. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/grpc/client_interceptor.py +0 -0
  90. {cavisson_pythonagent-0.0.1/pythonagent/agent/internal/metadata → cavisson_pythonagent-0.0.2/pythonagent/agent/probes/havoc}/__init__.py +0 -0
  91. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/custom_memory_stress.py +0 -0
  92. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/custom_thread_stress.py +0 -0
  93. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/havoc_constants.py +0 -0
  94. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/havoc_manager.py +0 -0
  95. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/__init__.py +0 -0
  96. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/boto.py +0 -0
  97. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/httplib.py +0 -0
  98. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/requests.py +0 -0
  99. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/tornado_httpclient.py +0 -0
  100. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/urllib3.py +0 -0
  101. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/__init__.py +0 -0
  102. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/langchain_core.py +0 -0
  103. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/logging/__init__.py +0 -0
  104. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/message_brokers/__init__.py +0 -0
  105. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/mongodb/__init__.py +0 -0
  106. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/mongodb/pymongo.py +0 -0
  107. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/openai/__init__.py +0 -0
  108. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/span.py +0 -0
  109. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/__init__.py +0 -0
  110. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/botocores3.py +0 -0
  111. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/dbapi.py +0 -0
  112. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/dynamodb.py +0 -0
  113. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/mysql_connector.py +0 -0
  114. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/mysql_connector_cext.py +0 -0
  115. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/mysqldb.py +0 -0
  116. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/psycopg2.py +0 -0
  117. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/pymysql.py +0 -0
  118. {cavisson_pythonagent-0.0.1/pythonagent/agent/probes/havoc → cavisson_pythonagent-0.0.2/pythonagent/bootstrap}/__init__.py +0 -0
  119. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/cav_gunicorn.py +0 -0
  120. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/cavagent_lambda_wrapper.py +0 -0
  121. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/run.py +0 -0
  122. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/sitecustomize.py +0 -0
  123. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/CavAgent/instrumentationprofile.json +0 -0
  124. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/CavAgent/interceptor_points.txt +0 -0
  125. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/python/CavAgent/instrumentationprofile.json +0 -0
  126. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/python/CavAgent/interceptor_points.txt +0 -0
  127. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/python/config/ndsettings.conf +0 -0
  128. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/config.py +0 -0
  129. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/find.py +0 -0
  130. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/find_mod_cls_name.py +0 -0
  131. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/lang.py +0 -0
  132. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/lib.py +0 -0
  133. {cavisson_pythonagent-0.0.1/pythonagent/bootstrap → cavisson_pythonagent-0.0.2/pythonagent/main}/__init__.py +0 -0
  134. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/__init__.py +0 -0
  135. {cavisson_pythonagent-0.0.1/pythonagent/main → cavisson_pythonagent-0.0.2/pythonagent/main/pytrace/commands}/__init__.py +0 -0
  136. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/commands/auto_discovery.py +0 -0
  137. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/commands/run.py +0 -0
  138. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/pytrace.py +0 -0
  139. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/wsgi.py +0 -0
  140. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main.py +0 -0
  141. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/run.py +0 -0
  142. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/sqins.py +0 -0
  143. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/test.py +0 -0
  144. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/utils.py +0 -0
  145. {cavisson_pythonagent-0.0.1/pythonagent/main/pytrace/commands → cavisson_pythonagent-0.0.2/pythonagent/vendor}/__init__.py +0 -0
  146. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/__init__.py +0 -0
  147. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/asizeof.py +0 -0
  148. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/charts.py +0 -0
  149. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/classtracker.py +0 -0
  150. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/classtracker_stats.py +0 -0
  151. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/garbagegraph.py +0 -0
  152. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/mprofile.py +0 -0
  153. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/muppy.py +0 -0
  154. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/panels.py +0 -0
  155. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/process.py +0 -0
  156. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/py.typed +0 -0
  157. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/refbrowser.py +0 -0
  158. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/refgraph.py +0 -0
  159. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/summary.py +0 -0
  160. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/tracker.py +0 -0
  161. {cavisson_pythonagent-0.0.1/pythonagent/vendor → cavisson_pythonagent-0.0.2/pythonagent/vendor/pympler/util}/__init__.py +0 -0
  162. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/util/bottle.py +0 -0
  163. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/util/compat.py +0 -0
  164. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/util/stringutils.py +0 -0
  165. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/web.py +0 -0
  166. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/__init__.py +0 -0
  167. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/_compat.py +0 -0
  168. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/_internal.py +0 -0
  169. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/_reloader.py +0 -0
  170. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/datastructures.py +0 -0
  171. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/__init__.py +0 -0
  172. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/console.py +0 -0
  173. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/repr.py +0 -0
  174. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/tbtools.py +0 -0
  175. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/exceptions.py +0 -0
  176. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/filesystem.py +0 -0
  177. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/formparser.py +0 -0
  178. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/http.py +0 -0
  179. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/local.py +0 -0
  180. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/__init__.py +0 -0
  181. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/dispatcher.py +0 -0
  182. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/http_proxy.py +0 -0
  183. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/lint.py +0 -0
  184. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/profiler.py +0 -0
  185. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/proxy_fix.py +0 -0
  186. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/shared_data.py +0 -0
  187. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/posixemulation.py +0 -0
  188. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/routing.py +0 -0
  189. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/security.py +0 -0
  190. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/serving.py +0 -0
  191. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/test.py +0 -0
  192. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/testapp.py +0 -0
  193. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/urls.py +0 -0
  194. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/useragents.py +0 -0
  195. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/utils.py +0 -0
  196. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/__init__.py +0 -0
  197. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/accept.py +0 -0
  198. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/auth.py +0 -0
  199. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/base_request.py +0 -0
  200. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/base_response.py +0 -0
  201. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/common_descriptors.py +0 -0
  202. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/cors.py +0 -0
  203. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/etag.py +0 -0
  204. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/json.py +0 -0
  205. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/request.py +0 -0
  206. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/response.py +0 -0
  207. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/user_agent.py +0 -0
  208. {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wsgi.py +0 -0
@@ -0,0 +1,2 @@
1
+ graft pythonagent/cavisson
2
+ graft pythonagent/bootstrap/native_libs
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: cavisson-pythonagent
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: A small example package
5
5
  Home-page: https://github.com/pypa/sampleproject
6
6
  Author: Cavisson System
@@ -15,15 +15,6 @@ Classifier: Operating System :: OS Independent
15
15
  Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Dynamic: author
19
- Dynamic: author-email
20
- Dynamic: classifier
21
- Dynamic: description
22
- Dynamic: description-content-type
23
- Dynamic: home-page
24
- Dynamic: license-file
25
- Dynamic: requires-python
26
- Dynamic: summary
27
18
 
28
19
  # Example Package
29
20
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: cavisson-pythonagent
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: A small example package
5
5
  Home-page: https://github.com/pypa/sampleproject
6
6
  Author: Cavisson System
@@ -15,15 +15,6 @@ Classifier: Operating System :: OS Independent
15
15
  Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Dynamic: author
19
- Dynamic: author-email
20
- Dynamic: classifier
21
- Dynamic: description
22
- Dynamic: description-content-type
23
- Dynamic: home-page
24
- Dynamic: license-file
25
- Dynamic: requires-python
26
- Dynamic: summary
27
18
 
28
19
  # Example Package
29
20
 
@@ -7,6 +7,7 @@ setup.py
7
7
  cavisson_pythonagent.egg-info/PKG-INFO
8
8
  cavisson_pythonagent.egg-info/SOURCES.txt
9
9
  cavisson_pythonagent.egg-info/dependency_links.txt
10
+ cavisson_pythonagent.egg-info/entry_points.txt
10
11
  cavisson_pythonagent.egg-info/top_level.txt
11
12
  pythonagent/__init__.py
12
13
  pythonagent/config.py
@@ -32,14 +33,11 @@ pythonagent/agent/internal/provider.py
32
33
  pythonagent/agent/internal/thread_dump.py
33
34
  pythonagent/agent/internal/udp.py
34
35
  pythonagent/agent/internal/udp_message.py
35
- pythonagent/agent/internal/metadata/__init__.py
36
- pythonagent/agent/internal/metadata/agent_meta_data.py
37
36
  pythonagent/agent/probes/__init__.py
38
37
  pythonagent/agent/probes/base.py
39
38
  pythonagent/agent/probes/span.py
40
39
  pythonagent/agent/probes/Instrumentation/__init__.py
41
40
  pythonagent/agent/probes/Instrumentation/find.py
42
- pythonagent/agent/probes/Instrumentation/module_version_resolver.py
43
41
  pythonagent/agent/probes/Instrumentation/new_parser.py
44
42
  pythonagent/agent/probes/Instrumentation/parser.py
45
43
  pythonagent/agent/probes/cache/__init__.py
@@ -106,7 +104,27 @@ pythonagent/bootstrap/__init__.py
106
104
  pythonagent/bootstrap/cav_gunicorn.py
107
105
  pythonagent/bootstrap/cavagent_lambda_wrapper.py
108
106
  pythonagent/bootstrap/run.py
107
+ pythonagent/bootstrap/setup_native_libs.py
109
108
  pythonagent/bootstrap/sitecustomize.py
109
+ pythonagent/bootstrap/native_libs/alpine/libcavapr-1.so
110
+ pythonagent/bootstrap/native_libs/alpine/libcrypto.so.3
111
+ pythonagent/bootstrap/native_libs/alpine/libssl.so.3
112
+ pythonagent/bootstrap/native_libs/alpine/libuuid.so.1
113
+ pythonagent/bootstrap/native_libs/alpine/libwebsockets.so
114
+ pythonagent/bootstrap/native_libs/debian/libcavapr-1.so
115
+ pythonagent/bootstrap/native_libs/debian/libcrypto.so.1.1
116
+ pythonagent/bootstrap/native_libs/debian/libssl.so.1.1
117
+ pythonagent/bootstrap/native_libs/debian/libwebsockets.so
118
+ pythonagent/bootstrap/native_libs/opensuse/libcavapr-1.so
119
+ pythonagent/bootstrap/native_libs/opensuse/libndsdk_py.so
120
+ pythonagent/bootstrap/native_libs/opensuse/libwebsockets.so
121
+ pythonagent/bootstrap/native_libs/oracle-linux/libcavapr-1.so
122
+ pythonagent/bootstrap/native_libs/oracle-linux/libcrypto.so.1.1
123
+ pythonagent/bootstrap/native_libs/oracle-linux/libssl.so.1.1
124
+ pythonagent/bootstrap/native_libs/oracle-linux/libwebsockets.so
125
+ pythonagent/bootstrap/native_libs/sles/libcavapr-1.so
126
+ pythonagent/bootstrap/native_libs/sles/libndsdk_py.so
127
+ pythonagent/bootstrap/native_libs/sles/libwebsockets.so
110
128
  pythonagent/cavisson/netdiagnostics/CavAgent/instrumentationprofile.json
111
129
  pythonagent/cavisson/netdiagnostics/CavAgent/interceptor_points.txt
112
130
  pythonagent/cavisson/netdiagnostics/python/CavAgent/instrumentationprofile.json
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ cavagent-setup-libs = pythonagent.bootstrap.setup_native_libs:main
@@ -12,7 +12,6 @@ from pythonagent.agent.internal import udp
12
12
  from pythonagent.agent.internal.provider import ContextProvider, CurrentBTProvider, StatusCodeProvider
13
13
  from pythonagent.agent.probes.frameworks import wsgi # aiflagset
14
14
  from pythonagent.agent.probes.Instrumentation.find import find
15
- from pythonagent.agent.internal.metadata.agent_meta_data import build_metadata_block
16
15
  from pythonagent.utils import generate_flow_path_id, get_utf8_bytes, get_current_timestamp_in_us, process_raw_havoc_message
17
16
  import threading,gc
18
17
  from pythonagent.agent.internal.proc_compat import get_rss_bytes
@@ -850,18 +849,6 @@ class Agent(object):
850
849
 
851
850
  output_from_ad_c = create_string_buffer(get_utf8_bytes(output_from_ad))
852
851
  self.lib.wraphandleMessageForDiscovery(output_from_ad_c)
853
-
854
- # Metadata must be sent before the "totalTimeTaken=...;" summary line below - that line is
855
- # treated by the collector as the terminal response for this discovery request, so anything
856
- # sent after it would never be attached to the .adr output. Defensive try/except so a
857
- # metadata-collection failure never breaks the rest of auto-discovery.
858
- try:
859
- metadata_block_c = create_string_buffer(get_utf8_bytes(build_metadata_block(self)))
860
- self.lib.wraphandleMessageForDiscovery(metadata_block_c)
861
- del metadata_block_c
862
- except Exception as e:
863
- self.logger.exception("Error building/sending auto-discovery metadata block")
864
-
865
852
  self.logger.info("ad sending summary")
866
853
  ad_summary_c = create_string_buffer(get_utf8_bytes(ad_summary))
867
854
  self.lib.wraphandleMessageForDiscovery(ad_summary_c)
@@ -1100,11 +1087,12 @@ class Agent(object):
1100
1087
 
1101
1088
 
1102
1089
  if not bt:
1103
- self.logger.warning("BT is None. Either Test Run is stopped or Connection is broken")
1090
+ self.logger.debug("nd_bt_begin returned NULL; skipping instrumentation for this transaction (test run is not active or internal connection error)")
1091
+ else:
1092
+ self.active_bts.add(bt)
1104
1093
  #self.logger.info("bt datatype : {0}".format(type(bt)))
1105
1094
  #print("btname value: {0}".format(btname))
1106
1095
  # print('-----------------\nCurrent heap memory stack for BT: ',bt_name,' is : ',hpy().heap())
1107
- self.active_bts.add(bt)
1108
1096
  self.set_current_bt(bt)
1109
1097
  #print("BT value of this txn: ", bt)
1110
1098
  return bt
@@ -1177,7 +1165,7 @@ class Agent(object):
1177
1165
  bt = udp.start_business_transaction(self, urlinfo, correlation_header)
1178
1166
 
1179
1167
  try:
1180
- if self.cav_env == "NATIVE":
1168
+ if self.cav_env == "NATIVE" and bt:
1181
1169
  url, http_method = str(urlinfo).rsplit("|", 1) if "|" in str(urlinfo) else (urlinfo, "")
1182
1170
  btname_value = self.get_bt_name(
1183
1171
  get_utf8_bytes(url),
@@ -7,7 +7,6 @@ import time
7
7
  import pyclbr
8
8
  import datetime
9
9
  from pythonagent.agent.internal.proc_compat import get_process_name
10
- from pythonagent.agent.probes.Instrumentation import module_version_resolver
11
10
  import hashlib
12
11
  import inspect
13
12
 
@@ -47,7 +46,7 @@ def regex_match(list_of_regex, expression):
47
46
  return 0
48
47
 
49
48
 
50
- def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_list, jar_field=''):
49
+ def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_list):
51
50
  outfromad = ""
52
51
  num_of_methods = 0
53
52
 
@@ -94,10 +93,7 @@ def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_
94
93
  joined_string = ",".join(lif)
95
94
 
96
95
  if len(joined_string)>0:
97
- # 4th field after methods is the jar-name-equivalent field (mirrors the NodeJS/Java sibling
98
- # agents' module|methods|interface|jar layout): "<pkgName>@<pkgVersion>", suffixed "(app)"
99
- # when the file belongs to the monitored application itself, or blank if unresolved.
100
- outfromad = package_and_module + "||" + joined_string + "|" + jar_field + "\n"
96
+ outfromad = package_and_module + "||" + joined_string + "\n"
101
97
  """
102
98
  if pkgname:
103
99
  #print("if pkgname")
@@ -144,7 +140,7 @@ def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_
144
140
  #if "flask" in pkgname:
145
141
  # print("joined_stringf", joined_stringf)
146
142
  if len(joined_stringf)>0:
147
- outfromad += package_and_module + "|" + class_.name + "|" + joined_stringf + "|" + jar_field + "\n"
143
+ outfromad += package_and_module + "|" + class_.name + "|" + joined_stringf + "\n"
148
144
 
149
145
  """
150
146
  if pkgname:
@@ -212,15 +208,9 @@ def find(method_filter_list, class_filter_list):
212
208
  if node is None:
213
209
  continue
214
210
 
215
- try:
216
- pkg_info = module_version_resolver.resolve(path)
217
- jar_field = module_version_resolver.format_jar_field(pkg_info)
218
- except Exception as e:
219
- jar_field = ''
220
-
221
211
  try:
222
212
  outputfromaf, methodscount = cls_mett_find(node, package_and_module, f, method_filter_list,
223
- class_filter_list, jar_field)
213
+ class_filter_list)
224
214
  except Exception as e:
225
215
  print(e)
226
216
 
@@ -151,7 +151,8 @@ class ExitCallInterceptor(BaseInterceptor):
151
151
  backend_name = backend_name or http_host
152
152
  with self.log_exceptions():
153
153
  self.agent.logger.debug("http call begin bt {} http_host {} url {} method_name {} current_time {}".format(bt, http_host, url, method_name, start_time))
154
- exit_call= self.agent.http_call_begin(bt, http_host, url, method_name, start_time) # Native
154
+ if bt:
155
+ exit_call= self.agent.http_call_begin(bt, http_host, url, method_name, start_time) # Native
155
156
  try:
156
157
  from pythonagent.agent.probes.havoc.havoc_manager import NDHavocException
157
158
  backend_name_value = self.agent.setting_backend_name_otel(backend_name, "HTTP")
@@ -167,8 +168,9 @@ class ExitCallInterceptor(BaseInterceptor):
167
168
  self.agent.logger.info("Havoc Exception {}".format(e))
168
169
  status = 503
169
170
  self.agent.set_current_status_code(503)
170
- self.agent.get_nd_header(bt, backend_name, callout_id)
171
- self.agent.http_call_end(bt, exit_call, method_name, backend_name, status, 0, start_time, callout_id)
171
+ if bt:
172
+ self.agent.get_nd_header(bt, backend_name, callout_id)
173
+ self.agent.http_call_end(bt, exit_call, method_name, backend_name, status, 0, start_time, callout_id)
172
174
  raise e
173
175
  else:
174
176
  self.agent.logger.info("Non-Havoc Exception {}".format(e))
@@ -201,7 +203,7 @@ class ExitCallInterceptor(BaseInterceptor):
201
203
 
202
204
 
203
205
  with self.log_exceptions():
204
- if not exit_call:
206
+ if bt and not exit_call:
205
207
  self.agent.logger.debug("http call end bt {} exit_call {} method_name {} backend_name {} status {} duration {} start_time {}".format(bt, exit_call, method_name, backend_name, status, duration, start_time))
206
208
  self.agent.http_call_end(bt, exit_call, method_name, backend_name, status, duration, start_time, callout_id)
207
209
 
@@ -218,7 +220,8 @@ class ExitCallInterceptor(BaseInterceptor):
218
220
  with self.log_exceptions():
219
221
  if not method_name:
220
222
  method_name = ctx.entry_point_fqm if ctx else None
221
- ip_handle = self.agent.db_call_begin(method_name, bt, db_host, db_query, query_parameters, db_start_time)
223
+ if bt:
224
+ ip_handle = self.agent.db_call_begin(method_name, bt, db_host, db_query, query_parameters, db_start_time)
222
225
  try:
223
226
 
224
227
  from pythonagent.agent.probes.havoc.havoc_manager import NDHavocException
@@ -241,7 +244,8 @@ class ExitCallInterceptor(BaseInterceptor):
241
244
  self.agent.set_current_status_code(status_code)
242
245
  if ctx:
243
246
  ctx.status_code = status_code
244
- self.agent.db_call_end(bt, ip_handle, 0, db_start_time, method_name, host_str, status_code)
247
+ if bt:
248
+ self.agent.db_call_end(bt, ip_handle, 0, db_start_time, method_name, host_str, status_code)
245
249
  raise e
246
250
  else:
247
251
  self.agent.logger.info("Non-Havoc Exception {}".format(e))
@@ -62,9 +62,9 @@ class AIOHTTPWebInterceptor(BaseInterceptor):
62
62
 
63
63
  bt = self.agent.start_business_transaction(bt_name, correlation_header, nd_cookie_value,
64
64
  nv_cookie_value, bt_header_value, fp_instance)
65
- print("bt", bt)
66
65
 
67
- self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
66
+ if bt:
67
+ self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
68
68
 
69
69
  except Exception as e:
70
70
  self.agent.logger.exception("Exception in Start BT for AIOHTTP Web {}".format(e))
@@ -81,7 +81,8 @@ class AIOHTTPWebInterceptor(BaseInterceptor):
81
81
  cpu_time_after = get_current_thread_time_in_us()
82
82
  cpu_time = cpu_time_after - (cpu_time_before or 0)
83
83
  self.agent.set_current_status_code(503)
84
- self.agent.end_business_transaction(bt, cpu_time)
84
+ if bt:
85
+ self.agent.end_business_transaction(bt, cpu_time)
85
86
  self.agent.havoc_monitor.refresh_configs(self.agent)
86
87
  raise e
87
88
  else:
@@ -104,7 +105,8 @@ class AIOHTTPWebInterceptor(BaseInterceptor):
104
105
  if self.agent.header_in_response:
105
106
  x_cav_nv = get_true_false(self.agent.header_in_response)
106
107
 
107
- nd_cookie_value = self.agent.sdk_getNDSessionCookie(bt).decode()
108
+ nd_cookie_value_raw = self.agent.sdk_getNDSessionCookie(bt)
109
+ nd_cookie_value = nd_cookie_value_raw.decode() if nd_cookie_value_raw else None
108
110
 
109
111
  if nd_cookie_key: # CavNV Enabled
110
112
  if nd_cookie_value:
@@ -81,7 +81,8 @@ class ASGIInterceptor(EntryPointInterceptor):
81
81
  except Exception as e:
82
82
  self.agent.logger.debug("Could not build entry_point_fqm: {}".format(e))
83
83
 
84
- self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
84
+ if bt:
85
+ self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
85
86
 
86
87
  except Exception as e:
87
88
  self.agent.logger.exception("Exception in Start BT for ASGI {}".format(e))
@@ -98,7 +99,8 @@ class ASGIInterceptor(EntryPointInterceptor):
98
99
  cpu_time_after = get_current_thread_time_in_us()
99
100
  cpu_time = cpu_time_after - (cpu_time_before or 0)
100
101
  self.agent.set_current_status_code(503)
101
- self.agent.end_business_transaction(bt, cpu_time)
102
+ if bt:
103
+ self.agent.end_business_transaction(bt, cpu_time)
102
104
  self.agent.havoc_monitor.refresh_configs(self.agent)
103
105
  raise e
104
106
  else:
@@ -143,7 +145,7 @@ class ASGIInterceptor(EntryPointInterceptor):
143
145
  # when multiple async requests share one OS thread.
144
146
  bt = other_info.get("bt")
145
147
 
146
- if send_event_dict.get('type') == 'http.response.start':
148
+ if bt and send_event_dict.get('type') == 'http.response.start':
147
149
  status = send_event_dict.get('status', 200)
148
150
 
149
151
  # Inject session cookies before forwarding the response start event
@@ -39,7 +39,8 @@ class Tornado_async_RequestHandlerInterceptor(EntryPointInterceptor):
39
39
  correlation_header = ""
40
40
  cpu_time_before = get_current_thread_time_in_us()
41
41
  bt = self.start_business_transaction(bt_name, correlation_header, nd_cookie_value, nv_cookie_value, bt_header_value, fp_instance)
42
- self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
42
+ if bt:
43
+ self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
43
44
  self.agent.logger.debug("Modulename: Tornado_async_RequestHandlerInterceptor class || bt value is :{0}".format(bt))
44
45
  except Exception as e:
45
46
  self.agent.logger.exception("Error in Tornado_async_RequestHandlerInterceptor class start business transaction", e)
@@ -59,7 +60,8 @@ class Tornado_async_RequestHandlerInterceptor(EntryPointInterceptor):
59
60
  x_cav_nv = get_true_false(self.agent.header_in_response)
60
61
 
61
62
  result_headers = handler._headers
62
- nd_cookie_value = self.agent.sdk_getNDSessionCookie(bt).decode()
63
+ nd_cookie_value_raw = self.agent.sdk_getNDSessionCookie(bt)
64
+ nd_cookie_value = nd_cookie_value_raw.decode() if nd_cookie_value_raw else None
63
65
  if nd_cookie_key: # CavNV Enabled
64
66
  if nd_cookie_value:
65
67
  nd_cookie_str = "{}={}".format(nd_cookie_key, nd_cookie_value)
@@ -99,7 +99,8 @@ class WSGIInterceptor(EntryPointInterceptor):
99
99
  except Exception as e:
100
100
  self.agent.logger.debug("Could not build entry_point_fqm: {}".format(e))
101
101
 
102
- self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
102
+ if bt:
103
+ self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
103
104
 
104
105
  # Invoking inbound havoc failure at the entry of the instrumented method
105
106
  # so that the transaction fails at the start and does not continue
@@ -113,7 +114,8 @@ class WSGIInterceptor(EntryPointInterceptor):
113
114
  self.agent.set_current_status_code(503)
114
115
  cpu_time_after = get_current_thread_time_in_us()
115
116
  cpu_time = cpu_time_after - cpu_time_before
116
- rc = self.agent.end_business_transaction(bt, cpu_time)
117
+ if bt:
118
+ rc = self.agent.end_business_transaction(bt, cpu_time)
117
119
  raise e
118
120
  else:
119
121
  self.agent.logger.debug("Non-Havoc Exception {}".format(e))
@@ -147,7 +149,7 @@ class WSGIInterceptor(EntryPointInterceptor):
147
149
  duration = get_validated_duration(before_time, after_time, fqmforentry)
148
150
  if bt:
149
151
  self.agent.method_exit(bt, fqmforentry, duration, cpu_time, before_time)
150
- self.end_business_transaction(bt, cpu_time)
152
+ self.end_business_transaction(bt, cpu_time)
151
153
 
152
154
  return response
153
155
 
@@ -108,7 +108,8 @@ class NDGrpcServerInterceptor(EntryPointInterceptor, grpc.ServerInterceptor):
108
108
  self._handle_exception(bt)
109
109
  self._finish(bt, cpu_time_before)
110
110
  raise
111
- self.handle_http_status_code(bt, get_status_code(), "")
111
+ if bt:
112
+ self.handle_http_status_code(bt, get_status_code(), "")
112
113
  self._finish(bt, cpu_time_before)
113
114
  return response
114
115
  return wrapped
@@ -124,6 +125,7 @@ class NDGrpcServerInterceptor(EntryPointInterceptor, grpc.ServerInterceptor):
124
125
  self._handle_exception(bt)
125
126
  self._finish(bt, cpu_time_before)
126
127
  raise
127
- self.handle_http_status_code(bt, get_status_code(), "")
128
+ if bt:
129
+ self.handle_http_status_code(bt, get_status_code(), "")
128
130
  self._finish(bt, cpu_time_before)
129
131
  return wrapped
@@ -23,14 +23,15 @@ class AsyncioHTTPClientInterceptor(ExitCallInterceptor):
23
23
  host_port = "NA|default_host|default_port|default_url"
24
24
 
25
25
  mName = _request.__module__ + "." + _request.__qualname__
26
- headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
26
+ if self.bt:
27
+ headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
27
28
 
28
- client_session_object = args[0]
29
+ client_session_object = args[0]
29
30
 
30
- if client_session_object._default_headers:
31
- client_session_object._default_headers["CavNDFPInstance"] = headers_value
32
- else:
33
- client_session_object._default_headers = {"CavNDFPInstance": headers_value}
31
+ if client_session_object._default_headers:
32
+ client_session_object._default_headers["CavNDFPInstance"] = headers_value
33
+ else:
34
+ client_session_object._default_headers = {"CavNDFPInstance": headers_value}
34
35
 
35
36
  bt = self.bt
36
37
  start_time = get_current_timestamp_in_us()
@@ -28,14 +28,15 @@ class HTTPXAsyncClientInterceptor(ExitCallInterceptor):
28
28
 
29
29
  bt = self.bt
30
30
  mName = send.__module__ + "." + send.__qualname__
31
- headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
31
+ if bt:
32
+ headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
32
33
 
33
- client_session_object = args[0]
34
+ client_session_object = args[0]
34
35
 
35
- if client_session_object._headers:
36
- client_session_object._headers["CavNDFPInstance"] = headers_value
37
- else:
38
- client_session_object._headers = {"CavNDFPInstance": headers_value}
36
+ if client_session_object._headers:
37
+ client_session_object._headers["CavNDFPInstance"] = headers_value
38
+ else:
39
+ client_session_object._headers = {"CavNDFPInstance": headers_value}
39
40
 
40
41
 
41
42
  start_time = get_current_timestamp_in_us()
@@ -82,12 +83,13 @@ class HTTPXClientInterceptor(ExitCallInterceptor):
82
83
  bt = self.bt
83
84
  mName = send.__module__ + "." + send.__qualname__
84
85
 
85
- headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
86
- client_session_object = args[0]
87
- if client_session_object._headers:
88
- client_session_object._headers["CavNDFPInstance"] = headers_value
89
- else:
90
- client_session_object._headers = {"CavNDFPInstance": headers_value}
86
+ if bt:
87
+ headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
88
+ client_session_object = args[0]
89
+ if client_session_object._headers:
90
+ client_session_object._headers["CavNDFPInstance"] = headers_value
91
+ else:
92
+ client_session_object._headers = {"CavNDFPInstance": headers_value}
91
93
 
92
94
  start_time = get_current_timestamp_in_us()
93
95
  exit_call = self.http_call_begin(bt, host_port, url, mName, start_time, host_port, unique_id)
@@ -86,7 +86,8 @@ class LangChainBaseToolInterceptor(ExitCallInterceptor):
86
86
  self.agent.logger.info("langchain base tool sending tool span {}".format(tool_span_json))
87
87
 
88
88
  # SDK API call to send logs to NF
89
- self.agent.dump_log_message(bt, tool_span_json)
89
+ if bt:
90
+ self.agent.dump_log_message(bt, tool_span_json)
90
91
 
91
92
  except Exception as e:
92
93
  self.agent.logger.exception("langchain base tool db call begin {}".format(e))
@@ -107,7 +107,8 @@ class LangChainCommunityVectorStoreInterceptor(ExitCallInterceptor):
107
107
  # SDK API call to send logs to NF
108
108
  if self.agent.logger.isEnabledFor(logging.INFO):
109
109
  self.agent.logger.info("langchain community vectordb sending vectordb span {}".format(retrieval_span_json))
110
- self.agent.dump_log_message(bt, retrieval_span_json)
110
+ if bt:
111
+ self.agent.dump_log_message(bt, retrieval_span_json)
111
112
 
112
113
  except Exception as e:
113
114
  self.agent.logger.exception("Exception in langchain community vectorstore db call end {}".format(e))
@@ -94,7 +94,8 @@ class LangChainOpenAIEmbeddingsInterceptor(ExitCallInterceptor):
94
94
  # SDK API call to send logs to NF
95
95
  if self.agent.logger.isEnabledFor(logging.INFO):
96
96
  self.agent.logger.info("langchain openai embeddings sending embeddings span {}".format(embedding_span_json))
97
- self.agent.dump_log_message(bt, embedding_span_json)
97
+ if bt:
98
+ self.agent.dump_log_message(bt, embedding_span_json)
98
99
 
99
100
  except Exception as e:
100
101
  self.agent.logger.exception("langchain openai embeddings db call end {}".format(e))
@@ -57,14 +57,15 @@ class PikaBlockingChannelInterceptor(BaseInterceptor):
57
57
  exit_call = self.agent.db_call_begin(self.bt, host_name_str, db_query, db_query_params, db_start_time)
58
58
 
59
59
  # Injecting custom headers
60
- headers_value = self.agent.get_nd_header(self.bt, host_name_str, generate_callout_id()).decode()
61
- properties = kwargs.get('properties', None)
62
- if properties:
63
- if properties.headers:
64
- properties.headers["CavNDFPInstance"] = headers_value
65
- else:
66
- properties.headers = {}
67
- properties.headers["CavNDFPInstance"] = headers_value
60
+ if self.bt:
61
+ headers_value = self.agent.get_nd_header(self.bt, host_name_str, generate_callout_id()).decode()
62
+ properties = kwargs.get('properties', None)
63
+ if properties:
64
+ if properties.headers:
65
+ properties.headers["CavNDFPInstance"] = headers_value
66
+ else:
67
+ properties.headers = {}
68
+ properties.headers["CavNDFPInstance"] = headers_value
68
69
 
69
70
  except Exception as e:
70
71
  self.agent.logger.warning("Exception in DB Begin for pika BlockingChannel.basic_publish {}".format(e))
@@ -175,7 +175,8 @@ def _record_llm_span(interceptor, bt, fqm, start_time, duration, context,
175
175
  )
176
176
  if interceptor.agent.logger.isEnabledFor(logging.INFO):
177
177
  interceptor.agent.logger.info("openai llm sending llm span output={}".format(output))
178
- interceptor.agent.dump_log_message(bt, llm_span.create_span_json())
178
+ if bt:
179
+ interceptor.agent.dump_log_message(bt, llm_span.create_span_json())
179
180
 
180
181
 
181
182
  def _record_call_success(interceptor, bt, exit_call, start_time, fqm, context,
@@ -635,7 +636,8 @@ def _record_embedding_span(interceptor, bt, exit_call, start_time, fqm,
635
636
  interceptor.agent.logger.info(
636
637
  "openai embeddings sending span output={}".format(output)
637
638
  )
638
- interceptor.agent.dump_log_message(bt, embedding_span.create_span_json())
639
+ if bt:
640
+ interceptor.agent.dump_log_message(bt, embedding_span.create_span_json())
639
641
 
640
642
 
641
643
  class OpenAIEmbeddingsInterceptor(ExitCallInterceptor):