appmap 2.0.5__tar.gz → 2.0.7__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 (163) hide show
  1. {appmap-2.0.5 → appmap-2.0.7}/PKG-INFO +1 -1
  2. {appmap-2.0.5 → appmap-2.0.7}/_appmap/event.py +5 -1
  3. {appmap-2.0.5 → appmap-2.0.7}/_appmap/instrument.py +2 -1
  4. {appmap-2.0.5 → appmap-2.0.7}/_appmap/recorder.py +1 -1
  5. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/example_class.py +3 -0
  6. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_events.py +12 -0
  7. {appmap-2.0.5 → appmap-2.0.7}/pyproject.toml +1 -1
  8. {appmap-2.0.5 → appmap-2.0.7}/LICENSE +0 -0
  9. {appmap-2.0.5 → appmap-2.0.7}/README.md +0 -0
  10. {appmap-2.0.5 → appmap-2.0.7}/_appmap/__init__.py +0 -0
  11. {appmap-2.0.5 → appmap-2.0.7}/_appmap/configuration.py +0 -0
  12. {appmap-2.0.5 → appmap-2.0.7}/_appmap/django.py +0 -0
  13. {appmap-2.0.5 → appmap-2.0.7}/_appmap/env.py +0 -0
  14. {appmap-2.0.5 → appmap-2.0.7}/_appmap/fastapi.py +0 -0
  15. {appmap-2.0.5 → appmap-2.0.7}/_appmap/flask.py +0 -0
  16. {appmap-2.0.5 → appmap-2.0.7}/_appmap/generation.py +0 -0
  17. {appmap-2.0.5 → appmap-2.0.7}/_appmap/importer.py +0 -0
  18. {appmap-2.0.5 → appmap-2.0.7}/_appmap/labels.py +0 -0
  19. {appmap-2.0.5 → appmap-2.0.7}/_appmap/metadata.py +0 -0
  20. {appmap-2.0.5 → appmap-2.0.7}/_appmap/noappmap.py +0 -0
  21. {appmap-2.0.5 → appmap-2.0.7}/_appmap/py_version_check.py +0 -0
  22. {appmap-2.0.5 → appmap-2.0.7}/_appmap/recording.py +0 -0
  23. {appmap-2.0.5 → appmap-2.0.7}/_appmap/remote_recording.py +0 -0
  24. {appmap-2.0.5 → appmap-2.0.7}/_appmap/singleton.py +0 -0
  25. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/__init__.py +0 -0
  26. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/appmap_test_base.py +0 -0
  27. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/bin/server_runner +0 -0
  28. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/conftest.py +0 -0
  29. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-all-paths-malformed.yml +0 -0
  30. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-broken.yml +0 -0
  31. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-class.yml +0 -0
  32. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-empty-path.yml +0 -0
  33. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-exclude-fn.yml +0 -0
  34. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-func.yml +0 -0
  35. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-malformed-path.yml +0 -0
  36. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap-no-pyyaml.yml +0 -0
  37. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap.yml +0 -0
  38. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap_testing/__init__.py +0 -0
  39. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/appmap_testing/django_simplelazyobject.py +0 -0
  40. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config/src/package/__init__.py +0 -0
  41. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config/test/__init__.py +0 -0
  42. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config/test/foo.py +0 -0
  43. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-exclude/.hide/hidden_mod/__init__.py +0 -0
  44. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-exclude/node_modules/node_mod/__init__.py +0 -0
  45. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-exclude/src/package/__init__.py +0 -0
  46. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-exclude/test/__init__.py +0 -0
  47. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-exclude/venv/venv_mod/__init__.py +0 -0
  48. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-up/appmap.yml +0 -0
  49. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-up/project/p1/__init__.py +0 -0
  50. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/config-up/project/p2/sub1/__init__.py +0 -0
  51. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/appmap.yml +0 -0
  52. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/__init__.py +0 -0
  53. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/djangoapp.py +0 -0
  54. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/hello_world.html +0 -0
  55. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/middleware.py +0 -0
  56. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/settings.py +0 -0
  57. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/settings_dev.py +0 -0
  58. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/djangoapp/urls.py +0 -0
  59. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/init/sitecustomize.py +0 -0
  60. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/manage.py +0 -0
  61. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/pytest.ini +0 -0
  62. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/test/__init__.py +0 -0
  63. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/django/test/test_app.py +0 -0
  64. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/expected.appmap.json +0 -0
  65. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/fastapi/appmap.yml +0 -0
  66. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/fastapi/fastapiapp/__init__.py +0 -0
  67. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/fastapi/fastapiapp/main.py +0 -0
  68. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/fastapi/init/sitecustomize.py +0 -0
  69. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/fastapi/test_app.py +0 -0
  70. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/flask/appmap.yml +0 -0
  71. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/flask/flaskapp.py +0 -0
  72. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/flask/init/sitecustomize.py +0 -0
  73. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/flask/templates/test.html +0 -0
  74. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/flask/test_app.py +0 -0
  75. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/package1/__init__.py +0 -0
  76. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/package1/package2/__init__.py +0 -0
  77. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/package1/package2/__main__.py +0 -0
  78. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/package1/package2/mod1.py +0 -0
  79. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/params.py +0 -0
  80. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/appmap.yml +0 -0
  81. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/expected/pytest.appmap.json +0 -0
  82. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/expected/status_errored.metadata.json +0 -0
  83. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/expected/status_failed.metadata.json +0 -0
  84. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/expected/status_xfailed.metadata.json +0 -0
  85. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/simple.py +0 -0
  86. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/test_noappmap.py +0 -0
  87. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/pytest/test_simple.py +0 -0
  88. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/remote.appmap.json +0 -0
  89. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/trial/.gitignore +0 -0
  90. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/trial/appmap.yml +0 -0
  91. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/trial/expected/pytest.appmap.json +0 -0
  92. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/trial/init/sitecustomize.py +0 -0
  93. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/trial/test/__init__.py +0 -0
  94. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/trial/test/test_deferred.py +0 -0
  95. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/appmap.yml +0 -0
  96. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/expected/pytest.appmap.json +0 -0
  97. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/expected/status_errored.metadata.json +0 -0
  98. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/expected/status_failed.metadata.json +0 -0
  99. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/expected/status_xfailed.metadata.json +0 -0
  100. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/expected/status_xsucceeded.metadata.json +0 -0
  101. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/expected/unittest.appmap.json +0 -0
  102. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/init/sitecustomize.py +0 -0
  103. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/simple/__init__.py +0 -0
  104. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/simple/test_noappmap.py +0 -0
  105. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/data/unittest/simple/test_simple.py +0 -0
  106. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/helpers.py +0 -0
  107. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/normalize.py +0 -0
  108. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_command.py +0 -0
  109. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_configuration.py +0 -0
  110. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_describe_value.py +0 -0
  111. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_django.py +0 -0
  112. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_django_simplelazyobject.py +0 -0
  113. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_env.py +0 -0
  114. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_fastapi.py +0 -0
  115. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_flask.py +0 -0
  116. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_generation.py +0 -0
  117. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_http.py +0 -0
  118. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_importer.py +0 -0
  119. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_labels.py +0 -0
  120. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_metadata.py +0 -0
  121. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_params.py +0 -0
  122. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_recording.py +0 -0
  123. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_runner.py +0 -0
  124. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_sqlalchemy.py +0 -0
  125. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_test_frameworks.py +0 -0
  126. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/test_util.py +0 -0
  127. {appmap-2.0.5 → appmap-2.0.7}/_appmap/test/web_framework.py +0 -0
  128. {appmap-2.0.5 → appmap-2.0.7}/_appmap/testing_framework.py +0 -0
  129. {appmap-2.0.5 → appmap-2.0.7}/_appmap/trace_logger.py +0 -0
  130. {appmap-2.0.5 → appmap-2.0.7}/_appmap/unittest.py +0 -0
  131. {appmap-2.0.5 → appmap-2.0.7}/_appmap/utils.py +0 -0
  132. {appmap-2.0.5 → appmap-2.0.7}/_appmap/web_framework.py +0 -0
  133. {appmap-2.0.5 → appmap-2.0.7}/appmap/__init__.py +0 -0
  134. {appmap-2.0.5 → appmap-2.0.7}/appmap/command/__init__.py +0 -0
  135. {appmap-2.0.5 → appmap-2.0.7}/appmap/command/appmap_agent_init.py +0 -0
  136. {appmap-2.0.5 → appmap-2.0.7}/appmap/command/appmap_agent_status.py +0 -0
  137. {appmap-2.0.5 → appmap-2.0.7}/appmap/command/appmap_agent_validate.py +0 -0
  138. {appmap-2.0.5 → appmap-2.0.7}/appmap/command/runner.py +0 -0
  139. {appmap-2.0.5 → appmap-2.0.7}/appmap/django.py +0 -0
  140. {appmap-2.0.5 → appmap-2.0.7}/appmap/fastapi.py +0 -0
  141. {appmap-2.0.5 → appmap-2.0.7}/appmap/flask.py +0 -0
  142. {appmap-2.0.5 → appmap-2.0.7}/appmap/http.py +0 -0
  143. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/__init__.py +0 -0
  144. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/crypto.yml +0 -0
  145. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/django.yml +0 -0
  146. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/flask.yml +0 -0
  147. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/formats.yml +0 -0
  148. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/http.yml +0 -0
  149. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/jobs.yml +0 -0
  150. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/jwt.yml +0 -0
  151. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/logger.yml +0 -0
  152. {appmap-2.0.5 → appmap-2.0.7}/appmap/labeling/random.yml +0 -0
  153. {appmap-2.0.5 → appmap-2.0.7}/appmap/pytest.py +0 -0
  154. {appmap-2.0.5 → appmap-2.0.7}/appmap/sqlalchemy.py +0 -0
  155. {appmap-2.0.5 → appmap-2.0.7}/appmap/unittest.py +0 -0
  156. {appmap-2.0.5 → appmap-2.0.7}/appmap/uvicorn.py +0 -0
  157. {appmap-2.0.5 → appmap-2.0.7}/appmap.pth +0 -0
  158. {appmap-2.0.5 → appmap-2.0.7}/vendor/_appmap/wrapt/LICENSE +0 -0
  159. {appmap-2.0.5 → appmap-2.0.7}/vendor/_appmap/wrapt/__init__.py +0 -0
  160. {appmap-2.0.5 → appmap-2.0.7}/vendor/_appmap/wrapt/arguments.py +0 -0
  161. {appmap-2.0.5 → appmap-2.0.7}/vendor/_appmap/wrapt/decorators.py +0 -0
  162. {appmap-2.0.5 → appmap-2.0.7}/vendor/_appmap/wrapt/importer.py +0 -0
  163. {appmap-2.0.5 → appmap-2.0.7}/vendor/_appmap/wrapt/wrappers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: appmap
3
- Version: 2.0.5
3
+ Version: 2.0.7
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
@@ -455,7 +455,11 @@ class FuncReturnEvent(ReturnEvent):
455
455
 
456
456
  def __init__(self, parent_id, elapsed, return_value):
457
457
  super().__init__(parent_id, elapsed)
458
- self.return_value = describe_value(None, return_value)
458
+ # Import here to prevent circular dependency
459
+ # pylint: disable=import-outside-toplevel
460
+ from _appmap.instrument import recording_disabled # noqa: F401
461
+ with recording_disabled():
462
+ self.return_value = describe_value(None, return_value)
459
463
 
460
464
 
461
465
  class HttpResponseEvent(ReturnEvent):
@@ -15,11 +15,12 @@ logger = Env.current.getLogger(__name__)
15
15
  @contextmanager
16
16
  def recording_disabled():
17
17
  tls = appmap_tls()
18
+ original_value = tls.get("instrumentation_disabled")
18
19
  tls["instrumentation_disabled"] = True
19
20
  try:
20
21
  yield
21
22
  finally:
22
- tls["instrumentation_disabled"] = False
23
+ tls["instrumentation_disabled"] = original_value
23
24
 
24
25
 
25
26
  def is_instrumentation_disabled():
@@ -191,7 +191,7 @@ class SharedRecorder(Recorder):
191
191
  A shared Recorder. The global recorder is an instance of this class.
192
192
  """
193
193
 
194
- _lock = threading.Lock()
194
+ _lock = threading.RLock()
195
195
 
196
196
  def __init__(self):
197
197
  super().__init__()
@@ -110,6 +110,9 @@ class ExampleClass(Super, ClassMethodMixin):
110
110
  def with_comment(self):
111
111
  return True
112
112
 
113
+ def return_self(self):
114
+ return self
115
+
113
116
 
114
117
  def modfunc():
115
118
  return "Hello world!"
@@ -105,3 +105,15 @@ class TestEvents:
105
105
  # MagicMock. (If it's broken, we may not get here at all,
106
106
  # because the assertion above may fail.)
107
107
  param.__repr__.assert_called_once_with()
108
+
109
+ def test_describe_return_value_recursion_protection(self):
110
+ r = appmap.Recording()
111
+ with r:
112
+ # pylint: disable=import-outside-toplevel
113
+ from example_class import ExampleClass
114
+
115
+ ExampleClass().return_self()
116
+ # There should be no event for method another_method which is called by __repr__.
117
+ assert [e.method_id for e in r.events if e.event == "call" and hasattr(e, "method_id")] == [
118
+ "return_self"
119
+ ]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "appmap"
3
- version = "2.0.5"
3
+ version = "2.0.7"
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
File without changes
File without changes