karrio-server 2025.5.1__py3-none-any.whl → 2025.5.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
karrio/server/VERSION CHANGED
@@ -1 +1 @@
1
- 2025.5.1
1
+ 2025.5.3
@@ -57,6 +57,7 @@ if POSTHOG_KEY:
57
57
  # SENTRY_PROFILES_SAMPLE_RATE - Profile sampling rate 0.0-1.0 (default: 1.0)
58
58
  # SENTRY_SEND_PII - Send personally identifiable information (default: true)
59
59
  # SENTRY_DEBUG - Enable Sentry debug mode (default: false)
60
+ # SENTRY_TRACE_PROPAGATION_TARGETS - Regex patterns for distributed tracing (default: localhost)
60
61
  #
61
62
  # =============================================================================
62
63
 
@@ -64,10 +65,18 @@ sentry_sdk.utils.MAX_STRING_LENGTH = 4096
64
65
  SENTRY_DSN = config("SENTRY_DSN", default=None)
65
66
  SENTRY_ENVIRONMENT = config("SENTRY_ENVIRONMENT", default=config("ENV", default="production"))
66
67
  SENTRY_RELEASE = config("SENTRY_RELEASE", default=config("VERSION", default=None))
67
- SENTRY_TRACES_SAMPLE_RATE = config("SENTRY_TRACES_SAMPLE_RATE", default=1.0, cast=float)
68
- SENTRY_PROFILES_SAMPLE_RATE = config("SENTRY_PROFILES_SAMPLE_RATE", default=1.0, cast=float)
68
+ # Lower default sample rates for better performance (was 1.0/100%)
69
+ SENTRY_TRACES_SAMPLE_RATE = config("SENTRY_TRACES_SAMPLE_RATE", default=0.1, cast=float) # 10% of transactions
70
+ SENTRY_PROFILES_SAMPLE_RATE = config("SENTRY_PROFILES_SAMPLE_RATE", default=0.0, cast=float) # Disabled by default
69
71
  SENTRY_SEND_PII = config("SENTRY_SEND_PII", default=True, cast=bool)
70
72
  SENTRY_DEBUG = config("SENTRY_DEBUG", default=False, cast=bool)
73
+ # Trace propagation targets for distributed tracing (internal services only)
74
+ # Comma-separated list of regex patterns; headers are NOT sent to carrier APIs
75
+ # Configure via env var for your domains (e.g., ".*\.yourdomain\.com,localhost")
76
+ SENTRY_TRACE_PROPAGATION_TARGETS = config(
77
+ "SENTRY_TRACE_PROPAGATION_TARGETS",
78
+ default=r"localhost",
79
+ )
71
80
 
72
81
 
73
82
  def _sentry_before_send(event, hint):
@@ -136,8 +145,8 @@ if SENTRY_DSN:
136
145
  integrations = [
137
146
  DjangoIntegration(
138
147
  transaction_style="url", # Use URL patterns for transaction names
139
- middleware_spans=True, # Create spans for middleware
140
- signals_spans=True, # Create spans for Django signals
148
+ middleware_spans=False, # Disabled for performance (was True)
149
+ signals_spans=False, # Disabled for performance (was True)
141
150
  ),
142
151
  ]
143
152
 
@@ -174,6 +183,13 @@ if SENTRY_DSN:
174
183
  except Exception:
175
184
  pass # strawberry integration may not be available
176
185
 
186
+ # Parse trace propagation targets (comma-separated regex patterns)
187
+ trace_targets = [
188
+ pattern.strip()
189
+ for pattern in SENTRY_TRACE_PROPAGATION_TARGETS.split(",")
190
+ if pattern.strip()
191
+ ]
192
+
177
193
  sentry_sdk.init(
178
194
  dsn=SENTRY_DSN,
179
195
  integrations=integrations,
@@ -182,10 +198,14 @@ if SENTRY_DSN:
182
198
  environment=SENTRY_ENVIRONMENT,
183
199
  release=SENTRY_RELEASE,
184
200
 
185
- # Performance monitoring
201
+ # Performance monitoring (lower sample rates for better performance)
186
202
  traces_sample_rate=SENTRY_TRACES_SAMPLE_RATE,
187
- profile_session_sample_rate=SENTRY_PROFILES_SAMPLE_RATE,
188
- profile_lifecycle="trace",
203
+ # Only enable profiling if explicitly configured (disabled by default)
204
+ **({"profile_session_sample_rate": SENTRY_PROFILES_SAMPLE_RATE, "profile_lifecycle": "trace"} if SENTRY_PROFILES_SAMPLE_RATE > 0 else {}),
205
+
206
+ # Distributed tracing - propagate trace headers to internal services
207
+ # Note: Headers are NOT sent to carrier APIs (they wouldn't understand them)
208
+ trace_propagation_targets=trace_targets,
189
209
 
190
210
  # Privacy settings
191
211
  send_default_pii=SENTRY_SEND_PII,
@@ -200,16 +220,11 @@ if SENTRY_DSN:
200
220
  before_send=_sentry_before_send,
201
221
  before_send_transaction=_sentry_before_send_transaction,
202
222
 
203
- # Additional options
204
- max_breadcrumbs=50, # Keep last 50 breadcrumbs for context
223
+ # Additional options (reduced for performance)
224
+ max_breadcrumbs=25, # Reduced from 50 for lower memory usage
205
225
  attach_stacktrace=True, # Attach stack traces to messages
206
- include_source_context=True, # Include source code in stack traces
207
- include_local_variables=True, # Include local variables in stack traces
208
-
209
- # Set custom tags
210
- _experiments={
211
- "record_sql_params": True, # Record SQL query parameters
212
- },
226
+ include_source_context=False, # Disabled for performance (was True)
227
+ include_local_variables=False, # Disabled for performance (was True)
213
228
  )
214
229
 
215
230
  # Set default tags that will be applied to all events
@@ -62,6 +62,9 @@ CORS_ALLOW_HEADERS = list(default_headers) + [
62
62
  "x-org-id",
63
63
  "x-tenant-id",
64
64
  "x-request-id",
65
+ # Sentry distributed tracing headers
66
+ "sentry-trace",
67
+ "baggage",
65
68
  ]
66
69
 
67
70
  # HTTPS configuration
@@ -203,6 +206,9 @@ WORKFLOW_MANAGEMENT = (
203
206
  SHIPPING_RULES = (
204
207
  importlib.util.find_spec("karrio.server.automation") is not None # type:ignore
205
208
  )
209
+ SHIPPING_METHODS = (
210
+ importlib.util.find_spec("karrio.server.shipping") is not None # type:ignore
211
+ )
206
212
  ADVANCED_ANALYTICS = (
207
213
  importlib.util.find_spec("karrio.server.analytics") is not None # type:ignore
208
214
  ) and config("ADVANCED_ANALYTICS", default=(True if DEBUG else False), cast=bool)
@@ -223,6 +229,7 @@ FEATURE_FLAGS = [
223
229
  ("PERSIST_SDK_TRACING", bool),
224
230
  ("WORKFLOW_MANAGEMENT", bool),
225
231
  ("SHIPPING_RULES", bool),
232
+ ("SHIPPING_METHODS", bool),
226
233
  ("ADVANCED_ANALYTICS", bool),
227
234
  ]
228
235
 
@@ -87,6 +87,9 @@ if REDIS_HOST is not None and not SKIP_DEFAULT_CACHE:
87
87
  }
88
88
  }
89
89
 
90
+ # Cache constance values to avoid N+1 queries on each config access
91
+ CONSTANCE_DATABASE_CACHE_BACKEND = "default"
92
+
90
93
  # Django cache health check uses the cache backend directly
91
94
  # Only add Redis health check if REDIS_URL environment variable is set
92
95
  # When using granular params, the cache check is sufficient
@@ -132,6 +132,15 @@ FEATURE_FLAGS_CONFIG = {
132
132
  if importlib.util.find_spec("karrio.server.automation") is not None
133
133
  else None
134
134
  ),
135
+ "SHIPPING_METHODS": (
136
+ (
137
+ base.SHIPPING_METHODS,
138
+ "Shipping methods",
139
+ bool,
140
+ )
141
+ if importlib.util.find_spec("karrio.server.shipping") is not None
142
+ else None
143
+ ),
135
144
  "ADVANCED_ANALYTICS": (
136
145
  (
137
146
  base.ADVANCED_ANALYTICS,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: karrio_server
3
- Version: 2025.5.1
3
+ Version: 2025.5.3
4
4
  Summary: Multi-carrier shipping API
5
5
  Author-email: karrio <hello@karrio.io>
6
6
  License-Expression: Apache-2.0
@@ -1,4 +1,4 @@
1
- karrio/server/VERSION,sha256=tGn2vY99q8a82QkInZS50BCOgMKISav_zxLuzLB71_A,8
1
+ karrio/server/VERSION,sha256=95u0gDTVKbokfjKQBKsWdkx29sqtIic0o5yUkPSSQSk,8
2
2
  karrio/server/__init__.py,sha256=iOEMwnlORWezdO8-2vxBIPSR37D7JGjluZ8f55vzxls,81
3
3
  karrio/server/__main__.py,sha256=hy2-Zb2wSVe_Pu6zWZ-BhiM4rBaGZ3D16HSuhudygqg,632
4
4
  karrio/server/asgi.py,sha256=LsZYMWo8U9zURVPdHnvUsziOhMjdCdQoD2-gMJbS2U0,462
@@ -6,10 +6,10 @@ karrio/server/workers.py,sha256=wOlWmXC7zRJV86IfbQnfUZsnCIvvWtXzFHH_EIkg1J0,179
6
6
  karrio/server/wsgi.py,sha256=SpWqkEYlMsj89_znZ8p8IjH3EgTVRWRq_9eS8t64dMw,403
7
7
  karrio/server/lib/otel_huey.py,sha256=6MP6vX6b6x6RPF2K1m8B8L8S9GK1Q3vANmLidsxh65k,5428
8
8
  karrio/server/settings/__init__.py,sha256=iw-NBcReOnDYpnvSEBdYDfV7jC0040jYdupnmSdElec,866
9
- karrio/server/settings/apm.py,sha256=mcQqchavxkbDTWYqUwaiJLSd8JD3cWx5c-Nr8iOeFN8,18916
10
- karrio/server/settings/base.py,sha256=ZD0bd949IpHdFkI5WSuQ2W8QIoRZx11DHwdVwUqVlMM,22931
11
- karrio/server/settings/cache.py,sha256=0o6XLXjtRw3MU2iXQh7Ge9RDXyekIQcXy3Fp54in4Zo,3923
12
- karrio/server/settings/constance.py,sha256=IaSk5XmJzFBkvN2XzkZBaLcD97QDF1oO7231y58xoHY,7783
9
+ karrio/server/settings/apm.py,sha256=Zt8dP2y8DjPa_iNyv3ZywXTbHlULWc06SLPJhlTTA-A,19983
10
+ karrio/server/settings/base.py,sha256=9Rfe24fieBtwyU8FjBAC2tDMrUPl8Unz-1_zpjZ5Oj4,23144
11
+ karrio/server/settings/cache.py,sha256=UYBd6pG-5pWSUlu4d3PuWGWYCiiDBL2oc1hYzq131zY,4045
12
+ karrio/server/settings/constance.py,sha256=84Ldmwr_o_5WBy5awf-k5AWpYmpMt2dzO3xh6MoqEXU,8013
13
13
  karrio/server/settings/debug.py,sha256=fFyK2XX47UGeK0eRNSV-9ZLaComay5QvJW0692vaH98,527
14
14
  karrio/server/settings/email.py,sha256=bHBLKM_v3HTkmjrz_Msdj_Z7_kMzAb7i6pvJCZuzu1E,1403
15
15
  karrio/server/settings/workers.py,sha256=-pe9u1J5HCF1ZMHIYnHYJfdgJXd0Ix6vCLTr94kmsJs,5672
@@ -75,8 +75,8 @@ karrio/server/templates/openapi/openapi.html,sha256=3ApCZ5pE6Wjv7CJllVbqD2WiDQuL
75
75
  karrio/server/urls/__init__.py,sha256=SHmmXmVn9Hbf7eZ2wcL10hG84yQPBrcVaCsvi5cdrrA,2062
76
76
  karrio/server/urls/jwt.py,sha256=QN2L-EpUEQCF2UGYPu_VVlA49Fc0BtcY7Ov3-xpp7_U,6772
77
77
  karrio/server/urls/tokens.py,sha256=5slk9F0HPgV3dRnR9UipAl-R8837eiGqKJ31QnCdLnU,8215
78
- karrio_server-2025.5.1.dist-info/METADATA,sha256=vzpN8lPECnPqc16li5kgjxg1CYnZDcJdCXwBkANc1jg,4303
79
- karrio_server-2025.5.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
80
- karrio_server-2025.5.1.dist-info/entry_points.txt,sha256=c2eftt6MpJjyp0OFv1OmO9nUYSDemt9fGq_RDdvpGLw,55
81
- karrio_server-2025.5.1.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
82
- karrio_server-2025.5.1.dist-info/RECORD,,
78
+ karrio_server-2025.5.3.dist-info/METADATA,sha256=BpBTx3dl7Jr1jJvaWXXfw6FPkCCs9R8XTAIv-BokEC0,4303
79
+ karrio_server-2025.5.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
80
+ karrio_server-2025.5.3.dist-info/entry_points.txt,sha256=c2eftt6MpJjyp0OFv1OmO9nUYSDemt9fGq_RDdvpGLw,55
81
+ karrio_server-2025.5.3.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
82
+ karrio_server-2025.5.3.dist-info/RECORD,,