X7ROOT File Manager
Current Path:
/opt/hc_python/lib/python3.12/site-packages/sentry_sdk
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
??
..
??
__init__.py
(1.46 KB)
??
__pycache__
??
_batcher.py
(5.7 KB)
??
_compat.py
(3 KB)
??
_init_implementation.py
(2.43 KB)
??
_log_batcher.py
(1.88 KB)
??
_lru_cache.py
(1.14 KB)
??
_metrics_batcher.py
(1.21 KB)
??
_queue.py
(10.98 KB)
??
_span_batcher.py
(8.12 KB)
??
_types.py
(13.16 KB)
??
_werkzeug.py
(3.85 KB)
??
ai
??
api.py
(15.59 KB)
??
attachments.py
(2.95 KB)
??
client.py
(49.95 KB)
??
consts.py
(61.95 KB)
??
crons
??
debug.py
(959 B)
??
envelope.py
(9.37 KB)
??
feature_flags.py
(2.5 KB)
??
hub.py
(24.54 KB)
??
integrations
??
logger.py
(2.6 KB)
??
metrics.py
(1.42 KB)
??
monitor.py
(4.47 KB)
??
profiler
??
py.typed
(0 B)
??
scope.py
(74.09 KB)
??
scrubber.py
(5.99 KB)
??
serializer.py
(12.82 KB)
??
session.py
(5.08 KB)
??
sessions.py
(8.59 KB)
??
spotlight.py
(11.85 KB)
??
traces.py
(25.08 KB)
??
tracing.py
(50.33 KB)
??
tracing_utils.py
(54.36 KB)
??
transport.py
(44.41 KB)
??
types.py
(1.24 KB)
??
utils.py
(65.96 KB)
??
worker.py
(10.91 KB)
Editing: session.py
import uuid from datetime import datetime, timezone from typing import TYPE_CHECKING from sentry_sdk.utils import format_timestamp if TYPE_CHECKING: from typing import Any, Dict, Optional, Union from sentry_sdk._types import SessionStatus def _minute_trunc(ts: "datetime") -> "datetime": return ts.replace(second=0, microsecond=0) def _make_uuid( val: "Union[str, uuid.UUID]", ) -> "uuid.UUID": if isinstance(val, uuid.UUID): return val return uuid.UUID(val) class Session: def __init__( self, sid: "Optional[Union[str, uuid.UUID]]" = None, did: "Optional[str]" = None, timestamp: "Optional[datetime]" = None, started: "Optional[datetime]" = None, duration: "Optional[float]" = None, status: "Optional[SessionStatus]" = None, release: "Optional[str]" = None, environment: "Optional[str]" = None, user_agent: "Optional[str]" = None, ip_address: "Optional[str]" = None, errors: "Optional[int]" = None, user: "Optional[Any]" = None, session_mode: str = "application", ) -> None: if sid is None: sid = uuid.uuid4() if started is None: started = datetime.now(timezone.utc) if status is None: status = "ok" self.status = status self.did: "Optional[str]" = None self.started = started self.release: "Optional[str]" = None self.environment: "Optional[str]" = None self.duration: "Optional[float]" = None self.user_agent: "Optional[str]" = None self.ip_address: "Optional[str]" = None self.session_mode: str = session_mode self.errors = 0 self.update( sid=sid, did=did, timestamp=timestamp, duration=duration, release=release, environment=environment, user_agent=user_agent, ip_address=ip_address, errors=errors, user=user, ) @property def truncated_started(self) -> "datetime": return _minute_trunc(self.started) def update( self, sid: "Optional[Union[str, uuid.UUID]]" = None, did: "Optional[str]" = None, timestamp: "Optional[datetime]" = None, started: "Optional[datetime]" = None, duration: "Optional[float]" = None, status: "Optional[SessionStatus]" = None, release: "Optional[str]" = None, environment: "Optional[str]" = None, user_agent: "Optional[str]" = None, ip_address: "Optional[str]" = None, errors: "Optional[int]" = None, user: "Optional[Any]" = None, ) -> None: # If a user is supplied we pull some data form it if user: if ip_address is None: ip_address = user.get("ip_address") if did is None: did = user.get("id") or user.get("email") or user.get("username") if sid is not None: self.sid = _make_uuid(sid) if did is not None: self.did = str(did) if timestamp is None: timestamp = datetime.now(timezone.utc) self.timestamp = timestamp if started is not None: self.started = started if duration is not None: self.duration = duration if release is not None: self.release = release if environment is not None: self.environment = environment if ip_address is not None: self.ip_address = ip_address if user_agent is not None: self.user_agent = user_agent if errors is not None: self.errors = errors if status is not None: self.status = status def close( self, status: "Optional[SessionStatus]" = None, ) -> "Any": if status is None and self.status == "ok": status = "exited" if status is not None: self.update(status=status) def get_json_attrs( self, with_user_info: "Optional[bool]" = True, ) -> "Any": attrs = {} if self.release is not None: attrs["release"] = self.release if self.environment is not None: attrs["environment"] = self.environment if with_user_info: if self.ip_address is not None: attrs["ip_address"] = self.ip_address if self.user_agent is not None: attrs["user_agent"] = self.user_agent return attrs def to_json(self) -> "Any": rv: "Dict[str, Any]" = { "sid": str(self.sid), "init": True, "started": format_timestamp(self.started), "timestamp": format_timestamp(self.timestamp), "status": self.status, } if self.errors: rv["errors"] = self.errors if self.did is not None: rv["did"] = self.did if self.duration is not None: rv["duration"] = self.duration attrs = self.get_json_attrs() if attrs: rv["attrs"] = attrs return rv
Upload File
Create Folder