getsentry / getsentry/sentry-python

Use `ParamSpec` for shared kwargs

Open
#2,321 0 comments 0 reactions 0 assignees View on GitHub
Component: DX Improvement Python Quality Improvement
Dominant language
Python
Stars
2.2k
Forks
669
Avg merge
1d 1h
Merged PRs (30d)
213

Description

### Problem Statement

We have a couple of hacks in place in the SDK (e.g. [here](https://github.com/getsentry/sentry-python/blob/b2c9af9d80859ba6a9e917daa02eb5f20d189591/sentry_sdk/client.py#L639-L659)) to enable autocompletion for things that share `args`/`kwargs` without having to duplicate said `args`/`kwargs` in multiple places.

### Solution Brainstorm

Python 3.10 (and `typing_extensions` for lower Python versions) includes support for `ParamSpec` https://sobolevn.me/2021/12/paramspec-guide that allows type signatures to "share" args/kwargs between functions. See if we can use this to replace the existing hacks.

Make sure that you get proper typing hints in an IDE (best to check both e.g. VSCode and PyCharm) and that [the API docs](https://getsentry.github.io/sentry-python/api.html) are also correct.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.