{"id":30240397,"url":"https://github.com/hypothesis/h-pyramid-sentry","last_synced_at":"2025-08-15T04:38:28.262Z","repository":{"id":35336732,"uuid":"214405913","full_name":"hypothesis/h-pyramid-sentry","owner":"hypothesis","description":"A library which integrates Sentry logging into Pyramid with the  ability to filter out unwanted messages.","archived":false,"fork":false,"pushed_at":"2025-06-13T14:48:15.000Z","size":128,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-17T12:03:33.261Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pypi.org/project/h-pyramid-sentry/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hypothesis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"zenodo":null}},"created_at":"2019-10-11T10:15:11.000Z","updated_at":"2025-06-13T14:48:17.000Z","dependencies_parsed_at":"2023-02-13T21:46:07.807Z","dependency_job_id":"bdcda4bd-b41f-4cfc-8b93-4f26ef8e87bc","html_url":"https://github.com/hypothesis/h-pyramid-sentry","commit_stats":{"total_commits":92,"total_committers":6,"mean_commits":"15.333333333333334","dds":"0.34782608695652173","last_synced_commit":"5a3c62aa0d79e7cb62ad3044d7fddfc68266fed7"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/hypothesis/h-pyramid-sentry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fh-pyramid-sentry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fh-pyramid-sentry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fh-pyramid-sentry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fh-pyramid-sentry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hypothesis","download_url":"https://codeload.github.com/hypothesis/h-pyramid-sentry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fh-pyramid-sentry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270524429,"owners_count":24600195,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-08-15T04:38:23.215Z","updated_at":"2025-08-15T04:38:28.251Z","avatar_url":"https://github.com/hypothesis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://github.com/hypothesis/h-pyramid-sentry/actions/workflows/ci.yml?query=branch%3Amain\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/hypothesis/h-pyramid-sentry/ci.yml?branch=main\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/h-pyramid-sentry\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/h-pyramid-sentry\"\u003e\u003c/a\u003e\n\u003ca\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.12 | 3.11 | 3.10 | 3.9-success\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/hypothesis/h-pyramid-sentry/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-BSD--2--Clause-success\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/hypothesis/cookiecutters/tree/main/pypackage\"\u003e\u003cimg src=\"https://img.shields.io/badge/cookiecutter-pypackage-success\"\u003e\u003c/a\u003e\n\u003ca href=\"https://black.readthedocs.io/en/stable/\"\u003e\u003cimg src=\"https://img.shields.io/badge/code%20style-black-000000\"\u003e\u003c/a\u003e\n\n# Hypothesis Pyramid Sentry Extension\n\nA library which integrates Sentry logging into Pyramid with the ability to filter out unwanted messages.\n\nThis is a Pyramid extension that wraps\n[sentry-sdk's Pyramid integration](https://docs.sentry.io/platforms/python/pyramid/)\nand adds some additional customization and features.\n\nFeatures\n--------\n\n* Initializes sentry-sdk with its Pyramid integration for you.\n  Your app just has to set any `\"h_pyramid_sentry.*\"` settings that you want\n  and then do `config.include(\"h_pyramid_sentry\")` (see instructions below for details).\n\n* Prevents retryable exceptions from being reported to Sentry if your app is using\n  [pyramid_retry](http://docs.pylonsproject.org/projects/pyramid-retry/en/latest/)\n  and the request is going to be retried\n  (requires the `\"h_pyramid_sentry.retry_support\": True` setting, see below).\n\n  Retryable exceptions will still be reported to Sentry if the request is not\n  going to be retried again because it has run out of retry attempts or because\n  one of the retries fails with a non-retryable exception. When this happens\n  only the exception from the request's final attempt is reported to Sentry, so\n  you get a single Sentry event per request not multiple, but information about\n  the previous failed attempts' exceptions is added to the single Sentry event.\n\n* Ignores errors logged by `exc_logger` if your app is using\n  [pyramid_exclog](https://docs.pylonsproject.org/projects/pyramid_exclog/en/latest/).\n\n  pyramid_exclog logs all exceptions with log-level ERROR, and these all\n  get picked up by sentry_sdk's [enabled-by-default logging integration](https://docs.sentry.io/platforms/python/logging/).\n  This would mean that all exceptions in Sentry appear to come from\n  exc_logger, and that some handled exceptions that wouldn't normally be\n  reported to Sentry now _would_ get reported. This extension prevents the\n  interference by telling sentry_sdk to ignore exc_logger.\n\n* Provides a convenient method for apps to register their own filters for\n  exceptions and logged errors that they don't want to be reported to Sentry.\n  See the `\"h_pyramid_sentry.filters\"` setting below.\n\nUsage\n-----\n\n```python\nconfig.add_settings({...})  # See below for available settings.\nconfig.include(\"h_pyramid_sentry\")\n```\n\nFilters\n-------\n\nIn your Pyramid configuration you can provide a list of filter functions in the\nsetting `h_pyramid_sentry.filters`.\n\nThese functions are passed [Event](h_pyramid_sentry/event.py) objects which\nthey can inspect. If the function returns `True`, then the event is not sent to\nSentry.\n\nFor example to prevent reporting of `ValueError`s:\n\n```python\nconfig.add_settings({\n    \"h_pyramid_sentry.filters\": [\n        lambda event: instanceof(event.exception, ValueError)\n    ],\n})\n```\n\nSettings\n--------\n\nThe extension will listen to the following Pyramid deployment settings:\n\n| Pyramid setting        | Effect |\n|------------------------|---------------|\n| `h_pyramid_sentry.init` | A dict of any [options understood by `sentry_sdk.init()`](https://docs.sentry.io/error-reporting/configuration/?platform=javascript#common-options) |\n| `h_pyramid_sentry.filters` | A list of functions to apply as filters |\n| `h_pyramid_sentry.retry_support` *| Enable retry detection and filtering|\n| `h_pyramid_sentry.celery_support` *| Enable [Celery support for Sentry](https://docs.sentry.io/platforms/python/celery/) |\n| `h_pyramid_sentry.sqlalchemy_support` *| Enable [SQLAlchemy support for Sentry](https://docs.sentry.io/platforms/python/sqlalchemy/) |\n\n_* Enabling retry or celery support requires your application to list the relevant dependency (`pyramid_retry` or `celery`) as a dependency._ \n\nAs per the [Sentry docs](https://docs.sentry.io/error-reporting/configuration/?platform=python#dsn), the\nenvironment variable `SENTRY_DSN` will be automatically read if set, although this can\nalso be passed along with any other Sentry SDK options via `h_pyramid_sentry.init`.\n\n## Setting up Your Hypothesis Pyramid Sentry Extension Development Environment\n\nFirst you'll need to install:\n\n* [Git](https://git-scm.com/).\n  On Ubuntu: `sudo apt install git`, on macOS: `brew install git`.\n* [GNU Make](https://www.gnu.org/software/make/).\n  This is probably already installed, run `make --version` to check.\n* [pyenv](https://github.com/pyenv/pyenv).\n  Follow the instructions in pyenv's README to install it.\n  The **Homebrew** method works best on macOS.\n  The **Basic GitHub Checkout** method works best on Ubuntu.\n  You _don't_ need to set up pyenv's shell integration (\"shims\"), you can\n  [use pyenv without shims](https://github.com/pyenv/pyenv#using-pyenv-without-shims).\n\nThen to set up your development environment:\n\n```terminal\ngit clone https://github.com/hypothesis/h-pyramid-sentry.git\ncd h-pyramid-sentry\nmake help\n```\n\n## Releasing a New Version of the Project\n\n1. First, to get PyPI publishing working you need to go to:\n   \u003chttps://github.com/organizations/hypothesis/settings/secrets/actions/PYPI_TOKEN\u003e\n   and add h-pyramid-sentry to the `PYPI_TOKEN` secret's selected\n   repositories.\n\n2. Now that the h-pyramid-sentry project has access to the `PYPI_TOKEN` secret\n   you can release a new version by just [creating a new GitHub release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository).\n   Publishing a new GitHub release will automatically trigger\n   [a GitHub Actions workflow](.github/workflows/pypi.yml)\n   that will build the new version of your Python package and upload it to\n   \u003chttps://pypi.org/project/h-pyramid-sentry\u003e.\n\n## Changing the Project's Python Versions\n\nTo change what versions of Python the project uses:\n\n1. Change the Python versions in the\n   [cookiecutter.json](.cookiecutter/cookiecutter.json) file. For example:\n\n   ```json\n   \"python_versions\": \"3.10.4, 3.9.12\",\n   ```\n\n2. Re-run the cookiecutter template:\n\n   ```terminal\n   make template\n   ```\n\n3. Commit everything to git and send a pull request\n\n## Changing the Project's Python Dependencies\n\nTo change the production dependencies in the `setup.cfg` file:\n\n1. Change the dependencies in the [`.cookiecutter/includes/setuptools/install_requires`](.cookiecutter/includes/setuptools/install_requires) file.\n   If this file doesn't exist yet create it and add some dependencies to it.\n   For example:\n\n   ```\n   pyramid\n   sqlalchemy\n   celery\n   ```\n\n2. Re-run the cookiecutter template:\n\n   ```terminal\n   make template\n   ```\n\n3. Commit everything to git and send a pull request\n\nTo change the project's formatting, linting and test dependencies:\n\n1. Change the dependencies in the [`.cookiecutter/includes/tox/deps`](.cookiecutter/includes/tox/deps) file.\n   If this file doesn't exist yet create it and add some dependencies to it.\n   Use tox's [factor-conditional settings](https://tox.wiki/en/latest/config.html#factors-and-factor-conditional-settings)\n   to limit which environment(s) each dependency is used in.\n   For example:\n\n   ```\n   lint: flake8,\n   format: autopep8,\n   lint,tests: pytest-faker,\n   ```\n\n2. Re-run the cookiecutter template:\n\n   ```terminal\n   make template\n   ```\n\n3. Commit everything to git and send a pull request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypothesis%2Fh-pyramid-sentry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypothesis%2Fh-pyramid-sentry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypothesis%2Fh-pyramid-sentry/lists"}