appmap 2.1.7__tar.gz → 2.1.9__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.7 → appmap-2.1.9}/PKG-INFO +6 -3
  2. {appmap-2.1.7 → appmap-2.1.9}/_appmap/event.py +1 -1
  3. {appmap-2.1.7 → appmap-2.1.9}/_appmap/importer.py +3 -1
  4. {appmap-2.1.7 → appmap-2.1.9}/_appmap/recording.py +3 -1
  5. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_configuration.py +1 -1
  6. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_django.py +1 -1
  7. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_recording.py +24 -0
  8. {appmap-2.1.7 → appmap-2.1.9}/_appmap/web_framework.py +3 -3
  9. {appmap-2.1.7 → appmap-2.1.9}/appmap/django.py +3 -1
  10. {appmap-2.1.7 → appmap-2.1.9}/appmap/pytest.py +1 -1
  11. {appmap-2.1.7 → appmap-2.1.9}/appmap/sqlalchemy.py +2 -2
  12. {appmap-2.1.7 → appmap-2.1.9}/pyproject.toml +1 -1
  13. {appmap-2.1.7 → appmap-2.1.9}/LICENSE +0 -0
  14. {appmap-2.1.7 → appmap-2.1.9}/README.md +0 -0
  15. {appmap-2.1.7 → appmap-2.1.9}/_appmap/__init__.py +0 -0
  16. {appmap-2.1.7 → appmap-2.1.9}/_appmap/configuration.py +0 -0
  17. {appmap-2.1.7 → appmap-2.1.9}/_appmap/django.py +0 -0
  18. {appmap-2.1.7 → appmap-2.1.9}/_appmap/env.py +0 -0
  19. {appmap-2.1.7 → appmap-2.1.9}/_appmap/fastapi.py +0 -0
  20. {appmap-2.1.7 → appmap-2.1.9}/_appmap/flask.py +0 -0
  21. {appmap-2.1.7 → appmap-2.1.9}/_appmap/generation.py +0 -0
  22. {appmap-2.1.7 → appmap-2.1.9}/_appmap/instrument.py +0 -0
  23. {appmap-2.1.7 → appmap-2.1.9}/_appmap/labels.py +0 -0
  24. {appmap-2.1.7 → appmap-2.1.9}/_appmap/metadata.py +0 -0
  25. {appmap-2.1.7 → appmap-2.1.9}/_appmap/noappmap.py +0 -0
  26. {appmap-2.1.7 → appmap-2.1.9}/_appmap/py_version_check.py +0 -0
  27. {appmap-2.1.7 → appmap-2.1.9}/_appmap/recorder.py +0 -0
  28. {appmap-2.1.7 → appmap-2.1.9}/_appmap/remote_recording.py +0 -0
  29. {appmap-2.1.7 → appmap-2.1.9}/_appmap/singleton.py +0 -0
  30. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/__init__.py +0 -0
  31. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/appmap_test_base.py +0 -0
  32. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/bin/server_runner +0 -0
  33. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/conftest.py +0 -0
  34. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-all-paths-malformed.yml +0 -0
  35. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-broken.yml +0 -0
  36. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-class.yml +0 -0
  37. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-empty-path.yml +0 -0
  38. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-exclude-fn.yml +0 -0
  39. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-func.yml +0 -0
  40. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-malformed-path.yml +0 -0
  41. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap-no-pyyaml.yml +0 -0
  42. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap.yml +0 -0
  43. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap_testing/__init__.py +0 -0
  44. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/appmap_testing/django_simplelazyobject.py +0 -0
  45. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config/src/package/__init__.py +0 -0
  46. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config/test/__init__.py +0 -0
  47. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config/test/foo.py +0 -0
  48. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-exclude/.hide/hidden_mod/__init__.py +0 -0
  49. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-exclude/node_modules/node_mod/__init__.py +0 -0
  50. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-exclude/src/package/__init__.py +0 -0
  51. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-exclude/test/__init__.py +0 -0
  52. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-exclude/venv/venv_mod/__init__.py +0 -0
  53. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-up/appmap.yml +0 -0
  54. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-up/project/p1/__init__.py +0 -0
  55. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/config-up/project/p2/sub1/__init__.py +0 -0
  56. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/appmap.yml +0 -0
  57. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/__init__.py +0 -0
  58. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/djangoapp.py +0 -0
  59. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/hello_world.html +0 -0
  60. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/middleware.py +0 -0
  61. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/settings.py +0 -0
  62. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/settings_dev.py +0 -0
  63. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/djangoapp/urls.py +0 -0
  64. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/init/sitecustomize.py +0 -0
  65. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/manage.py +0 -0
  66. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/pytest.ini +0 -0
  67. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/test/__init__.py +0 -0
  68. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/test/test_app.py +0 -0
  69. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/test/test_request.py +0 -0
  70. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/django/test/test_unittest_setup.py +0 -0
  71. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/example_class.py +0 -0
  72. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/expected.appmap.json +0 -0
  73. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/fastapi/appmap.yml +0 -0
  74. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/fastapi/fastapiapp/__init__.py +0 -0
  75. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/fastapi/fastapiapp/main.py +0 -0
  76. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/fastapi/init/sitecustomize.py +0 -0
  77. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/fastapi/test_app.py +0 -0
  78. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask/appmap.yml +0 -0
  79. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask/flaskapp.py +0 -0
  80. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask/init/sitecustomize.py +0 -0
  81. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask/templates/test.html +0 -0
  82. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask/test_app.py +0 -0
  83. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask-instrumented/appmap.yml +0 -0
  84. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask-instrumented/flaskapp.py +0 -0
  85. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask-instrumented/init/sitecustomize.py +0 -0
  86. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/flask-instrumented/test_app.py +0 -0
  87. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/package1/__init__.py +0 -0
  88. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/package1/package2/__init__.py +0 -0
  89. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/package1/package2/__main__.py +0 -0
  90. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/package1/package2/mod1.py +0 -0
  91. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/params.py +0 -0
  92. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/properties_class.py +0 -0
  93. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/appmap-no-test-cases.yml +0 -0
  94. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/appmap.yml +0 -0
  95. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/pytest-numpy1-no-test-cases.appmap.json +0 -0
  96. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/pytest-numpy1.appmap.json +0 -0
  97. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/pytest-numpy2-no-test-cases.appmap.json +0 -0
  98. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/pytest-numpy2.appmap.json +0 -0
  99. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/status_errored.metadata.json +0 -0
  100. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/status_failed.metadata.json +0 -0
  101. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/expected/status_xfailed.metadata.json +0 -0
  102. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/simple.py +0 -0
  103. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/tests/__init__.py +0 -0
  104. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/tests/test_noappmap.py +0 -0
  105. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest/tests/test_simple.py +0 -0
  106. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest-instrumented/appmap.yml +0 -0
  107. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest-instrumented/init/sitecustomize.py +0 -0
  108. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/pytest-instrumented/test_instrumented.py +0 -0
  109. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/remote.appmap.json +0 -0
  110. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/.gitignore +0 -0
  111. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/appmap-no-test-cases.yml +0 -0
  112. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/appmap.yml +0 -0
  113. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/expected/pytest-no-test-cases.appmap.json +0 -0
  114. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/expected/pytest.appmap.json +0 -0
  115. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/init/sitecustomize.py +0 -0
  116. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/test/__init__.py +0 -0
  117. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/trial/test/test_deferred.py +0 -0
  118. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/appmap-no-test-cases.yml +0 -0
  119. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/appmap.yml +0 -0
  120. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/pytest.appmap.json +0 -0
  121. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/status_errored.metadata.json +0 -0
  122. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/status_failed.metadata.json +0 -0
  123. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/status_xfailed.metadata.json +0 -0
  124. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/status_xsucceeded.metadata.json +0 -0
  125. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/unittest-no-test-cases.appmap.json +0 -0
  126. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/expected/unittest.appmap.json +0 -0
  127. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/init/sitecustomize.py +0 -0
  128. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/simple/__init__.py +0 -0
  129. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/simple/test_noappmap.py +0 -0
  130. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/data/unittest/simple/test_simple.py +0 -0
  131. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/helpers.py +0 -0
  132. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/normalize.py +0 -0
  133. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_command.py +0 -0
  134. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_describe_value.py +0 -0
  135. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_django_simplelazyobject.py +0 -0
  136. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_env.py +0 -0
  137. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_events.py +0 -0
  138. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_fastapi.py +0 -0
  139. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_flask.py +0 -0
  140. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_generation.py +0 -0
  141. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_http.py +0 -0
  142. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_importer.py +0 -0
  143. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_labels.py +0 -0
  144. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_metadata.py +0 -0
  145. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_params.py +0 -0
  146. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_properties.py +0 -0
  147. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_runner.py +0 -0
  148. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_sqlalchemy.py +0 -0
  149. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_test_frameworks.py +0 -0
  150. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/test_util.py +0 -0
  151. {appmap-2.1.7 → appmap-2.1.9}/_appmap/test/web_framework.py +0 -0
  152. {appmap-2.1.7 → appmap-2.1.9}/_appmap/testing_framework.py +0 -0
  153. {appmap-2.1.7 → appmap-2.1.9}/_appmap/trace_logger.py +0 -0
  154. {appmap-2.1.7 → appmap-2.1.9}/_appmap/unittest.py +0 -0
  155. {appmap-2.1.7 → appmap-2.1.9}/_appmap/utils.py +0 -0
  156. {appmap-2.1.7 → appmap-2.1.9}/appmap/__init__.py +0 -0
  157. {appmap-2.1.7 → appmap-2.1.9}/appmap/command/__init__.py +0 -0
  158. {appmap-2.1.7 → appmap-2.1.9}/appmap/command/appmap_agent_init.py +0 -0
  159. {appmap-2.1.7 → appmap-2.1.9}/appmap/command/appmap_agent_status.py +0 -0
  160. {appmap-2.1.7 → appmap-2.1.9}/appmap/command/appmap_agent_validate.py +0 -0
  161. {appmap-2.1.7 → appmap-2.1.9}/appmap/command/runner.py +0 -0
  162. {appmap-2.1.7 → appmap-2.1.9}/appmap/fastapi.py +0 -0
  163. {appmap-2.1.7 → appmap-2.1.9}/appmap/flask.py +0 -0
  164. {appmap-2.1.7 → appmap-2.1.9}/appmap/http.py +0 -0
  165. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/__init__.py +0 -0
  166. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/crypto.yml +0 -0
  167. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/django.yml +0 -0
  168. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/flask.yml +0 -0
  169. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/formats.yml +0 -0
  170. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/http.yml +0 -0
  171. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/jobs.yml +0 -0
  172. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/jwt.yml +0 -0
  173. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/logger.yml +0 -0
  174. {appmap-2.1.7 → appmap-2.1.9}/appmap/labeling/random.yml +0 -0
  175. {appmap-2.1.7 → appmap-2.1.9}/appmap/unittest.py +0 -0
  176. {appmap-2.1.7 → appmap-2.1.9}/appmap/uvicorn.py +0 -0
  177. {appmap-2.1.7 → appmap-2.1.9}/appmap.pth +0 -0
  178. {appmap-2.1.7 → appmap-2.1.9}/vendor/_appmap/wrapt/LICENSE +0 -0
  179. {appmap-2.1.7 → appmap-2.1.9}/vendor/_appmap/wrapt/__init__.py +0 -0
  180. {appmap-2.1.7 → appmap-2.1.9}/vendor/_appmap/wrapt/arguments.py +0 -0
  181. {appmap-2.1.7 → appmap-2.1.9}/vendor/_appmap/wrapt/decorators.py +0 -0
  182. {appmap-2.1.7 → appmap-2.1.9}/vendor/_appmap/wrapt/importer.py +0 -0
  183. {appmap-2.1.7 → appmap-2.1.9}/vendor/_appmap/wrapt/wrappers.py +0 -0
@@ -1,9 +1,9 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: appmap
3
- Version: 2.1.7
3
+ Version: 2.1.9
4
4
  Summary: Create AppMap files by recording a Python application.
5
- Home-page: https://github.com/applandinc/appmap-python
6
5
  License: MIT
6
+ License-File: LICENSE
7
7
  Author: Alan Potter
8
8
  Author-email: alan@app.land
9
9
  Requires-Python: >=3.8,<4.0
@@ -20,6 +20,8 @@ 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
24
+ Classifier: Programming Language :: Python :: 3.14
23
25
  Classifier: Topic :: Software Development
24
26
  Classifier: Topic :: Software Development :: Debuggers
25
27
  Classifier: Topic :: Software Development :: Documentation
@@ -27,6 +29,7 @@ Requires-Dist: PyYAML (>=5.3.0)
27
29
  Requires-Dist: importlib-resources (>=5.4.0,<6.0.0)
28
30
  Requires-Dist: inflection (>=0.3.0)
29
31
  Requires-Dist: packaging (>=19.0)
32
+ Project-URL: Homepage, https://github.com/applandinc/appmap-python
30
33
  Description-Content-Type: text/markdown
31
34
 
32
35
  - [About](#about)
@@ -446,7 +446,7 @@ class HttpServerRequestEvent(MessageEvent):
446
446
 
447
447
  __slots__ = ["http_server_request"]
448
448
 
449
- # pylint: disable=too-many-arguments
449
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
450
450
  def __init__(
451
451
  self,
452
452
  request_method,
@@ -42,7 +42,9 @@ class FilterableFn(
42
42
  ):
43
43
  __slots__ = ()
44
44
 
45
- def __new__(cls, scope, fn_name, fn, static_fn, auxtype=None): # pylint: disable=too-many-arguments
45
+ def __new__(
46
+ cls, scope, fn_name, fn, static_fn, auxtype=None
47
+ ): # pylint: disable=too-many-arguments,too-many-positional-arguments
46
48
  fqname = "%s.%s" % (scope.fqname, fn_name)
47
49
  self = super(FilterableFn, cls).__new__(cls, scope.scope, fqname, fn, static_fn, auxtype)
48
50
  return self
@@ -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}".replace(":","-")
119
121
  recorder_type = "process"
120
122
  metadata = {
121
123
  "name": appmap_name,
@@ -269,7 +269,7 @@ class TestEmpty(DefaultHelpers):
269
269
  self.check_default_config(Path(tmpdir).name)
270
270
 
271
271
  class TestSearchConfig:
272
- # pylint: disable=too-many-arguments
272
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
273
273
 
274
274
  def test_config_in_parent_folder(self, data_dir, tmpdir, monkeypatch):
275
275
  copytree(data_dir / "config-up", str(tmpdir), dirs_exist_ok=True)
@@ -98,7 +98,7 @@ def test_template(events):
98
98
  class ClientAdaptor(django.test.Client):
99
99
  """Adaptor for the client request parameters used in .web_framework tests."""
100
100
 
101
- # pylint: disable=too-many-arguments
101
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
102
102
  def generic(
103
103
  self,
104
104
  method,
@@ -226,3 +226,27 @@ def test_process_recording(data_dir, shell, tmp_path):
226
226
  actual = json.loads(appmap_files[0].read_text())
227
227
  assert len(actual["events"]) > 0
228
228
  assert len(actual["classMap"]) > 0
229
+
230
+
231
+ def test_process_recording_filename_is_sanitized(data_dir, shell, tmp_path):
232
+ fixture = data_dir / "package1"
233
+ tmp = tmp_path / "process"
234
+ copytree(fixture, str(tmp / "package1"), dirs_exist_ok=True)
235
+ copy(data_dir / "appmap.yml", str(tmp))
236
+ copytree(data_dir / "flask" / "init", str(tmp / "init"), dirs_exist_ok=True)
237
+
238
+ ret = shell.run(
239
+ "python",
240
+ "-m",
241
+ "package1.package2",
242
+ env={"PYTHONPATH": "init", "APPMAP_RECORD_PROCESS": "true"},
243
+ cwd=tmp,
244
+ )
245
+ assert ret.returncode == 0
246
+
247
+ appmap_dir = tmp / "tmp" / "appmap" / "process"
248
+ appmap_files = list(appmap_dir.glob("*.appmap.json"))
249
+ assert len(appmap_files) == 1, "this only fails when run from VS Code?"
250
+
251
+ filename = appmap_files[0].name
252
+ assert ":" not in filename
@@ -102,7 +102,7 @@ def name_hash(namepart):
102
102
  return sha256(os.fsencode(namepart)).hexdigest()
103
103
 
104
104
 
105
- # pylint: disable=too-many-arguments
105
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
106
106
  def create_appmap_file(
107
107
  output_dir,
108
108
  request_method,
@@ -142,7 +142,7 @@ class AppmapMiddleware(ABC):
142
142
  """Specify the main operations to be performed by a request is processed."""
143
143
  raise NotImplementedError
144
144
 
145
- # pylint: disable=too-many-arguments
145
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
146
146
  def after_request_main(
147
147
  self, request_path, status, headers, start, call_event_id
148
148
  ) -> Optional[HttpServerResponseEvent]:
@@ -193,7 +193,7 @@ class AppmapMiddleware(ABC):
193
193
 
194
194
  return rec, start, call_event_id
195
195
 
196
- # pylint: disable=too-many-arguments
196
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
197
197
  def after_request_hook(
198
198
  self,
199
199
  request_path,
@@ -59,7 +59,9 @@ class ExecuteWrapper: # pylint: disable=too-few-public-methods
59
59
  self.recorder = Recorder.get_current()
60
60
 
61
61
  # This signature is correct, the implementation confuses pylint:
62
- def __call__(self, execute, sql, params, many, context): # pylint: disable=too-many-arguments
62
+ def __call__(
63
+ self, execute, sql, params, many, context
64
+ ): # pylint: disable=too-many-arguments,too-many-positional-arguments
63
65
  start = time.monotonic()
64
66
  try:
65
67
  return execute(sql, params, many, context)
@@ -5,7 +5,7 @@ try:
5
5
  from pytest_django.django_compat import is_django_unittest
6
6
  except ImportError:
7
7
 
8
- def is_django_unittest(item):
8
+ def is_django_unittest(_item):
9
9
  return False
10
10
 
11
11
 
@@ -13,7 +13,7 @@ from _appmap.recorder import Recorder
13
13
 
14
14
 
15
15
  @event.listens_for(Engine, "before_cursor_execute")
16
- # pylint: disable=too-many-arguments,unused-argument
16
+ # pylint: disable=too-many-arguments,unused-argument,too-many-positional-arguments
17
17
  def capture_sql_call(conn, cursor, statement, parameters, context, executemany):
18
18
  """Capture SQL query call into appmap."""
19
19
  if is_instrumentation_disabled():
@@ -45,7 +45,7 @@ def capture_sql_call(conn, cursor, statement, parameters, context, executemany):
45
45
 
46
46
 
47
47
  @event.listens_for(Engine, "after_cursor_execute")
48
- # pylint: disable=too-many-arguments,unused-argument
48
+ # pylint: disable=too-many-arguments,unused-argument,too-many-positional-arguments
49
49
  def capture_sql(conn, cursor, statement, parameters, context, executemany):
50
50
  """Capture SQL query return into appmap."""
51
51
  if is_instrumentation_disabled():
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "appmap"
3
- version = "2.1.7"
3
+ version = "2.1.9"
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