profile
viewpoint
Markus Unterwaditzer untitaker @getsentry Vienna, Austria https://unterwaditzer.net "Do not even think of telephoning me about this program. Send cash first!" --Author of the UNIX file command.

beetbox/beets 9660

music library manager and MusicBrainz tagger

quicktype/quicktype 5428

Generate types and converters from JSON, Schema, and GraphQL

mitsuhiko/pipsi 2004

pip script installer

mitsuhiko/redis-rs 1645

Redis library for rust

click-contrib/click-repl 141

Subcommand REPL for click apps

click-contrib/click-log 81

Simple and beautiful logging for click applications

niax/rust-email 45

Implementation of MIME Messages for Rust

lol-qwop/lol-qwop 34

Everyone who has a merged pull request is invited to become an admin of this repo.

python-webuntis/python-webuntis 30

Bindings for WebUntis

tehmaze/ansi 24

ANSI cursor movement and graphics in Python

created taguntitaker/hyperlink

tag0.1.2

Very fast link checker for CI.

created time in 3 minutes

push eventuntitaker/hyperlink

Markus Unterwaditzer

commit sha 5561a0ed7e4aa709f28007c2b3e537df0b6f4744

refactor to use arena allocation as far as possible

view details

push time in 3 minutes

push eventgetsentry/sentry-docs

Markus Unterwaditzer

commit sha 9dc02e8b29d245fcb6013beb56d6e9db2c8bf205

Update troubleshooting.mdx (#2552)

view details

push time in 28 minutes

delete branch getsentry/sentry-docs

delete branch : untitaker-patch-2

delete time in 28 minutes

push eventgetsentry/sentry-docs

Markus Unterwaditzer

commit sha bf37ff4beda580b7596566637ba70c6c03766858

fix: Add flask redirect (#2544)

view details

push time in 28 minutes

delete branch getsentry/sentry-docs

delete branch : fix/flask-redirect

delete time in 28 minutes

PullRequestReviewEvent

delete branch untitaker/hyperlink

delete branch : dependabot/cargo/libc-0.2.79

delete time in 4 hours

push eventuntitaker/hyperlink

dependabot-preview[bot]

commit sha 575788608a0500d3601d0a68258c2a7000219fd7

Bump libc from 0.2.78 to 0.2.79 (#9) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.78 to 0.2.79. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.78...0.2.79) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

view details

push time in 4 hours

PR merged untitaker/hyperlink

Bump libc from 0.2.78 to 0.2.79 dependencies

Bumps libc from 0.2.78 to 0.2.79. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-lang/libc/commit/1818abfb3123fa44c8c3dd071635e85d2170647f"><code>1818abf</code></a> libc 0.2.79</li> <li><a href="https://github.com/rust-lang/libc/commit/b4c81e9871e50c1d35ccc973952b1bb71b10aa9e"><code>b4c81e9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/libc/issues/1912">#1912</a> from pfmooney/illumos-pthread-getattr</li> <li><a href="https://github.com/rust-lang/libc/commit/02fe5de20b9d24db107932985aa3b4dc11fe408c"><code>02fe5de</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/libc/issues/1911">#1911</a> from joshtriplett/master</li> <li><a href="https://github.com/rust-lang/libc/commit/c4b0d5efd3a3cb17ae830b83bc2abc7ce83be24d"><code>c4b0d5e</code></a> Fix bootstrap on redox</li> <li><a href="https://github.com/rust-lang/libc/commit/8f57688ddec84c4be5064b74fe2b35b62d03fa64"><code>8f57688</code></a> pthread_getattr_np is not present on illumos</li> <li><a href="https://github.com/rust-lang/libc/commit/458f49c8e653344f7392afe9a15b1512d1d76148"><code>458f49c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/libc/issues/1894">#1894</a> from alistair23/alistair/rv32</li> <li><a href="https://github.com/rust-lang/libc/commit/2ae4135cbd9878403b9ed941f659f3216988b177"><code>2ae4135</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-lang/libc/issues/1889">#1889</a> from LinkTed/master</li> <li><a href="https://github.com/rust-lang/libc/commit/bdfd01599e0f1962287a9b54b01d05cede3c304b"><code>bdfd015</code></a> unix: riscv32: Move type defines inside confif</li> <li><a href="https://github.com/rust-lang/libc/commit/c6c918187411ddaaed735515c4169f4f2642ab09"><code>c6c9181</code></a> unix: riscv32: Fix CI failure</li> <li><a href="https://github.com/rust-lang/libc/commit/c9129d10a8c1263ddde933d81efe157044250d35"><code>c9129d1</code></a> ci/build.sh: Enable CI for riscv32gc-unknown-linux-gnu</li> <li>Additional commits viewable in <a href="https://github.com/rust-lang/libc/compare/0.2.78...0.2.79">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

</details>

+2 -2

0 comment

1 changed file

dependabot-preview[bot]

pr closed time in 4 hours

delete branch untitaker/hyperlink

delete branch : dependabot/cargo/syn-1.0.45

delete time in 4 hours

push eventuntitaker/hyperlink

dependabot-preview[bot]

commit sha 7c82e40f56b0025a88b2712b4ad5f258bd4a2c45

Bump syn from 1.0.42 to 1.0.45 (#10) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.42 to 1.0.45. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.42...1.0.45) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

view details

push time in 4 hours

PR merged untitaker/hyperlink

Bump syn from 1.0.42 to 1.0.45 dependencies

Bumps syn from 1.0.42 to 1.0.45. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p> <blockquote> <h2>1.0.45</h2> <ul> <li>Provide more detailed error messages when parsing specific literal kind (<a href="https://github-redirect.dependabot.com/dtolnay/syn/issues/908">#908</a>)</li> </ul> <h2>1.0.44</h2> <ul> <li>Fix some parsing of patterns inside of None-delimited groups (<a href="https://github-redirect.dependabot.com/dtolnay/syn/issues/907">#907</a>)</li> </ul> <h2>1.0.43</h2> <ul> <li>Add Parse impl for syn::Signature</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/dtolnay/syn/commit/41622dafbebbe2d724e073a22fd0795844c68d18"><code>41622da</code></a> Release 1.0.45</li> <li><a href="https://github.com/dtolnay/syn/commit/0db160e42efecfc261b89df4e3cd5ad41a7cfc74"><code>0db160e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/syn/issues/908">#908</a> from dtolnay/expectliteral</li> <li><a href="https://github.com/dtolnay/syn/commit/18ccb5b7756ea973d548f64866aeba0bd3d73755"><code>18ccb5b</code></a> Provide more detailed error when parsing specific literal kind</li> <li><a href="https://github.com/dtolnay/syn/commit/1e4e050bb0a73adb1edc632af43ea4353c9fc402"><code>1e4e050</code></a> Add test of Lit parsing error message</li> <li><a href="https://github.com/dtolnay/syn/commit/a9b648c9354701c15f5f271d2f41fb04d855e06a"><code>a9b648c</code></a> Release 1.0.44</li> <li><a href="https://github.com/dtolnay/syn/commit/22d3e6e0dcb1fa75ad1da0e3c79bb5d83fd8421c"><code>22d3e6e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/syn/issues/907">#907</a> from dtolnay/pat</li> <li><a href="https://github.com/dtolnay/syn/commit/43cdc12a44cb581fa32246b90bf993a05de9bee9"><code>43cdc12</code></a> Fix parsing path Pat inside of None-delimited group</li> <li><a href="https://github.com/dtolnay/syn/commit/915ca09e505faa720739782de318b5c9b2914ec0"><code>915ca09</code></a> Add regression test of pattern inside None group</li> <li><a href="https://github.com/dtolnay/syn/commit/4f547c9aad39883070bdb16c2b1f130423d2dddc"><code>4f547c9</code></a> Release 1.0.43</li> <li><a href="https://github.com/dtolnay/syn/commit/dd28111f6b0f8c7c4e9bdb209579a3fae8a6b865"><code>dd28111</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/syn/issues/904">#904</a> from dtolnay/signature</li> <li>Additional commits viewable in <a href="https://github.com/dtolnay/syn/compare/1.0.42...1.0.45">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

</details>

+2 -2

0 comment

1 changed file

dependabot-preview[bot]

pr closed time in 4 hours

delete branch untitaker/hyperlink

delete branch : dependabot/cargo/hermit-abi-0.1.17

delete time in 4 hours

push eventuntitaker/hyperlink

dependabot-preview[bot]

commit sha 395feacdbe374a74e9cf4dc891eaad2dd62f561d

Bump hermit-abi from 0.1.16 to 0.1.17 (#11) Bumps [hermit-abi](https://github.com/hermitcore/libhermit-rs) from 0.1.16 to 0.1.17. - [Release notes](https://github.com/hermitcore/libhermit-rs/releases) - [Commits](https://github.com/hermitcore/libhermit-rs/commits) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

view details

push time in 4 hours

PR merged untitaker/hyperlink

Bump hermit-abi from 0.1.16 to 0.1.17 dependencies

Bumps hermit-abi from 0.1.16 to 0.1.17. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/hermitcore/libhermit-rs/commits">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

</details>

+2 -2

0 comment

1 changed file

dependabot-preview[bot]

pr closed time in 4 hours

startedfitzgen/bumpalo

started time in 5 hours

create barnchgetsentry/sentry

branch : fix/userfeedback-handle-missing-keys

created branch time in 6 hours

issue commentgetsentry/sentry-python

How to silent "Sentry is attempting to send N pending error messages" when exception is raised?

Yes but to be clear those lines should not be necessary:

                except Exception as err:
                    sentry_sdk.capture_exception(err)
                    sentry_sdk.flush()
                    raise err
alexey-tereshenkov-oxb

comment created time in 8 hours

pull request commentgetsentry/sentry-python

feat(attachments): Add basic support for attachments

@philipphofmann there's no such thing as an overload in Python. You can declare an overload in mypy, but that's almost outside of the language.

mitsuhiko

comment created time in 9 hours

PR opened getsentry/sentry-docs

Update troubleshooting.mdx
+1 -1

0 comment

1 changed file

pr created time in 9 hours

create barnchgetsentry/sentry-docs

branch : untitaker-patch-2

created branch time in 9 hours

PullRequestReviewEvent

startedlumol-org/soa-derive

started time in 20 hours

startedraviqqe/liche

started time in 21 hours

push eventuntitaker/hyperlink

Markus Unterwaditzer

commit sha 2bcc60bce667aef75eb488438cab736dd89fd2e5

link to http-server

view details

push time in 21 hours

push eventuntitaker/hyperlink

Markus Unterwaditzer

commit sha 408f5c6405b0189fbeff813e1126b976c07246bc

soften performance claims

view details

push time in 21 hours

push eventuntitaker/hyperlink

Markus Unterwaditzer

commit sha 40c2c5a35ff3a40dd51da51c8603616c0d5a6ca9

add links to liche and muffet

view details

push time in 21 hours

startedraviqqe/muffet

started time in 21 hours

Pull request review commentgetsentry/sentry-python

feat(dev): Add fixtures for testing `traces_sampler`

 def render_span(span):         return "\n".join(render_span(root_span))      return inner+++@pytest.fixture(name="Any")+def make_any():+    """+    An object which matches any instance of the class passed to the object at+    instantiation time.++    Useful for assert_called_with statements.+    """++    class Any(object):+        def __init__(self, target_class):+            self.target_class = target_class++        def __eq__(self, other):+            return isinstance(other, self.target_class)++    return Any+++@pytest.fixture(name="StringContaining")+def make_string_containing():+    """+    An object which matches any string containing the substring passed to the+    object at instantiation time.++    Useful for assert_called_with statements.+    """++    class StringContaining(object):+        def __init__(self, substring):+            self.substring = substring++        def __eq__(self, test_string):+            return self.substring in test_string++    return StringContaining+++@pytest.fixture(name="FunctionMock")+def function_mock():+    """+    Just like a mock.Mock object, but one which always passes an isfunction+    test.+    """++    class FunctionMock(mock.Mock):+        def __init__(self, *args, **kwargs):+            super(FunctionMock, self).__init__(*args, **kwargs)+            self.__class__ = FunctionType++    return FunctionMock

Feel free to add... I am not entirely sure why people keep using this stuff but I don't want to fight it.

lobsterkatie

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-python

feat(dev): Add fixtures for testing `traces_sampler`

 def render_span(span):         return "\n".join(render_span(root_span))      return inner+++@pytest.fixture(name="Any")+def make_any():+    """+    An object which matches any instance of the class passed to the object at+    instantiation time.++    Useful for assert_called_with statements.+    """++    class Any(object):+        def __init__(self, target_class):+            self.target_class = target_class++        def __eq__(self, other):+            return isinstance(other, self.target_class)++    return Any+++@pytest.fixture(name="StringContaining")+def make_string_containing():+    """+    An object which matches any string containing the substring passed to the+    object at instantiation time.++    Useful for assert_called_with statements.+    """++    class StringContaining(object):+        def __init__(self, substring):+            self.substring = substring++        def __eq__(self, test_string):+            return self.substring in test_string++    return StringContaining+++@pytest.fixture(name="FunctionMock")+def function_mock():+    """+    Just like a mock.Mock object, but one which always passes an isfunction+    test.+    """++    class FunctionMock(mock.Mock):+        def __init__(self, *args, **kwargs):+            super(FunctionMock, self).__init__(*args, **kwargs)+            self.__class__ = FunctionType++    return FunctionMock
def test_passes_custom_samling_context_from_start_transaction_to_traces_sampler(
    sentry_init
):
    sampler_calls = []
    sentry_init(traces_sampler=sampler_calls.append)

    start_transaction(custom_sampling_context={"dogs": "yes", "cats": "maybe"})

    assert sampler_calls == [{"dogs": "yes", "cats": "maybe"}]

Unless you need to account for additional keys or calls I would go with this...

lobsterkatie

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-python

feat(dev): Add fixtures for testing `traces_sampler`

 pytest-localserver==0.5.0 pytest-cov==2.8.1 jsonschema==3.2.0 pyrsistent==0.16.0 # TODO(py3): 0.17.0 requires python3, see https://github.com/tobgu/pyrsistent/issues/205+mock # for testing under python < 3.3

I don't know how you're going to use mock but I've just been creating my own stub classes. I find a lot of mock's behavior too magical wrt attribute access on the mock obj

lobsterkatie

comment created time in a day

PullRequestReviewEvent

pull request commentgetsentry/sentry-python

feat(dev): Add fixtures for testing `traces_sampler`

Perhaps rather than mushing these fixtures back into the main PR, I could pull the tests out of that and include them here, and just mark them all xfail for the moment?

That's also fine, though I think anything under 400loc is reviewable.

lobsterkatie

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentgetsentry/sentry-python

feat(dev): Add fixtures for testing `traces_sampler`

 pytest-localserver==0.5.0 pytest-cov==2.8.1 jsonschema==3.2.0 pyrsistent==0.16.0 # TODO(py3): 0.17.0 requires python3, see https://github.com/tobgu/pyrsistent/issues/205+mock # for testing under python < 3.3

Instead of doing this please just use the pytest monkeypatch fixture

lobsterkatie

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent

issue commentgetsentry/sentry-python

Version 0.17.8 broke Celery tasks with custom Task class

Thanks, this snippet helps

user37596

comment created time in a day

Pull request review commentgetsentry/relay

ref: Remove match_regex

 fn parse_variant_attributes(attrs: &[syn::Attribute]) -> VariantAttrs { fn is_newtype(variant: &synstructure::VariantInfo) -> bool {     variant.bindings().len() == 1 && variant.bindings()[0].ast().ident.is_none() }++fn parse_character_set(ident: &Ident, value: &str) -> TokenStream {

This is the kind of function that is fun to write (always feeling smart when writing trivial parsers), but not great to look back at.

untitaker

comment created time in a day

PullRequestReviewEvent

PR opened getsentry/relay

ref: Remove match_regex

Remove match-regex and replace it with something much simpler. This needs more tests. It is tested in Python, where I manually ran the tests and they worked fine.

+146 -56

0 comment

6 changed files

pr created time in a day

create barnchgetsentry/relay

branch : ref/remove-match-regex

created branch time in a day

Pull request review commentgetsentry/sentry-python

[WIP] fix(tracing): Make unsampled transactions findable on the scope

 def __init__(         Span.__init__(self, **kwargs)         self.name = name +        # transactions (when considered as spans) belong to themselves (when+        # considered as transactions)+        self._containing_transaction = self

Ah no I don't think that matters

lobsterkatie

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-python

[WIP] fix(tracing): Make unsampled transactions findable on the scope

 def __init__(         Span.__init__(self, **kwargs)         self.name = name +        # transactions (when considered as spans) belong to themselves (when+        # considered as transactions)+        self._containing_transaction = self

creating circular references is generally less easy on memory as they are collected whenever, as opposed to "linear" ones, and the gc is also slower if it needs to do more.

don't ask me by how much or if it matters, but if it's avoidable it's certainly better. I would create a new sentinel value like this:

_SELF = object()

and check for it like this:

if self._containing_transaction is _SELF:
lobsterkatie

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-python

[WIP] fix(tracing): Make unsampled transactions findable on the scope

 def __init__(         Span.__init__(self, **kwargs)         self.name = name +        # transactions (when considered as spans) belong to themselves (when+        # considered as transactions)+        self._containing_transaction = self

I am not sure if None is already used as a special value. If it is we need another one ("self" or something else). But yeah in either case the getter needs to special-case.

lobsterkatie

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-data-schemas

feat(packaging) Creates a python package to simplify importing the schema in python projects.

+import os+import setuptools+import shutil++def get_requirements():+    with open(u"requirements.txt") as fp:+        return [x.strip() for x in fp.read().split("\n") if not x.startswith("#")]++# Copies the schema in the module so that setuptools is able to+# find the file and add it to the package.+if os.path.isfile("../relay/event.schema.json"):+    shutil.copyfile(+        "../relay/event.schema.json",+        "./sentry_data_schemas/event.schema.json"+    )++if os.path.isfile("../LICENSE"):+    shutil.copyfile(+        "../LICENSE",+        "./LICENSE"+    )

I can't really think of a simpler way to get this working so perhaps we just do the copyfile unconditionally adn leave it at that

fpacifici

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-data-schemas

feat(packaging) Creates a python package to simplify importing the schema in python projects.

+import os+import setuptools+import shutil++# Copies the schema in the module so that setuptools is able to+# find the file and add it to the package.+if os.path.isfile("../relay/event.schema.json"):+    shutil.copyfile(+        "../relay/event.schema.json",+        "./sentry_data_schemas/event.schema.json"+    )++with open("README.md", "r") as fh:+    long_description = fh.read()++setuptools.setup(+    name="sentry-data-schemas",+    version="0.0.1",

yeah that sounds good

fpacifici

comment created time in a day

PullRequestReviewEvent

Pull request review commentgetsentry/sentry-python

[WIP] fix(tracing): Make unsampled transactions findable on the scope

 def __init__(         Span.__init__(self, **kwargs)         self.name = name +        # transactions (when considered as spans) belong to themselves (when+        # considered as transactions)+        self._containing_transaction = self

would much rather store None or some other special value than create circular references

lobsterkatie

comment created time in a day

PullRequestReviewEvent

pull request commentgetsentry/sentry-docs

Update aiohttp integration docs

cool, merging when the release goes out

asovchar

comment created time in a day

PullRequestReviewEvent

push eventgetsentry/sentry-python

Anton Ovchar

commit sha 1cf5d8dc275f364ce89b3d0469a3e233817743f8

Add transaction styling for aiohttp integration (#876)

view details

push time in a day

pull request commentgetsentry/sentry-python

Add transaction styling for aiohttp integration

Can you file a PR against https://github.com/getsentry/sentry-docs for documenting this? In the meantime I will merge this, thanks!

asovchar

comment created time in a day

push eventgetsentry/sentry

Markus Unterwaditzer

commit sha 0c62efa1e6d9b8ad32167bb91aec0a76b6791dc1

ref: Clean up fixture usage and set upper limit on tasks executed

view details

push time in a day

PR opened getsentry/sentry

test(reprocessing): Reenable reprocessing test

Reverts #21284

+15 -10

0 comment

2 changed files

pr created time in a day

create barnchgetsentry/sentry

branch : fix/reenable-reprocessing-test

created branch time in a day

push eventgetsentry/sentry-python

Chillar Anand

commit sha c752e9f28d733b85ef7eb5616bc0c9871c848317

fix(django): Fix complex either url patterns in Django (#875)

view details

push time in a day

issue closedgetsentry/sentry-python

Incorrect parsing of complex urls in django

Sentry is parsing a complex URL as /api/{version})/log instead of /api/{version}/log.

Screenshot 2020-10-17 at 10 40 47 AM

closed time in a day

ChillarAnand

PR opened getsentry/sentry-docs

fix: Add flask redirect
+4 -0

0 comment

1 changed file

pr created time in a day

create barnchgetsentry/sentry-docs

branch : fix/flask-redirect

created branch time in a day

push eventuntitaker/hyperlink

dependabot-preview[bot]

commit sha 4285cf475f83f785e909e75c1ccc781f2ecdb969

Bump quick-xml from 0.19.0 to 0.20.0 (#8) Bumps [quick-xml](https://github.com/tafia/quick-xml) from 0.19.0 to 0.20.0. - [Release notes](https://github.com/tafia/quick-xml/releases) - [Changelog](https://github.com/tafia/quick-xml/blob/master/Changelog.md) - [Commits](https://github.com/tafia/quick-xml/compare/v0.19.0...v0.20.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>

view details

push time in a day

PR merged untitaker/hyperlink

Bump quick-xml from 0.19.0 to 0.20.0 dependencies

Bumps quick-xml from 0.19.0 to 0.20.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tafia/quick-xml/blob/master/Changelog.md">quick-xml's changelog</a>.</em></p> <blockquote> <h2>0.20.0</h2> <ul> <li>test: Add tests for indentation</li> <li>test: Add complete tests for serde deserialization</li> <li>feat: Use self-closed tags when serialize types without nested elements with serde</li> <li>feat: Add two new API to the <code>BytesStart</code>: <code>to_borrowed()</code> and <code>to_end()</code></li> <li>feat: Add ability to specify name of the root tag and indentation settings when serialize type with serde</li> <li>feat: Add support for serialization of <ul> <li>unit enums variants</li> <li>newtype structs and enum variants</li> <li>unnamed tuples, tuple structs and enum variants</li> </ul> </li> <li>fix: More consistent structs serialization</li> <li>fix: Deserialization of newtype structs</li> <li>fix: <code>unit</code> deserialization and newtype and struct deserialization in adjacently tagged enums</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tafia/quick-xml/commit/ba92fb33998afb4ec70e4bb332ca8e32b340d5d7"><code>ba92fb3</code></a> bump v0.20.0</li> <li><a href="https://github.com/tafia/quick-xml/commit/95c924131749f43f458745b8a6a04f8ab80c0c2d"><code>95c9241</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/tafia/quick-xml/issues/236">#236</a> from Mingun/fix-serde</li> <li><a href="https://github.com/tafia/quick-xml/commit/9981f816ed73810b6a8b89762de752d3220ee751"><code>9981f81</code></a> Deserializer: disable tests broken due to <a href="https://github.com/serde-rs/serde/i">https://github.com/serde-rs/serde/i</a>...</li> <li><a href="https://github.com/tafia/quick-xml/commit/47e1bc0845267ccbc87b377428bd86a0c3eadeb7"><code>47e1bc0</code></a> Deserializer: Fix <code>unit</code> deserialization and newtype and struct deserializati...</li> <li><a href="https://github.com/tafia/quick-xml/commit/0829d7e85bc06125b8b7e2b6b0c041f2d8698ecc"><code>0829d7e</code></a> Deserializer: Correctly deserialize newtype structs</li> <li><a href="https://github.com/tafia/quick-xml/commit/498440d2a6dc2698e1345eaf11784ba6bbd093a9"><code>498440d</code></a> Deserializer: Add tests</li> <li><a href="https://github.com/tafia/quick-xml/commit/4bbd12c1d8632a268c0503f2eb10e92c2276e62a"><code>4bbd12c</code></a> Deserializer: Add some documentation</li> <li><a href="https://github.com/tafia/quick-xml/commit/a01dd4fe83fc5d0700dced453d16267ad8cc21f1"><code>a01dd4f</code></a> Serializer: Implement serialize_tuple, serialize_tuple_struct, and serialize_...</li> <li><a href="https://github.com/tafia/quick-xml/commit/768105390796688b57b421bac04818573429d23d"><code>7681053</code></a> Serializer: Implement serialize_struct_variant and fix flatten issues</li> <li><a href="https://github.com/tafia/quick-xml/commit/65c87de12f245241efc0784be0a5be7ea66cc662"><code>65c87de</code></a> Serializer: Implement serialize_newtype_struct</li> <li>Additional commits viewable in <a href="https://github.com/tafia/quick-xml/compare/v0.19.0...v0.20.0">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

</details>

+3 -3

0 comment

2 changed files

dependabot-preview[bot]

pr closed time in a day

push eventgetsentry/sentry-docs

Markus Unterwaditzer

commit sha b3b54369eeeccb91657ba2275f51dfea0246757f

Update options.mdx (#2543)

view details

push time in a day

delete branch getsentry/sentry-docs

delete branch : untitaker-patch-2

delete time in a day

PR merged getsentry/sentry-docs

Reviewers
Update options.mdx

tracesSampler is not implemented in Python.

+1 -1

1 comment

1 changed file

untitaker

pr closed time in a day

pull request commentgetsentry/sentry-python

Add transaction styling for aiohttp integration

thx, can you fix flake8 errors?

https://travis-ci.com/github/getsentry/sentry-python/jobs/401912287

asovchar

comment created time in a day

PullRequestReviewEvent

issue closedgetsentry/sentry-python

`sentry_sdk.tracing.Span` backward incompatibility

Description

Upgraded from0.14.2 to the latest release 0.19.0 and lost access to sentry_sdk.tracing.Span.transaction, as transaction is no longer part of the class attributes.

I see that transactions are handled through tracing.Transaction, and backward compatibility is maintained in the constructor of Span when transaction is passed as a keyword argument. Also there are workarounds to handle exceptions arising from this issue.

However, the fact remains: If a user tries to set the Span.transaction directly, which is permitted as part of the public API in 0.14.2, will see exceptions raised instead in 0.19.0.

So I would like to raise the following concerns:

  • If the project follow semantic versioning, the deprecation of class attributes in minor versions is inconsistent.
  • Are there other similar deprecation in the public API that could be somehow emphasized?

closed time in a day

kodemartin

issue commentgetsentry/sentry-python

`sentry_sdk.tracing.Span` backward incompatibility

ok thanks. We are open to adding a compat shim if more people are annoyed by this but I think there are not a lot of users who access span directly like that.

kodemartin

comment created time in a day

issue commentgetsentry/sentry-python

Filter/Limit Transactions Before Send

@serebrov thanks, this was a mistake. I opened https://github.com/getsentry/sentry-docs/pull/2543

kpurdon

comment created time in a day

IssuesEvent

issue closedgetsentry/sentry-python

Filter/Limit Transactions Before Send

Hello, I've done quite a bit of searching and can't seem to find what I'm looking for. I enabled performance monitoring by setting traces_sample_rate > 0. However, I'd like to be able to filter some things from being recorded as transactions (health checks endpoints, ...). Is it possible to do this?

closed time in a day

kpurdon

PR opened getsentry/sentry-docs

Update options.mdx

tracesSampler is not implemented in Python.

+1 -1

0 comment

1 changed file

pr created time in a day

create barnchgetsentry/sentry-docs

branch : untitaker-patch-2

created branch time in a day

push eventgetsentry/sentry-docs

Markus Unterwaditzer

commit sha ff41449e1a2fc3c7f78244ce69f15d6e63a3c21a

ref: Rework configure_scope examples in Python (#2489)

view details

push time in a day

delete branch getsentry/sentry-docs

delete branch : ref/no-configure-scope

delete time in a day

Pull request review commentgetsentry/sentry-docs

ref: Rework configure_scope examples in Python

 ```python-from sentry_sdk import configure_scope+import sentry_sdk -with configure_scope() as scope:+with sentry_sdk.configure_scope() as scope:     scope.set_tag("my-tag", "my value")-    scope.user = {'id': 42, 'email': 'john.doe@example.com'}+    scope.user = {"id": 42, "email": "john.doe@example.com"}++# Or:++sentry_sdk.set_tag("my-tag", "my value")+sentry_sdk.set_user({"id": 42, "email": "john.doe@example.com"})

I added clear() but set_level already exists. I think we should strive for exposing more stuff as global api rather than documenting the differences.

untitaker

comment created time in a day

PullRequestReviewEvent

push eventgetsentry/sentry-docs

Markus Unterwaditzer

commit sha fb70f2e00e498db604dca7054454f811599c53e5

apply review suggestions

view details

push time in a day

issue commentgetsentry/sentry-python

Sentry has ~8% overhead in Django test suites

Thanks @ChillarAnand that confirms the suspicion. I hope we can free resources internally to work on this.

Also, is there a way to estimate the approximate overhead of sentry profiling in production projects?

this generally depends on the kind of web framework and what kind of extensions you are using -- 8% is definetly on the upper end, also because we hook into a lot of Django. Integrations for AIOHTTP, Sanic and Flask capture much less data and as such the overhead will be lower. However, if you install a lot of Flask extensions you may get close to the same overhead as Django.

danpalmer

comment created time in a day

issue closedgetsentry/sentry-python

How to silent "Sentry is attempting to send N pending error messages" when exception is raised?

I am using an on-premise version of the Sentry, Sentry 20.10.0.dev06e8f61c and Python package sentry-sdk 0.19.0.

I have asked previously how to silent "Sentry is attempting to send N pending error messages" message when collecting performance metrics and it works great by calling sentry_sdk.flush():

def sentryperf(func):
    """Decorator to be used for submitting perf metrics to Sentry."""
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        with sentry_sdk.configure_scope():
            with sentry_sdk.start_transaction(
                    op="task",
                    name=f"cli:{func.__name__}",
            ):
                result = func(*args, **kwargs)
            sentry_sdk.flush()
            return result
    return wrapper

I use this decorator to wrap the functions I'd like to collect performance metrics on.

However, if an exception is raised, the flush() method won't be called simply because the interpreter never gets to that line of code.

import sentry_sdk

sentry_sdk.init(
    "address",
    traces_sample_rate=1.0,
)

@sentryperf
def foo():
    print("hello!")
    1/0
    return

foo()

This means that for situations when an exception is raised, the message

Sentry is attempting to send 1 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit

will still be shown.

I've experimented wrapping the function call in the decorator above in try/except/finally block:

                try:
                    result = func(*args, **kwargs)
                except Exception as err:
                    sentry_sdk.capture_message(err)
                    print("Error!")
                    result = None
                finally:
                    sentry_sdk.flush()

and this works if I catch the exception, but as soon as I re-raise the exception, the message from Sentry that it's attempting to send error messages is shown.

Is there any way to silent this error message even when exceptions are raised?

That is, how do I silent the message from Sentry about sending the error messages with this case:

import sentry_sdk

sentry_sdk.init(
    "address",
    traces_sample_rate=1.0,
)

def foo():
    print("hello!")
    1/0
    return

foo()

closed time in a day

alexey-tereshenkov-oxb

issue commentgetsentry/sentry-python

How to silent "Sentry is attempting to send N pending error messages" when exception is raised?

you can use bare try: ... finally: ... without catching the exception. Just delete the except: block.

If you want to do that anyway, use capture_exception(err) instead.

alexey-tereshenkov-oxb

comment created time in a day

issue commentgetsentry/sentry-python

Integration for FastAPI

@KrunchMuffin you're running into #860, fixed in 0.19.1. I'm collapsing your comment because it's unrelated.

untitaker

comment created time in a day

issue commentgetsentry/sentry-python

`sentry_sdk.tracing.Span` backward incompatibility

Hey @kodemartin, please refer to https://github.com/getsentry/sentry-python/blob/master/CHANGES.md#versioning-policy for our versioning policy. The tldr is that 0.x can contain breaking changes, and 0.x.x not. Because the major version is 0, semver allows for this. This is consistent with how most other packages handle version 0.

Generally we try not to break things without deprecation period/warning. As for span.transaction, I think this was an oversight on our end, so thanks for bringing this to our attention. Generally anything span/tracing related is still very fresh. At this point we can add a compatibility shim but we'd recommend setting the transaction on scope, which will forward properly.

Hope that makes sense.

kodemartin

comment created time in a day

more