appmap 2.1.6__tar.gz → 2.1.8__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 (183) hide show
  1. {appmap-2.1.6 → appmap-2.1.8}/PKG-INFO +5 -5
  2. {appmap-2.1.6 → appmap-2.1.8}/README.md +3 -4
  3. {appmap-2.1.6 → appmap-2.1.8}/_appmap/env.py +14 -13
  4. {appmap-2.1.6 → appmap-2.1.8}/_appmap/recording.py +3 -1
  5. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/conftest.py +2 -0
  6. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_events.py +1 -2
  7. {appmap-2.1.6 → appmap-2.1.8}/appmap/__init__.py +6 -1
  8. {appmap-2.1.6 → appmap-2.1.8}/pyproject.toml +1 -1
  9. {appmap-2.1.6 → appmap-2.1.8}/LICENSE +0 -0
  10. {appmap-2.1.6 → appmap-2.1.8}/_appmap/__init__.py +0 -0
  11. {appmap-2.1.6 → appmap-2.1.8}/_appmap/configuration.py +0 -0
  12. {appmap-2.1.6 → appmap-2.1.8}/_appmap/django.py +0 -0
  13. {appmap-2.1.6 → appmap-2.1.8}/_appmap/event.py +0 -0
  14. {appmap-2.1.6 → appmap-2.1.8}/_appmap/fastapi.py +0 -0
  15. {appmap-2.1.6 → appmap-2.1.8}/_appmap/flask.py +0 -0
  16. {appmap-2.1.6 → appmap-2.1.8}/_appmap/generation.py +0 -0
  17. {appmap-2.1.6 → appmap-2.1.8}/_appmap/importer.py +0 -0
  18. {appmap-2.1.6 → appmap-2.1.8}/_appmap/instrument.py +0 -0
  19. {appmap-2.1.6 → appmap-2.1.8}/_appmap/labels.py +0 -0
  20. {appmap-2.1.6 → appmap-2.1.8}/_appmap/metadata.py +0 -0
  21. {appmap-2.1.6 → appmap-2.1.8}/_appmap/noappmap.py +0 -0
  22. {appmap-2.1.6 → appmap-2.1.8}/_appmap/py_version_check.py +0 -0
  23. {appmap-2.1.6 → appmap-2.1.8}/_appmap/recorder.py +0 -0
  24. {appmap-2.1.6 → appmap-2.1.8}/_appmap/remote_recording.py +0 -0
  25. {appmap-2.1.6 → appmap-2.1.8}/_appmap/singleton.py +0 -0
  26. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/__init__.py +0 -0
  27. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/appmap_test_base.py +0 -0
  28. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/bin/server_runner +0 -0
  29. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-all-paths-malformed.yml +0 -0
  30. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-broken.yml +0 -0
  31. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-class.yml +0 -0
  32. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-empty-path.yml +0 -0
  33. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-exclude-fn.yml +0 -0
  34. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-func.yml +0 -0
  35. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-malformed-path.yml +0 -0
  36. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap-no-pyyaml.yml +0 -0
  37. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap.yml +0 -0
  38. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap_testing/__init__.py +0 -0
  39. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/appmap_testing/django_simplelazyobject.py +0 -0
  40. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config/src/package/__init__.py +0 -0
  41. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config/test/__init__.py +0 -0
  42. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config/test/foo.py +0 -0
  43. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-exclude/.hide/hidden_mod/__init__.py +0 -0
  44. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-exclude/node_modules/node_mod/__init__.py +0 -0
  45. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-exclude/src/package/__init__.py +0 -0
  46. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-exclude/test/__init__.py +0 -0
  47. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-exclude/venv/venv_mod/__init__.py +0 -0
  48. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-up/appmap.yml +0 -0
  49. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-up/project/p1/__init__.py +0 -0
  50. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/config-up/project/p2/sub1/__init__.py +0 -0
  51. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/appmap.yml +0 -0
  52. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/__init__.py +0 -0
  53. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/djangoapp.py +0 -0
  54. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/hello_world.html +0 -0
  55. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/middleware.py +0 -0
  56. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/settings.py +0 -0
  57. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/settings_dev.py +0 -0
  58. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/djangoapp/urls.py +0 -0
  59. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/init/sitecustomize.py +0 -0
  60. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/manage.py +0 -0
  61. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/pytest.ini +0 -0
  62. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/test/__init__.py +0 -0
  63. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/test/test_app.py +0 -0
  64. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/test/test_request.py +0 -0
  65. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/django/test/test_unittest_setup.py +0 -0
  66. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/example_class.py +0 -0
  67. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/expected.appmap.json +0 -0
  68. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/fastapi/appmap.yml +0 -0
  69. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/fastapi/fastapiapp/__init__.py +0 -0
  70. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/fastapi/fastapiapp/main.py +0 -0
  71. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/fastapi/init/sitecustomize.py +0 -0
  72. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/fastapi/test_app.py +0 -0
  73. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask/appmap.yml +0 -0
  74. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask/flaskapp.py +0 -0
  75. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask/init/sitecustomize.py +0 -0
  76. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask/templates/test.html +0 -0
  77. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask/test_app.py +0 -0
  78. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask-instrumented/appmap.yml +0 -0
  79. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask-instrumented/flaskapp.py +0 -0
  80. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask-instrumented/init/sitecustomize.py +0 -0
  81. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/flask-instrumented/test_app.py +0 -0
  82. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/package1/__init__.py +0 -0
  83. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/package1/package2/__init__.py +0 -0
  84. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/package1/package2/__main__.py +0 -0
  85. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/package1/package2/mod1.py +0 -0
  86. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/params.py +0 -0
  87. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/properties_class.py +0 -0
  88. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/appmap-no-test-cases.yml +0 -0
  89. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/appmap.yml +0 -0
  90. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/pytest-numpy1-no-test-cases.appmap.json +0 -0
  91. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/pytest-numpy1.appmap.json +0 -0
  92. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/pytest-numpy2-no-test-cases.appmap.json +0 -0
  93. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/pytest-numpy2.appmap.json +0 -0
  94. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/status_errored.metadata.json +0 -0
  95. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/status_failed.metadata.json +0 -0
  96. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/expected/status_xfailed.metadata.json +0 -0
  97. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/simple.py +0 -0
  98. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/tests/__init__.py +0 -0
  99. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/tests/test_noappmap.py +0 -0
  100. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest/tests/test_simple.py +0 -0
  101. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest-instrumented/appmap.yml +0 -0
  102. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest-instrumented/init/sitecustomize.py +0 -0
  103. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/pytest-instrumented/test_instrumented.py +0 -0
  104. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/remote.appmap.json +0 -0
  105. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/.gitignore +0 -0
  106. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/appmap-no-test-cases.yml +0 -0
  107. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/appmap.yml +0 -0
  108. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/expected/pytest-no-test-cases.appmap.json +0 -0
  109. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/expected/pytest.appmap.json +0 -0
  110. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/init/sitecustomize.py +0 -0
  111. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/test/__init__.py +0 -0
  112. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/trial/test/test_deferred.py +0 -0
  113. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/appmap-no-test-cases.yml +0 -0
  114. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/appmap.yml +0 -0
  115. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/pytest.appmap.json +0 -0
  116. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/status_errored.metadata.json +0 -0
  117. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/status_failed.metadata.json +0 -0
  118. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/status_xfailed.metadata.json +0 -0
  119. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/status_xsucceeded.metadata.json +0 -0
  120. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/unittest-no-test-cases.appmap.json +0 -0
  121. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/expected/unittest.appmap.json +0 -0
  122. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/init/sitecustomize.py +0 -0
  123. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/simple/__init__.py +0 -0
  124. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/simple/test_noappmap.py +0 -0
  125. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/data/unittest/simple/test_simple.py +0 -0
  126. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/helpers.py +0 -0
  127. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/normalize.py +0 -0
  128. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_command.py +0 -0
  129. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_configuration.py +0 -0
  130. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_describe_value.py +0 -0
  131. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_django.py +0 -0
  132. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_django_simplelazyobject.py +0 -0
  133. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_env.py +0 -0
  134. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_fastapi.py +0 -0
  135. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_flask.py +0 -0
  136. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_generation.py +0 -0
  137. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_http.py +0 -0
  138. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_importer.py +0 -0
  139. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_labels.py +0 -0
  140. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_metadata.py +0 -0
  141. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_params.py +0 -0
  142. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_properties.py +0 -0
  143. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_recording.py +0 -0
  144. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_runner.py +0 -0
  145. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_sqlalchemy.py +0 -0
  146. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_test_frameworks.py +0 -0
  147. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/test_util.py +0 -0
  148. {appmap-2.1.6 → appmap-2.1.8}/_appmap/test/web_framework.py +0 -0
  149. {appmap-2.1.6 → appmap-2.1.8}/_appmap/testing_framework.py +0 -0
  150. {appmap-2.1.6 → appmap-2.1.8}/_appmap/trace_logger.py +0 -0
  151. {appmap-2.1.6 → appmap-2.1.8}/_appmap/unittest.py +0 -0
  152. {appmap-2.1.6 → appmap-2.1.8}/_appmap/utils.py +0 -0
  153. {appmap-2.1.6 → appmap-2.1.8}/_appmap/web_framework.py +0 -0
  154. {appmap-2.1.6 → appmap-2.1.8}/appmap/command/__init__.py +0 -0
  155. {appmap-2.1.6 → appmap-2.1.8}/appmap/command/appmap_agent_init.py +0 -0
  156. {appmap-2.1.6 → appmap-2.1.8}/appmap/command/appmap_agent_status.py +0 -0
  157. {appmap-2.1.6 → appmap-2.1.8}/appmap/command/appmap_agent_validate.py +0 -0
  158. {appmap-2.1.6 → appmap-2.1.8}/appmap/command/runner.py +0 -0
  159. {appmap-2.1.6 → appmap-2.1.8}/appmap/django.py +0 -0
  160. {appmap-2.1.6 → appmap-2.1.8}/appmap/fastapi.py +0 -0
  161. {appmap-2.1.6 → appmap-2.1.8}/appmap/flask.py +0 -0
  162. {appmap-2.1.6 → appmap-2.1.8}/appmap/http.py +0 -0
  163. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/__init__.py +0 -0
  164. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/crypto.yml +0 -0
  165. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/django.yml +0 -0
  166. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/flask.yml +0 -0
  167. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/formats.yml +0 -0
  168. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/http.yml +0 -0
  169. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/jobs.yml +0 -0
  170. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/jwt.yml +0 -0
  171. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/logger.yml +0 -0
  172. {appmap-2.1.6 → appmap-2.1.8}/appmap/labeling/random.yml +0 -0
  173. {appmap-2.1.6 → appmap-2.1.8}/appmap/pytest.py +0 -0
  174. {appmap-2.1.6 → appmap-2.1.8}/appmap/sqlalchemy.py +0 -0
  175. {appmap-2.1.6 → appmap-2.1.8}/appmap/unittest.py +0 -0
  176. {appmap-2.1.6 → appmap-2.1.8}/appmap/uvicorn.py +0 -0
  177. {appmap-2.1.6 → appmap-2.1.8}/appmap.pth +0 -0
  178. {appmap-2.1.6 → appmap-2.1.8}/vendor/_appmap/wrapt/LICENSE +0 -0
  179. {appmap-2.1.6 → appmap-2.1.8}/vendor/_appmap/wrapt/__init__.py +0 -0
  180. {appmap-2.1.6 → appmap-2.1.8}/vendor/_appmap/wrapt/arguments.py +0 -0
  181. {appmap-2.1.6 → appmap-2.1.8}/vendor/_appmap/wrapt/decorators.py +0 -0
  182. {appmap-2.1.6 → appmap-2.1.8}/vendor/_appmap/wrapt/importer.py +0 -0
  183. {appmap-2.1.6 → appmap-2.1.8}/vendor/_appmap/wrapt/wrappers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: appmap
3
- Version: 2.1.6
3
+ Version: 2.1.8
4
4
  Summary: Create AppMap files by recording a Python application.
5
5
  Home-page: https://github.com/applandinc/appmap-python
6
6
  License: MIT
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
23
24
  Classifier: Topic :: Software Development
24
25
  Classifier: Topic :: Software Development :: Debuggers
25
26
  Classifier: Topic :: Software Development :: Documentation
@@ -121,16 +122,15 @@ Note that you must install the dependencies contained in
121
122
  [requirements-dev.txt](requirements-dev.txt) before running tests. See the explanation in
122
123
  [pyproject.toml](pyproject.toml) for details.
123
124
 
124
- Additionally, the tests currently require that you set `APPMAP=true`. You can
125
- either run `pytest` with `appmap-python` (see [tox.ini](tox.ini)), or you can explicitly
126
- set the environment variable.
125
+ Additionally, the tests currently require that you set `APPMAP=true` and
126
+ `APPMAP_DISPLAY_PARAMS=true`.
127
127
 
128
128
  [pytest](https://docs.pytest.org/en/stable/) for testing:
129
129
 
130
130
  ```
131
131
  % cd appmap-python
132
132
  % pip install -r requirements-test.txt
133
- % poetry run pytest
133
+ % APPMAP=true APPMAP_DISPLAY_PARAMS=true poetry run pytest
134
134
  ```
135
135
 
136
136
  ### tox
@@ -90,16 +90,15 @@ Note that you must install the dependencies contained in
90
90
  [requirements-dev.txt](requirements-dev.txt) before running tests. See the explanation in
91
91
  [pyproject.toml](pyproject.toml) for details.
92
92
 
93
- Additionally, the tests currently require that you set `APPMAP=true`. You can
94
- either run `pytest` with `appmap-python` (see [tox.ini](tox.ini)), or you can explicitly
95
- set the environment variable.
93
+ Additionally, the tests currently require that you set `APPMAP=true` and
94
+ `APPMAP_DISPLAY_PARAMS=true`.
96
95
 
97
96
  [pytest](https://docs.pytest.org/en/stable/) for testing:
98
97
 
99
98
  ```
100
99
  % cd appmap-python
101
100
  % pip install -r requirements-test.txt
102
- % poetry run pytest
101
+ % APPMAP=true APPMAP_DISPLAY_PARAMS=true poetry run pytest
103
102
  ```
104
103
 
105
104
  ### tox
@@ -1,5 +1,6 @@
1
1
  """Initialize from the environment"""
2
2
 
3
+ from functools import cached_property
3
4
  import logging
4
5
  import logging.config
5
6
  import os
@@ -39,13 +40,13 @@ class Env(metaclass=SingletonMeta):
39
40
 
40
41
  self.log_file_creation_failed = False
41
42
  self._configure_logging()
42
- # This uses _APPMAP, rather than APPMAP, to control whether instrumentation is enabled. The
43
- # tests use this split to make it easier to control recording.
44
- enabled = self._env.get("_APPMAP", "false")
45
- self._enabled = enabled is None or enabled.lower() != "false"
46
-
47
- self._root_dir = str(self._cwd) + "/"
48
- self._root_dir_len = len(self._root_dir)
43
+ # This uses the underscore-decorated, rather than the undecorated variants, to control
44
+ # whether these settings are enabled. The tests use this split to make it easier to control
45
+ # them.
46
+ enabled = self._env.get("_APPMAP", None)
47
+ self._enabled = enabled is not None and enabled.lower() != "false"
48
+ display_params = self._env.get("_APPMAP_DISPLAY_PARAMS", None)
49
+ self._display_params = display_params is not None and display_params.lower() != "false"
49
50
 
50
51
  logger = logging.getLogger(__name__)
51
52
  # The user shouldn't set APPMAP_OUTPUT_DIR, but some tests depend on being able to use it.
@@ -69,13 +70,13 @@ class Env(metaclass=SingletonMeta):
69
70
  def delete(self, name):
70
71
  del self._env[name]
71
72
 
72
- @property
73
+ @cached_property
73
74
  def root_dir(self):
74
- return self._root_dir
75
+ return str(self._cwd) + "/"
75
76
 
76
- @property
77
+ @cached_property
77
78
  def root_dir_len(self):
78
- return self._root_dir_len
79
+ return len(self.root_dir)
79
80
 
80
81
  @property
81
82
  def output_dir(self):
@@ -123,7 +124,7 @@ class Env(metaclass=SingletonMeta):
123
124
  if value:
124
125
  self.set(key, value)
125
126
 
126
- @property
127
+ @cached_property
127
128
  def is_appmap_repo(self):
128
129
  return os.path.exists("appmap/__init__.py") and os.path.exists(
129
130
  "_appmap/__init__.py"
@@ -131,7 +132,7 @@ class Env(metaclass=SingletonMeta):
131
132
 
132
133
  @property
133
134
  def display_params(self):
134
- return self.get("APPMAP_DISPLAY_PARAMS", "true").lower() == "true"
135
+ return self._display_params
135
136
 
136
137
  def getLogger(self, name) -> trace_logger.TraceLogger:
137
138
  return cast(trace_logger.TraceLogger, logging.getLogger(name))
@@ -115,7 +115,9 @@ def initialize():
115
115
  nonlocal r
116
116
  r.stop()
117
117
  now = datetime.now(timezone.utc)
118
- appmap_name = now.isoformat(timespec="seconds").replace("+00:00", "Z")
118
+ iso_time = now.isoformat(timespec="seconds").replace("+00:00", "Z")
119
+ process_id = os.getpid()
120
+ appmap_name = f"{iso_time}_{process_id}"
119
121
  recorder_type = "process"
120
122
  metadata = {
121
123
  "name": appmap_name,
@@ -68,6 +68,8 @@ def pytest_runtest_setup(item):
68
68
  elif appmap_enabled is None:
69
69
  env.pop("_APPMAP", None)
70
70
 
71
+ env["_APPMAP_DISPLAY_PARAMS"] = env.get("APPMAP_DISPLAY_PARAMS", "true")
72
+
71
73
  _appmap.initialize(env=env) # pylint: disable=protected-access
72
74
 
73
75
  # Some tests want yaml instrumented, others don't.
@@ -9,7 +9,6 @@ from threading import Thread
9
9
  import pytest
10
10
 
11
11
  import appmap
12
- from _appmap.env import Env
13
12
  from _appmap.event import _EventIds
14
13
 
15
14
 
@@ -84,8 +83,8 @@ class TestEvents:
84
83
  actual_value = r.events[0].parameters[0]["value"]
85
84
  assert re.fullmatch(expected_re, actual_value)
86
85
 
86
+ @pytest.mark.appmap_enabled(env={"APPMAP_DISPLAY_PARAMS": "false"})
87
87
  def test_when_display_disabled(self, mocker):
88
- Env.current.set("APPMAP_DISPLAY_PARAMS", "false")
89
88
  r = appmap.Recording()
90
89
  with r:
91
90
  from example_class import ExampleClass # pylint: disable=import-outside-toplevel
@@ -11,8 +11,11 @@ _enabled = os.environ.get("APPMAP", None)
11
11
  _recording_exported = False
12
12
  if _enabled is None or _enabled.upper() == "TRUE":
13
13
  if _enabled is not None:
14
- # Use setdefault so tests can manage _APPMAP as necessary
14
+ # Use setdefault so tests can manage settings as necessary
15
15
  os.environ.setdefault("_APPMAP", _enabled)
16
+ _display_params = os.environ.get("APPMAP_DISPLAY_PARAMS", "false")
17
+ os.environ.setdefault("_APPMAP_DISPLAY_PARAMS", _display_params)
18
+
16
19
  from _appmap import generation # noqa: F401
17
20
  from _appmap.env import Env # noqa: F401
18
21
  from _appmap.importer import instrument_module # noqa: F401
@@ -52,8 +55,10 @@ if _enabled is None or _enabled.upper() == "TRUE":
52
55
  return Env.current.enabled
53
56
  else:
54
57
  os.environ.pop("_APPMAP", None)
58
+ os.environ.pop("_APPMAP_DISPLAY_PARAMS", None)
55
59
  else:
56
60
  os.environ.setdefault("_APPMAP", "false")
61
+ os.environ.setdefault("_APPMAP_DISPLAY_PARAMS", "false")
57
62
 
58
63
  if not _recording_exported:
59
64
  # Client code that imports appmap.Recording should run correctly
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "appmap"
3
- version = "2.1.6"
3
+ version = "2.1.8"
4
4
  description = "Create AppMap files by recording a Python application."
5
5
  readme = "README.md"
6
6
  authors = [
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
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
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
File without changes
File without changes
File without changes