{"id":28961732,"url":"https://github.com/getappmap/appmap-python","last_synced_at":"2026-02-03T18:10:06.866Z","repository":{"id":37545575,"uuid":"314785884","full_name":"getappmap/appmap-python","owner":"getappmap","description":"AppMap client agent for Python","archived":false,"fork":false,"pushed_at":"2025-01-08T13:59:11.000Z","size":1068,"stargazers_count":102,"open_issues_count":56,"forks_count":17,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-25T18:52:49.414Z","etag":null,"topics":["appland","appmap","python"],"latest_commit_sha":null,"homepage":"https://appland.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getappmap.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-21T10:28:10.000Z","updated_at":"2025-05-01T04:31:46.000Z","dependencies_parsed_at":"2022-09-07T10:42:14.698Z","dependency_job_id":"6eae930b-5b24-4745-9a2c-aea0ef14db38","html_url":"https://github.com/getappmap/appmap-python","commit_stats":{"total_commits":341,"total_committers":11,"mean_commits":31.0,"dds":0.4486803519061584,"last_synced_commit":"917831d11a9f8b6a88d96a7ad399919ae1874fe1"},"previous_names":["applandinc/appmap-python"],"tags_count":81,"template":false,"template_full_name":null,"purl":"pkg:github/getappmap/appmap-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappmap%2Fappmap-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappmap%2Fappmap-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappmap%2Fappmap-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappmap%2Fappmap-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getappmap","download_url":"https://codeload.github.com/getappmap/appmap-python/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getappmap%2Fappmap-python/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261589911,"owners_count":23181437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appland","appmap","python"],"created_at":"2025-06-24T02:04:47.652Z","updated_at":"2025-12-12T00:41:10.646Z","avatar_url":"https://github.com/getappmap.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"- [About](#about)\n- [Usage](#usage)\n- [Development](#development)\n  - [Getting the code](#getting-the-code)\n  - [Python version support](#python-version-support)\n  - [Dependency management](#dependency-management)\n    - [wrapt](#wrapt)\n  - [Linting](#linting)\n  - [Testing](#testing)\n    - [pytest](#pytest)\n    - [tox](#tox)\n  - [Code Coverage](#code-coverage)\n\n# About\n`appmap-python` is a Python package for recording\n[AppMaps](https://github.com/applandinc/appmap) of your code. \"AppMap\" is a data format\nwhich records code structure (modules, classes, and methods), code execution events\n(function calls and returns), and code metadata (repo name, repo URL, commit SHA, labels,\netc). It's more granular than a performance profile, but it's less granular than a full\ndebug trace. It's designed to be optimal for understanding the design intent and structure\nof code and key data flows.\n\n# Usage\n\nVisit the [AppMap for Python](https://appland.com/docs/reference/appmap-python.html) reference page on AppLand.com for a complete reference guide.\n\n# Development\n\n[![Build Status](https://travis-ci.com/getappmap/appmap-python.svg?branch=master)](https://travis-ci.com/getappmap/appmap-python)\n\n## Getting the code\nClone the repo to begin development.\n\n```shell\n% git clone https://github.com/applandinc/appmap-python.git\nCloning into 'appmap-python'...\nremote: Enumerating objects: 167, done.\nremote: Counting objects: 100% (167/167), done.\nremote: Compressing objects: 100% (100/100), done.\nremote: Total 962 (delta 95), reused 116 (delta 61), pack-reused 795\nReceiving objects: 100% (962/962), 217.31 KiB | 4.62 MiB/s, done.\nResolving deltas: 100% (653/653), done.\n```\n\n## Python version support\nAs a package intended to be installed in as many environments as possible, `appmap-python`\nneeds to avoid using features of Python or the standard library that were added after the\noldest version currently supported (see the\n[supported versions](https://appland.com/docs/reference/appmap-python.html#supported-versions)).\n\n## Dependency management\n\n[poetry](https://https://python-poetry.org/) for dependency management:\n\n```\n% brew install poetry\n% cd appmap-python\n% poetry install\n```\n\n### wrapt\nThe one dependency that is not managed using `poetry` is `wrapt`. Because it's possible that\nprojects that use `appmap` may also need an unmodified version of `wrapt` (e.g. `pylint` depends on\n`astroid`, which in turn depends on `wrapt`), we use\n[vendoring](https://github.com/pradyunsg/vendoring) to vendor `wrapt`.\n\nTo update `wrapt`, use `tox` (described below) to run the `vendoring` environment.\n\n## Linting\n[pylint](https://www.pylint.org/) for linting:\n\n```\n% cd appmap-python\n% poetry run pylint appmap\n\n--------------------------------------------------------------------\nYour code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)\n\n```\n\n[Note that the current configuration has a threshold set which must be met for the Travis build to\npass. To make this easier to achieve, a number of checks have both been disabled. They should be\nreenabled as soon as possible.]\n\n\n## Testing\n### pytest\n\nNote that you must install the dependencies contained in\n[requirements-dev.txt](requirements-dev.txt) before running tests. See the explanation in\n[pyproject.toml](pyproject.toml) for details.\n\nAdditionally, the tests currently require that you set `APPMAP=true` and\n`APPMAP_DISPLAY_PARAMS=true`. \n\n[pytest](https://docs.pytest.org/en/stable/) for testing:\n\n```\n% cd appmap-python\n% pip install -r requirements-test.txt\n% APPMAP=true APPMAP_DISPLAY_PARAMS=true poetry run pytest\n```\n\n### tox\nAdditionally, the `tox` configuration provides the ability to run the tests for all\nsupported versions of Python and Django.\n\n`tox` requires that all the correct versions of Python to be available to create\nthe test environments. [pyenv](https://github.com/pyenv/pyenv) is an easy way to manage\nmultiple versions of Python, and the [xxenv-latest\nplugin](https://github.com/momo-lab/xxenv-latest) can help get all the latest versions.\n\n\n\n```sh\n% brew install pyenv\n% git clone https://github.com/momo-lab/xxenv-latest.git \"$(pyenv root)\"/plugins/xxenv-latest\n% cd appmap-python\n% pyenv latest local 3.{9,6,7,8}\n% for v in 3.{9,6,7,8}; do pyenv latest install $v; done\n% poetry run tox\n```\n\n## Code Coverage\n[coverage](https://coverage.readthedocs.io/) for coverage:\n\n```\n% cd appmap-python\n% poetry run coverage run -m pytest\n% poetry run coverage html\n% open htmlcov/index.html\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetappmap%2Fappmap-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetappmap%2Fappmap-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetappmap%2Fappmap-python/lists"}