{"name":"napari-error-reporter","display_name":"Napari Error Reporter","visibility":"public","icon":"","categories":[],"schema_version":"0.2.0","on_activate":null,"on_deactivate":null,"contributions":{"commands":null,"readers":null,"writers":null,"widgets":null,"sample_data":null,"themes":null,"menus":{},"submenus":null,"keybindings":null,"configuration":[]},"package_metadata":{"metadata_version":"2.1","name":"napari-error-reporter","version":"0.3.1","dynamic":null,"platform":null,"supported_platform":null,"summary":"Opt-in automated bug/error reporting for napari","description":"# 🐛 napari-error-reporter\n\n[![License](https://img.shields.io/pypi/l/napari-error-reporter.svg?color=green)](https://github.com/tlambert03/napari-error-reporter/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/napari-error-reporter.svg?color=green)](https://pypi.org/project/napari-error-reporter)\n[![Python Version](https://img.shields.io/pypi/pyversions/napari-error-reporter.svg?color=green)](https://python.org)\n[![CI](https://github.com/tlambert03/napari-error-reporter/actions/workflows/ci.yml/badge.svg)](https://github.com/tlambert03/napari-error-reporter/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/tlambert03/napari-error-reporter/branch/main/graph/badge.svg)](https://codecov.io/gh/tlambert03/napari-error-reporter)\n\nWant to help out napari? Install this plugin!\n\nThis plugin will automatically send error reports to napari (via\n[sentry.io](https://sentry.io)) whenever an exception occurs while you are using\nnapari.\n\nThe first time you run napari after installing this plugin an opt-in\nnotification will appear (Be sure to click \"yes\", otherwise no reports will be\ncollected or sent). You may opt back out at any time in napari's help menu.\n\nEvery effort is made to strip these reports of personally identifiable\ninformation. Here is an example exception event:\n\n
\n\nExample bug report\n\n```python\n{\n 'breadcrumbs': {\n 'values': [\n {\n 'category': 'subprocess',\n 'data': {},\n 'message': 'sw_vers -productVersion',\n 'timestamp': '2022-02-02T01:30:00.216738Z',\n 'type': 'subprocess'\n }\n ]\n },\n 'contexts': {\n 'runtime': {\n 'build': '3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:41:37) \\n[Clang 11.1.0 ]',\n 'name': 'CPython',\n 'version': '3.9.9'\n }\n },\n 'environment': 'macOS-10.15.7-x86_64-i386-64bit',\n 'event_id': '02dd8ddd3a4b4743af3d7d7a09949df4',\n 'exception': {\n 'values': [\n {\n 'mechanism': None,\n 'module': None,\n 'stacktrace': {\n 'frames': [\n {\n 'context_line': ' x = 1 / 0',\n 'filename': 'napari_error_reporter/_util.py',\n 'function': 'get_sample_event',\n 'in_app': True,\n 'lineno': 130,\n 'module': 'napari_error_reporter._util',\n 'post_context': [\n ' except Exception:',\n ' with sentry_sdk.push_scope() as scope:',\n ' for k, v in _get_tags().items():',\n ' scope.set_tag(k, v)',\n ' del v, k, scope'\n ],\n 'pre_context': [\n \" # remove locals that wouldn't really be there\",\n ' del settings, _trans, kwargs, client, EVENT',\n ' try:',\n ' some_variable = 1',\n ' another_variable = \"my_string\"'\n ]\n }\n ]\n },\n 'type': 'ZeroDivisionError',\n 'value': 'division by zero'\n }\n ]\n },\n 'extra': {'sys.argv': ['napari']},\n 'level': 'error',\n 'modules': {\n 'aicsimageio': '4.5.2',\n 'aicspylibczi': '3.0.4',\n 'aiohttp': '3.8.1',\n 'aiosignal': '1.2.0',\n 'alabaster': '0.7.12',\n 'anyio': '3.5.0',\n 'appdirs': '1.4.4',\n 'appnope': '0.1.2',\n 'argon2-cffi': '21.3.0',\n 'argon2-cffi-bindings': '21.2.0',\n 'arrow': '1.2.1',\n 'asciitree': '0.3.3',\n 'asttokens': '2.0.5',\n 'async-timeout': '4.0.2',\n 'atomium': '1.0.11',\n 'attrs': '21.4.0',\n 'autopep8': '1.6.0',\n 'babel': '2.9.1',\n 'backcall': '0.2.0',\n 'bcrypt': '3.2.0',\n 'beautifulsoup4': '4.10.0',\n 'binaryornot': '0.4.4',\n 'black': '20.8b1',\n 'bleach': '4.1.0',\n 'bracex': '2.2.1',\n 'build': '0.7.0',\n 'cachey': '0.2.1',\n 'cellpose': '0.6.5',\n 'certifi': '2021.10.8',\n 'cffi': '1.15.0',\n 'cfgv': '3.3.1',\n 'chardet': '4.0.0',\n 'charset-normalizer': '2.0.10',\n 'check-manifest': '0.47',\n 'click': '7.1.2',\n 'click-option-group': '0.5.3',\n 'cloudpickle': '2.0.0',\n 'colorama': '0.4.4',\n 'commonmark': '0.9.1',\n 'cookiecutter': '1.7.3',\n 'coverage': '6.2',\n 'cryptography': '36.0.1',\n 'cycler': '0.11.0',\n 'dask': '2022.1.0',\n 'debugpy': '1.5.1',\n 'decorator': '5.1.1',\n 'defusedxml': '0.7.1',\n 'distlib': '0.3.4',\n 'dnspython': '2.2.0',\n 'docstring-parser': '0.13',\n 'docutils': '0.16',\n 'elementpath': '2.4.0',\n 'email-validator': '1.1.3',\n 'entrypoints': '0.3',\n 'executing': '0.8.2',\n 'fancycompleter': '0.9.1',\n 'fasteners': '0.17.2',\n 'fastremap': '1.12.2',\n 'filelock': '3.4.2',\n 'flake8': '3.8.4',\n 'fonttools': '4.28.5',\n 'freetype-py': '2.2.0',\n 'frozenlist': '1.3.0',\n 'fsspec': '2022.1.0',\n 'furo': '2022.1.2',\n 'gitdb': '4.0.9',\n 'gitpython': '3.1.26',\n 'greenlet': '1.1.2',\n 'heapdict': '1.0.1',\n 'hsluv': '5.0.2',\n 'hypothesis': '6.35.1',\n 'identify': '2.4.4',\n 'idna': '3.3',\n 'imagecodecs': '2021.11.20',\n 'imageio': '2.10.5',\n 'imageio-ffmpeg': '0.4.5',\n 'imagesize': '1.3.0',\n 'importlib-metadata': '4.10.1',\n 'iniconfig': '1.1.1',\n 'install': '1.3.5',\n 'intervaltree': '3.1.0',\n 'ipykernel': '6.7.0',\n 'ipython': '8.0.0',\n 'ipython-genutils': '0.2.0',\n 'ipywidgets': '7.6.5',\n 'jedi': '0.18.1',\n 'jinja2': '3.0.3',\n 'jinja2-time': '0.2.0',\n 'jsonschema': '3.2.0',\n 'jupyter': '1.0.0',\n 'jupyter-book': '0.12.1',\n 'jupyter-cache': '0.4.3',\n 'jupyter-client': '7.1.1',\n 'jupyter-console': '6.4.0',\n 'jupyter-core': '4.9.1',\n 'jupyter-server': '1.13.3',\n 'jupyter-server-mathjax': '0.2.3',\n 'jupyter-sphinx': '0.3.2',\n 'jupyterlab-pygments': '0.1.2',\n 'jupyterlab-widgets': '1.0.2',\n 'jupytext': '1.11.5',\n 'kiwisolver': '1.3.2',\n 'latexcodec': '2.0.1',\n 'linkify-it-py': '1.0.3',\n 'llvmlite': '0.38.0',\n 'locket': '0.2.1',\n 'loguru': '0.5.3',\n 'lxml': '4.7.1',\n 'magicgui': '0.3.5.dev18+g78d1687',\n 'markdown-it-py': '1.1.0',\n 'markupsafe': '2.0.1',\n 'matplotlib': '3.5.1',\n 'matplotlib-inline': '0.1.3',\n 'mccabe': '0.6.1',\n 'mdit-py-plugins': '0.2.8',\n 'meshzoo': '0.9.2',\n 'mistune': '0.8.4',\n 'mrc': '0.2.0',\n 'msgpack': '1.0.3',\n 'multidict': '5.2.0',\n 'mypy': '0.931',\n 'mypy-extensions': '0.4.3',\n 'myst-nb': '0.13.1',\n 'myst-parser': '0.15.2',\n 'napari': '0.4.14rc1.dev4+gcdf58d44b',\n 'napari-aicsimageio': '0.4.1',\n 'napari-console': '0.0.4',\n 'napari-dv': '0.2.7.dev0+g54e1691.d20220128',\n 'napari-error-reporter': '0.1.dev1+g1b388f2.d20220201',\n 'napari-hello': '0.0.1',\n 'napari-math': '0.0.1a0',\n 'napari-micromanager': '0.0.1rc6.dev14+g5149788.d20220128',\n 'napari-molecule-reader': '0.1.2.dev1+gc2ec2de',\n 'napari-plugin-engine': '0.2.0',\n 'napari-pyclesperanto-assistant': '0.12.0',\n 'napari-skimage-regionprops': '0.2.9',\n 'napari-svg': '0.1.6',\n 'napari-time-slicer': '0.4.2',\n 'napari-workflows': '0.1.2',\n 'natsort': '8.0.2',\n 'nbclient': '0.5.10',\n 'nbconvert': '6.4.0',\n 'nbdime': '3.1.1',\n 'nbformat': '5.1.3',\n 'nd2': '0.1.4',\n 'nest-asyncio': '1.5.4',\n 'networkx': '2.6.3',\n 'nodeenv': '1.6.0',\n 'notebook': '6.4.7',\n 'npe2': '0.1.1',\n 'numba': '0.55.0',\n 'numcodecs': '0.9.1',\n 'numpy': '1.20.3',\n 'numpydoc': '1.1.0',\n 'ome-types': '0.2.10',\n 'opencv-python-headless': '4.5.5.62',\n 'packaging': '21.3',\n 'pandas': '1.3.5',\n 'pandocfilters': '1.5.0',\n 'paramiko': '2.9.2',\n 'parso': '0.8.3',\n 'partd': '1.2.0',\n 'pathspec': '0.9.0',\n 'pdbpp': '0.10.3',\n 'peewee': '3.14.8',\n 'pep517': '0.12.0',\n 'pexpect': '4.8.0',\n 'pickleshare': '0.7.5',\n 'pillow': '8.4.0',\n 'pint': '0.18',\n 'pip': '21.3.1',\n 'platformdirs': '2.4.1',\n 'pluggy': '1.0.0',\n 'pooch': '1.5.2',\n 'poyo': '0.5.0',\n 'pre-commit': '2.16.0',\n 'prometheus-client': '0.12.0',\n 'prompt-toolkit': '3.0.24',\n 'psutil': '5.9.0',\n 'psygnal': '0.2.0',\n 'ptyprocess': '0.7.0',\n 'pure-eval': '0.2.1',\n 'py': '1.11.0',\n 'pybtex': '0.24.0',\n 'pybtex-docutils': '1.0.1',\n 'pyclesperanto-prototype': '0.12.0',\n 'pycodestyle': '2.8.0',\n 'pycparser': '2.21',\n 'pydantic': '1.9.0',\n 'pydata-sphinx-theme': '0.7.2',\n 'pyflakes': '2.2.0',\n 'pygments': '2.11.2',\n 'pymmcore': '10.1.1.70.5',\n 'pymmcore-plus': '0.1.8',\n 'pynacl': '1.5.0',\n 'pyopencl': '2021.2.13',\n 'pyopengl': '3.1.5',\n 'pyparsing': '3.0.6',\n 'pyperclip': '1.8.2',\n 'pyrepl': '0.9.0',\n 'pyro5': '5.13.1',\n 'pyrsistent': '0.18.1',\n 'pyside2': '5.15.2.1',\n 'pytest': '6.2.5',\n 'pytest-cookies': '0.6.1',\n 'pytest-cov': '3.0.0',\n 'pytest-faulthandler': '2.0.1',\n 'pytest-order': '1.0.1',\n 'pytest-qt': '4.0.2',\n 'python-dateutil': '2.8.2',\n 'python-dotenv': '0.19.2',\n 'python-slugify': '5.0.2',\n 'pytomlpp': '1.0.10',\n 'pytools': '2021.2.9',\n 'pytz': '2021.3',\n 'pywavelets': '1.2.0',\n 'pyyaml': '6.0',\n 'pyzmq': '22.3.0',\n 'qtconsole': '5.2.2',\n 'qtpy': '2.0.0',\n 'regex': '2021.11.10',\n 'requests': '2.27.1',\n 'rich': '11.0.0',\n 'rmsd': '1.4',\n 'ruamel.yaml': '0.17.20',\n 'ruamel.yaml.clib': '0.2.6',\n 'scikit-image': '0.19.1',\n 'scipy': '1.7.3',\n 'semgrep': '0.78.0',\n 'send2trash': '1.8.0',\n 'sentry-sdk': '1.5.4',\n 'serpent': '1.40',\n 'setuptools': '60.5.0',\n 'shiboken2': '5.15.2.1',\n 'six': '1.16.0',\n 'smmap': '5.0.0',\n 'sniffio': '1.2.0',\n 'snowballstemmer': '2.2.0',\n 'sortedcontainers': '2.4.0',\n 'soupsieve': '2.3.1',\n 'sourcery-cli': '0.10.0',\n 'sphinx': '4.4.0',\n 'sphinx-autodoc-typehints': '1.12.0',\n 'sphinx-book-theme': '0.1.10',\n 'sphinx-comments': '0.0.3',\n 'sphinx-copybutton': '0.4.0',\n 'sphinx-external-toc': '0.2.3',\n 'sphinx-jupyterbook-latex': '0.4.6',\n 'sphinx-multitoc-numbering': '0.1.3',\n 'sphinx-panels': '0.6.0',\n 'sphinx-tabs': '3.2.0',\n 'sphinx-thebe': '0.0.10',\n 'sphinx-togglebutton': '0.2.3',\n 'sphinxcontrib-applehelp': '1.0.2',\n 'sphinxcontrib-bibtex': '2.2.1',\n 'sphinxcontrib-devhelp': '1.0.2',\n 'sphinxcontrib-htmlhelp': '2.0.0',\n 'sphinxcontrib-jsmath': '1.0.1',\n 'sphinxcontrib-qthelp': '1.0.3',\n 'sphinxcontrib-serializinghtml': '1.1.5',\n 'sqlalchemy': '1.4.29',\n 'stack-data': '0.1.4',\n 'superqt': '0.2.5.post2.dev7+ga49bcd7',\n 'tensorstore': '0.1.16',\n 'terminado': '0.12.1',\n 'testpath': '0.5.0',\n 'text-unidecode': '1.3',\n 'tifffile': '2021.11.2',\n 'toml': '0.10.2',\n 'tomli': '2.0.0',\n 'toolz': '0.11.2',\n 'torch': '1.10.1',\n 'tornado': '6.1',\n 'tox': '3.24.5',\n 'tox-conda': '0.9.1',\n 'tqdm': '4.62.3',\n 'traitlets': '5.1.1',\n 'transforms3d': '0.3.1',\n 'transitions': '0.8.10',\n 'typed-ast': '1.5.1',\n 'typer': '0.4.0',\n 'typing-extensions': '4.0.1',\n 'uc-micro-py': '1.0.1',\n 'urllib3': '1.26.8',\n 'useq-schema': '0.1.1.dev13+g01d1b46.d20220120',\n 'valerius': '0.2.0',\n 'virtualenv': '20.13.0',\n 'vispy': '0.9.4',\n 'watchdog': '2.1.6',\n 'wcmatch': '8.3',\n 'wcwidth': '0.2.5',\n 'webencodings': '0.5.1',\n 'websocket-client': '1.2.3',\n 'wheel': '0.37.1',\n 'widgetsnbextension': '3.5.2',\n 'wmctrl': '0.4',\n 'wrapt': '1.13.3',\n 'wurlitzer': '3.0.2',\n 'xarray': '0.20.2',\n 'xmlschema': '1.9.2',\n 'yarl': '1.7.2',\n 'zarr': '2.10.3',\n 'zipp': '3.7.0'\n },\n 'platform': 'python',\n 'release': '0.4.14rc1.dev4+gcdf58d44b',\n 'sdk': {\n 'integrations': [\n 'aiohttp',\n 'argv',\n 'atexit',\n 'dedupe',\n 'excepthook',\n 'logging',\n 'modules',\n 'sqlalchemy',\n 'stdlib',\n 'threading',\n 'tornado'\n ],\n 'name': 'sentry.python',\n 'packages': [{'name': 'pypi:sentry-sdk', 'version': '1.5.4'}],\n 'version': '1.5.4'\n },\n 'server_name': '',\n 'tags': {\n 'platform.name': 'MacOS 10.15.7',\n 'platform.system': 'Darwin',\n 'qtpy.API_NAME': 'PySide2',\n 'qtpy.QT_VERSION': '5.15.2'\n },\n 'timestamp': '2022-02-02T01:30:00.229122Z'\n}\n```\n\n
\n\n> ***NOTE**: in the opt-in dialog, there is a checkbox labeled \"include local variables\",\nchecking this will include the value of variables in the local scope when an exception\noccurs. While these can be very useful when interpreting a bug report, they may\noccasionally include local file path strings. If that concerns you, please leave this\nbox unchecked*\n\n## Install\n\nThis plugin requires napari version 0.4.15 or greater, or the `main` branch with PR\n[napari/napari#4055](https://github.com/napari/napari/pull/4055).\n\nInstall via pip with:\n\n```sh\npip install napari-error-reporter\n```\n\nor in the built-in plugin installer (a restart will be required):\n\n\"Untitled\"\n\n\nThank you!!\n\n## Privacy FAQ\n\nEven with the multiple layers of opt-ins, and the attempts to wipe all personal info\nprior to sending reports, we understand that privacy is always a concern.\n\n### Do you collect personal info?\n\nWe make every attempt to collect ***no*** personally identifiable information. No\nname, location, IP address, etc... We do collect your\n([`uuid.getnode()`](https://docs.python.org/3.10/library/uuid.html#uuid.getnode)) to\nbe able to track bug resolution over time. As mentioned above, allowing local\nvariables to be collected may occasionally include a file path in the log.\nIf that concerns you, please leave that unchecked.\n\n### Is this shipped with napari?\n\n`napari-error-reporter` is **not** bundled with napari or listed as a napari dependency.\nIn order for reports to be sent, you must first install this plugin yourself, and then\nopt in on the next launch. If you uninstall the plugin, no more reports can be sent.\n\n### Who can access these reports?\n\nOnly the following napari core developers have access to these reports.\nIf [this](https://raw.githubusercontent.com/tlambert03/napari-error-reporter/main/ADMINS)\nlist changes in the future, you will be asked to opt-in again in napari:\n\n- Juan Nunez-Iglesias ([@jni](https://github.com/jni))\n- Talley Lambert ([@tlambert03](https://github.com/tlambert03))\n\n*This plugin is **not** associated with the Chan Zuckerberg Initiative*.\n\n### How will these reports be used?\n\nCommonly occuring errors will be will be manually purged of file paths and\nlocal variables and posted to https://github.com/napari/napari/issues\n\n### How long is data retained\n\nSentry retains event data for 90 days by default. For complete details,\nsee Sentry's page on [Security & Compliance](https://sentry.io/security/)\n","description_content_type":"text/markdown","keywords":null,"home_page":"https://github.com/tlambert03/napari-error-reporter","download_url":null,"author":"Talley Lambert","author_email":"talley.lambert@gmail.com","maintainer":null,"maintainer_email":null,"license":"BSD-3-Clause","classifier":["Development Status :: 3 - Alpha","Framework :: napari","License :: OSI Approved :: BSD License","Natural Language :: English","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: 3.10"],"requires_dist":["appdirs","qtpy","sentry-sdk","black ; extra == 'dev'","flake8 ; extra == 'dev'","flake8-docstrings ; extra == 'dev'","ipython ; extra == 'dev'","isort ; extra == 'dev'","jedi (<0.18.0) ; extra == 'dev'","mypy ; extra == 'dev'","pre-commit ; extra == 'dev'","pydocstyle ; extra == 'dev'","pytest ; extra == 'dev'","pytest ; extra == 'testing'","pytest-cov ; extra == 'testing'","pytest-qt ; extra == 'testing'","tox ; extra == 'testing'","tox-conda ; extra == 'testing'"],"requires_python":">=3.8","requires_external":null,"project_url":["Source Code, https://github.com/tlambert03/napari-error-reporter"],"provides_extra":["dev","testing"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}