U 췀g @sddlZddlZddlmZddlmZddlmZer`ddlmZm Z ddl m Z m Z m Z mZdgZGdddeZd d Zd d Zd dZdS)N)MYPY)OP) Integration) AddressFamily SocketKind)TupleOptionalUnionListSocketIntegrationc@s&eZdZdZdeZeddZdS)r socketz auto.socket.cCsttdS)zs patches two of the most used functions of socket: create_connection and getaddrinfo(dns resolver) N)_patch_create_connection_patch_getaddrinforrL/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/socket.py setup_onceszSocketIntegration.setup_onceN)__name__ __module__ __qualname__ identifierorigin staticmethodrrrrrr s c Cs6z |}Wnttfk r$YnXd||f}|S)Nz%s:%s)decodeUnicodeDecodeErrorAttributeError)hostport descriptionrrr_get_span_descriptions   rcs$tjtjdffdd }|t_dS)Nc stt}|dkr"|||Stjtjt|d|dtjd@}| d|| d|| d||||dW5QRSQRXdS)Nropnameraddresstimeoutsource_address)r#r$r%) sentry_sdk get_clientget_integrationr start_spanrZSOCKET_CONNECTIONrrset_data)r#r$r% integrationspanZreal_create_connectionrrcreate_connection.s"    z3_patch_create_connection..create_connection)r r._GLOBAL_DEFAULT_TIMEOUT)r.rr-rr *s r cstjdfdd }|t_dS)Nrc stt}|dkr(||||||Stjtjt||tjd8}| d|| d|||||||W5QRSQRXdS)Nr rr) r&r'r(r r)rZ SOCKET_DNSrrr*)rrfamilytypeprotoflagsr+r,Zreal_getaddrinforr getaddrinfoLs  z'_patch_getaddrinfo..getaddrinfo)rrrr)r r5)r5rr4rrHsr)r r&Zsentry_sdk._typesrZsentry_sdk.constsrZsentry_sdk.integrationsrrrtypingrrr r __all__r rr rrrrrs