karrio-server 2025.5.2__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.2
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
 
@@ -69,6 +70,13 @@ SENTRY_TRACES_SAMPLE_RATE = config("SENTRY_TRACES_SAMPLE_RATE", default=0.1, cas
69
70
  SENTRY_PROFILES_SAMPLE_RATE = config("SENTRY_PROFILES_SAMPLE_RATE", default=0.0, cast=float) # Disabled by default
70
71
  SENTRY_SEND_PII = config("SENTRY_SEND_PII", default=True, cast=bool)
71
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
+ )
72
80
 
73
81
 
74
82
  def _sentry_before_send(event, hint):
@@ -175,6 +183,13 @@ if SENTRY_DSN:
175
183
  except Exception:
176
184
  pass # strawberry integration may not be available
177
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
+
178
193
  sentry_sdk.init(
179
194
  dsn=SENTRY_DSN,
180
195
  integrations=integrations,
@@ -188,6 +203,10 @@ if SENTRY_DSN:
188
203
  # Only enable profiling if explicitly configured (disabled by default)
189
204
  **({"profile_session_sample_rate": SENTRY_PROFILES_SAMPLE_RATE, "profile_lifecycle": "trace"} if SENTRY_PROFILES_SAMPLE_RATE > 0 else {}),
190
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,
209
+
191
210
  # Privacy settings
192
211
  send_default_pii=SENTRY_SEND_PII,
193
212
 
@@ -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.2
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=8L9wkqLEVONURWyo_epXbN2o-JqokXuSi6umO6-stkc,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=s_KEiOrhoh3RIONIAFlDzrr1RKnRSO0PL98T7M1JElw,19106
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.2.dist-info/METADATA,sha256=aaA0696VOtDYR1RiCOi-99H1utZCDyH8KueFg5RC_2E,4303
79
- karrio_server-2025.5.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
80
- karrio_server-2025.5.2.dist-info/entry_points.txt,sha256=c2eftt6MpJjyp0OFv1OmO9nUYSDemt9fGq_RDdvpGLw,55
81
- karrio_server-2025.5.2.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
82
- karrio_server-2025.5.2.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,,