karrio-server-events 2025.5rc30__py3-none-any.whl → 2025.5rc32__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/events/signals.py +2 -4
- karrio/server/events/task_definitions/base/archiving.py +10 -12
- karrio/server/events/task_definitions/base/tracking.py +20 -26
- karrio/server/events/task_definitions/base/webhook.py +9 -11
- karrio/server/events/tasks.py +3 -5
- {karrio_server_events-2025.5rc30.dist-info → karrio_server_events-2025.5rc32.dist-info}/METADATA +1 -1
- {karrio_server_events-2025.5rc30.dist-info → karrio_server_events-2025.5rc32.dist-info}/RECORD +9 -9
- {karrio_server_events-2025.5rc30.dist-info → karrio_server_events-2025.5rc32.dist-info}/WHEEL +0 -0
- {karrio_server_events-2025.5rc30.dist-info → karrio_server_events-2025.5rc32.dist-info}/top_level.txt +0 -0
karrio/server/events/signals.py
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
from django.db.models import signals
|
|
3
2
|
|
|
4
3
|
from karrio.server.core import utils
|
|
4
|
+
from karrio.server.core.logging import logger
|
|
5
5
|
from karrio.server.conf import settings
|
|
6
6
|
from karrio.server.events.serializers import EventTypes
|
|
7
7
|
import karrio.server.core.serializers as serializers
|
|
8
8
|
import karrio.server.manager.models as models
|
|
9
9
|
import karrio.server.events.tasks as tasks
|
|
10
10
|
|
|
11
|
-
logger = logging.getLogger(__name__)
|
|
12
|
-
|
|
13
11
|
|
|
14
12
|
def register_signals():
|
|
15
13
|
signals.post_save.connect(shipment_updated, sender=models.Shipment)
|
|
16
14
|
signals.post_delete.connect(shipment_cancelled, sender=models.Shipment)
|
|
17
15
|
signals.post_save.connect(tracker_updated, sender=models.Tracking)
|
|
18
16
|
|
|
19
|
-
logger.info("
|
|
17
|
+
logger.info("Karrio events signals registered")
|
|
20
18
|
|
|
21
19
|
|
|
22
20
|
@utils.disable_for_loaddata
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
import datetime
|
|
3
2
|
import django.utils.timezone as timezone
|
|
4
3
|
|
|
5
4
|
import karrio.server.conf as conf
|
|
6
5
|
import karrio.server.core.utils as utils
|
|
6
|
+
from karrio.server.core.logging import logger
|
|
7
7
|
import karrio.server.core.models as core
|
|
8
8
|
import karrio.server.events.models as events
|
|
9
9
|
import karrio.server.orders.models as orders
|
|
10
10
|
import karrio.server.tracing.models as tracing
|
|
11
11
|
import karrio.server.manager.models as manager
|
|
12
12
|
|
|
13
|
-
logger = logging.getLogger(__name__)
|
|
14
|
-
|
|
15
13
|
|
|
16
14
|
def run_data_archiving(*args, **kwargs):
|
|
17
15
|
now = timezone.now()
|
|
@@ -36,36 +34,36 @@ def run_data_archiving(*args, **kwargs):
|
|
|
36
34
|
order_exists = orders.Order.objects.filter(created_at__lt=order_retention).exists()
|
|
37
35
|
|
|
38
36
|
if tracing_exists:
|
|
39
|
-
logger.info("
|
|
37
|
+
logger.info("Archiving SDK tracing backlog", retention_days=conf.settings.API_LOGS_DATA_RETENTION)
|
|
40
38
|
tracing_data = tracing.TracingRecord.objects.filter(created_at__lt=log_retention)
|
|
41
39
|
utils.failsafe(lambda: _bulk_delete_tracing_data(tracing_data))
|
|
42
40
|
|
|
43
41
|
if event_exists:
|
|
44
|
-
logger.info("
|
|
42
|
+
logger.info("Archiving events backlog", retention_days=conf.settings.API_LOGS_DATA_RETENTION)
|
|
45
43
|
event_data = events.Event.objects.filter(created_at__lt=log_retention)
|
|
46
44
|
utils.failsafe(lambda: event_data.delete())
|
|
47
45
|
|
|
48
46
|
if api_log_exists:
|
|
49
|
-
logger.info("
|
|
47
|
+
logger.info("Archiving API request logs backlog", retention_days=conf.settings.API_LOGS_DATA_RETENTION)
|
|
50
48
|
api_log_data = core.APILog.objects.filter(requested_at__lt=log_retention)
|
|
51
49
|
utils.failsafe(lambda: api_log_data.delete())
|
|
52
50
|
|
|
53
51
|
if tracking_exists:
|
|
54
|
-
logger.info("
|
|
52
|
+
logger.info("Archiving tracking data backlog", retention_days=conf.settings.TRACKER_DATA_RETENTION)
|
|
55
53
|
tracking_data = manager.Tracking.objects.filter(created_at__lt=tracker_retention)
|
|
56
54
|
utils.failsafe(lambda: _bulk_delete_tracking_data(tracking_data))
|
|
57
55
|
|
|
58
56
|
if shipping_exists:
|
|
59
|
-
logger.info("
|
|
57
|
+
logger.info("Archiving shipping data backlog", retention_days=conf.settings.SHIPMENT_DATA_RETENTION)
|
|
60
58
|
shipping_data = manager.Shipment.objects.filter(created_at__lt=shipment_retention)
|
|
61
59
|
utils.failsafe(lambda: _bulk_delete_shipment_data(shipping_data))
|
|
62
60
|
|
|
63
61
|
if order_exists:
|
|
64
|
-
logger.info("
|
|
62
|
+
logger.info("Archiving order data backlog", retention_days=conf.settings.ORDER_DATA_RETENTION)
|
|
65
63
|
order_data = orders.Order.objects.filter(created_at__lt=order_retention)
|
|
66
64
|
utils.failsafe(lambda: _bulk_delete_order_data(order_data))
|
|
67
65
|
|
|
68
|
-
logger.info("
|
|
66
|
+
logger.info("Finished scheduled backlog archiving")
|
|
69
67
|
|
|
70
68
|
|
|
71
69
|
def _bulk_delete_tracing_data(tracing_queryset):
|
|
@@ -91,7 +89,7 @@ def _bulk_delete_tracing_data(tracing_queryset):
|
|
|
91
89
|
deleted_count = tracing_queryset.filter(id__in=batch_ids).delete()[0]
|
|
92
90
|
total_deleted += deleted_count
|
|
93
91
|
|
|
94
|
-
logger.info(
|
|
92
|
+
logger.info("Deleted tracing records batch", batch_count=deleted_count, total_deleted=total_deleted)
|
|
95
93
|
|
|
96
94
|
except ImportError:
|
|
97
95
|
# Organizations module not installed, just delete in batches
|
|
@@ -106,7 +104,7 @@ def _bulk_delete_tracing_data(tracing_queryset):
|
|
|
106
104
|
deleted_count = tracing_queryset.filter(id__in=batch_ids).delete()[0]
|
|
107
105
|
total_deleted += deleted_count
|
|
108
106
|
|
|
109
|
-
logger.info(
|
|
107
|
+
logger.info("Deleted tracing records batch", batch_count=deleted_count, total_deleted=total_deleted)
|
|
110
108
|
|
|
111
109
|
|
|
112
110
|
def _bulk_delete_tracking_data(tracking_queryset):
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import time
|
|
2
2
|
import typing
|
|
3
|
-
import logging
|
|
4
3
|
import datetime
|
|
5
4
|
import functools
|
|
6
5
|
from itertools import groupby
|
|
@@ -15,12 +14,11 @@ from karrio.api.interface import IRequestFrom
|
|
|
15
14
|
from karrio.core.models import TrackingDetails, Message, TrackingEvent
|
|
16
15
|
|
|
17
16
|
import karrio.server.core.utils as utils
|
|
17
|
+
from karrio.server.core.logging import logger
|
|
18
18
|
import karrio.server.manager.models as models
|
|
19
19
|
import karrio.server.tracing.utils as tracing
|
|
20
20
|
import karrio.server.core.datatypes as datatypes
|
|
21
21
|
import karrio.server.manager.serializers as serializers
|
|
22
|
-
|
|
23
|
-
logger = logging.getLogger(__name__)
|
|
24
22
|
Delay = int
|
|
25
23
|
RequestBatches = typing.Tuple[
|
|
26
24
|
Gateway, IRequestFrom, Delay, typing.List[models.Tracking]
|
|
@@ -38,7 +36,7 @@ def update_trackers(
|
|
|
38
36
|
),
|
|
39
37
|
tracker_ids: typing.List[str] = [],
|
|
40
38
|
):
|
|
41
|
-
logger.info("
|
|
39
|
+
logger.info("Starting scheduled trackers update", delta_seconds=delta.seconds, tracker_count=len(tracker_ids) if tracker_ids else 0)
|
|
42
40
|
|
|
43
41
|
active_trackers = lib.identity(
|
|
44
42
|
models.Tracking.objects.filter(id__in=tracker_ids)
|
|
@@ -61,9 +59,9 @@ def update_trackers(
|
|
|
61
59
|
save_tracing_records(request_batches)
|
|
62
60
|
save_updated_trackers(responses, active_trackers)
|
|
63
61
|
else:
|
|
64
|
-
logger.info("
|
|
62
|
+
logger.info("No active trackers found needing update")
|
|
65
63
|
|
|
66
|
-
logger.info("
|
|
64
|
+
logger.info("Finished scheduled trackers update")
|
|
67
65
|
|
|
68
66
|
|
|
69
67
|
def create_request_batches(
|
|
@@ -86,7 +84,7 @@ def create_request_batches(
|
|
|
86
84
|
lambda acc, t: {**acc, **(t.options or {})}, batch_trackers, {}
|
|
87
85
|
)
|
|
88
86
|
|
|
89
|
-
logger.debug(
|
|
87
|
+
logger.debug("Preparing tracking request", tracking_numbers=tracking_numbers, batch_range=(start, end))
|
|
90
88
|
|
|
91
89
|
# Prepare and send tracking request(s) using the karrio interface.
|
|
92
90
|
request: IRequestFrom = karrio.Tracking.fetch(
|
|
@@ -99,8 +97,8 @@ def create_request_batches(
|
|
|
99
97
|
batches.append((gateway, request, delay, batch_trackers))
|
|
100
98
|
|
|
101
99
|
except Exception as request_error:
|
|
102
|
-
logger.warning(
|
|
103
|
-
logger.error(
|
|
100
|
+
logger.warning("Failed to prepare tracking batch request", batch_range=(start, end), error=str(request_error))
|
|
101
|
+
logger.exception("Tracking batch request preparation error", batch_range=(start, end))
|
|
104
102
|
|
|
105
103
|
end += 10
|
|
106
104
|
start += 10
|
|
@@ -110,21 +108,22 @@ def create_request_batches(
|
|
|
110
108
|
|
|
111
109
|
def fetch_tracking_info(request_batch: RequestBatches) -> BatchResponse:
|
|
112
110
|
gateway, request, delay, trackers = request_batch
|
|
113
|
-
|
|
111
|
+
tracking_numbers = [t.tracking_number for t in trackers]
|
|
112
|
+
logger.debug("Fetching tracking batch", tracking_numbers=tracking_numbers, delay_seconds=delay)
|
|
114
113
|
time.sleep(delay) # apply delay before request
|
|
115
114
|
|
|
116
115
|
try:
|
|
117
116
|
return utils.identity(lambda: request.from_(gateway).parse())
|
|
118
117
|
except Exception as request_error:
|
|
119
|
-
logger.warning("batch request failed")
|
|
120
|
-
logger.error
|
|
118
|
+
logger.warning("Tracking batch request failed", tracking_numbers=tracking_numbers, error=str(request_error))
|
|
119
|
+
logger.exception("Tracking batch request error", tracking_numbers=tracking_numbers)
|
|
121
120
|
|
|
122
121
|
return []
|
|
123
122
|
|
|
124
123
|
|
|
125
124
|
@utils.error_wrapper
|
|
126
125
|
def save_tracing_records(request_batches: typing.List[RequestBatches]):
|
|
127
|
-
logger.info("
|
|
126
|
+
logger.info("Saving tracing records", batch_count=len(request_batches))
|
|
128
127
|
|
|
129
128
|
try:
|
|
130
129
|
for request_batch in request_batches:
|
|
@@ -136,20 +135,19 @@ def save_tracing_records(request_batches: typing.List[RequestBatches]):
|
|
|
136
135
|
context = serializers.get_object_context(trackers[0])
|
|
137
136
|
tracing.bulk_save_tracing_records(gateway.tracer, context=context)
|
|
138
137
|
except Exception as error:
|
|
139
|
-
|
|
140
|
-
logger.
|
|
141
|
-
logger.error(error, exc_info=True)
|
|
138
|
+
logger.warning("Failed to save tracing records", error=str(error))
|
|
139
|
+
logger.exception("Tracing record save error")
|
|
142
140
|
|
|
143
141
|
|
|
144
142
|
def save_updated_trackers(
|
|
145
143
|
responses: typing.List[BatchResponse], trackers: typing.List[models.Tracking]
|
|
146
144
|
):
|
|
147
|
-
logger.info("
|
|
145
|
+
logger.info("Saving updated trackers", tracker_count=len(trackers))
|
|
148
146
|
|
|
149
147
|
for tracking_details, _ in responses:
|
|
150
148
|
for details in tracking_details or []:
|
|
151
149
|
try:
|
|
152
|
-
logger.debug(
|
|
150
|
+
logger.debug("Updating tracking info", tracking_number=details.tracking_number)
|
|
153
151
|
related_trackers = [
|
|
154
152
|
t for t in trackers if t.tracking_number == details.tracking_number
|
|
155
153
|
]
|
|
@@ -214,14 +212,10 @@ def save_updated_trackers(
|
|
|
214
212
|
if any(changes):
|
|
215
213
|
tracker.save(update_fields=changes)
|
|
216
214
|
serializers.update_shipment_tracker(tracker)
|
|
217
|
-
logger.debug(
|
|
218
|
-
f"tracking info {details.tracking_number} updated successfully"
|
|
219
|
-
)
|
|
215
|
+
logger.debug("Tracking info updated successfully", tracking_number=details.tracking_number, changes=changes)
|
|
220
216
|
else:
|
|
221
|
-
logger.debug(
|
|
217
|
+
logger.debug("No changes detected", tracking_number=details.tracking_number)
|
|
222
218
|
|
|
223
219
|
except Exception as update_error:
|
|
224
|
-
logger.warning(
|
|
225
|
-
|
|
226
|
-
)
|
|
227
|
-
logger.error(update_error, exc_info=True)
|
|
220
|
+
logger.warning("Failed to update tracker", tracking_number=details.tracking_number, error=str(update_error))
|
|
221
|
+
logger.exception("Tracker update error", tracking_number=details.tracking_number)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import requests
|
|
3
|
-
import logging
|
|
4
3
|
from datetime import datetime
|
|
5
4
|
from django.conf import settings
|
|
6
5
|
from django.db.models import Q
|
|
@@ -8,11 +7,10 @@ from django.contrib.auth import get_user_model
|
|
|
8
7
|
|
|
9
8
|
from karrio.core import utils
|
|
10
9
|
from karrio.server.core.utils import identity
|
|
10
|
+
from karrio.server.core.logging import logger
|
|
11
11
|
from karrio.server.serializers import Context
|
|
12
12
|
from karrio.server.events import models
|
|
13
13
|
import karrio.server.events.serializers.event as serializers
|
|
14
|
-
|
|
15
|
-
logger = logging.getLogger(__name__)
|
|
16
14
|
NotificationResponse = typing.Tuple[str, requests.Response]
|
|
17
15
|
User = get_user_model()
|
|
18
16
|
|
|
@@ -24,7 +22,7 @@ def notify_webhook_subscribers(
|
|
|
24
22
|
ctx: dict,
|
|
25
23
|
**kwargs,
|
|
26
24
|
):
|
|
27
|
-
logger.info(
|
|
25
|
+
logger.info("Starting webhook subscribers notification", event=event)
|
|
28
26
|
context = retrieve_context(ctx)
|
|
29
27
|
query = (
|
|
30
28
|
(Q(enabled_events__icontains=event) | Q(enabled_events__icontains="all")),
|
|
@@ -49,9 +47,9 @@ def notify_webhook_subscribers(
|
|
|
49
47
|
)
|
|
50
48
|
update_notified_webhooks(webhooks, responses, event_at)
|
|
51
49
|
else:
|
|
52
|
-
logger.info("
|
|
50
|
+
logger.info("No webhook subscribers found", event=event)
|
|
53
51
|
|
|
54
|
-
logger.info(
|
|
52
|
+
logger.info("Finished webhook subscribers notification", event=event)
|
|
55
53
|
|
|
56
54
|
|
|
57
55
|
def notify_subscribers(webhooks: typing.List[models.Webhook], payload: dict):
|
|
@@ -77,11 +75,11 @@ def update_notified_webhooks(
|
|
|
77
75
|
responses: typing.List[NotificationResponse],
|
|
78
76
|
event_at: datetime,
|
|
79
77
|
):
|
|
80
|
-
logger.info("
|
|
78
|
+
logger.info("Saving updated webhooks")
|
|
81
79
|
|
|
82
80
|
for webhook_id, response in responses:
|
|
83
81
|
try:
|
|
84
|
-
logger.debug(
|
|
82
|
+
logger.debug("Updating webhook", webhook_id=webhook_id)
|
|
85
83
|
|
|
86
84
|
webhook = next((w for w in webhooks if w.id == webhook_id))
|
|
87
85
|
if response.ok:
|
|
@@ -94,11 +92,11 @@ def update_notified_webhooks(
|
|
|
94
92
|
|
|
95
93
|
webhook.save()
|
|
96
94
|
|
|
97
|
-
logger.debug(
|
|
95
|
+
logger.debug("Webhook updated successfully", webhook_id=webhook_id)
|
|
98
96
|
|
|
99
97
|
except Exception as update_error:
|
|
100
|
-
logger.warning(
|
|
101
|
-
logger.error
|
|
98
|
+
logger.warning("Failed to update webhook", webhook_id=webhook_id, error=str(update_error))
|
|
99
|
+
logger.exception("Webhook update error", webhook_id=webhook_id)
|
|
102
100
|
|
|
103
101
|
|
|
104
102
|
def retrieve_context(info: dict) -> Context:
|
karrio/server/events/tasks.py
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import typing
|
|
2
|
-
import logging
|
|
3
2
|
import pkgutil
|
|
3
|
+
from karrio.server.core.logging import logger
|
|
4
4
|
import karrio.server.events.task_definitions as definitions
|
|
5
|
-
|
|
6
|
-
logger = logging.getLogger(__name__)
|
|
7
5
|
DEFINITIONS: typing.List[typing.Any] = []
|
|
8
6
|
|
|
9
7
|
# Register karrio background tasks
|
|
@@ -13,8 +11,8 @@ for _, name, _ in pkgutil.iter_modules(definitions.__path__): # type: ignore
|
|
|
13
11
|
if hasattr(definition, "TASK_DEFINITIONS"):
|
|
14
12
|
DEFINITIONS += definition.TASK_DEFINITIONS
|
|
15
13
|
except Exception as e:
|
|
16
|
-
logger.warning(f
|
|
17
|
-
logger.exception(
|
|
14
|
+
logger.warning(f"Failed to register task definition", task_name=name, error=str(e))
|
|
15
|
+
logger.exception(f"Task definition registration error", task_name=name)
|
|
18
16
|
|
|
19
17
|
for wrapper in DEFINITIONS:
|
|
20
18
|
globals()[wrapper.task_class.__name__] = wrapper
|
{karrio_server_events-2025.5rc30.dist-info → karrio_server_events-2025.5rc32.dist-info}/RECORD
RENAMED
|
@@ -4,8 +4,8 @@ karrio/server/events/apps.py,sha256=DIV8JdPB_3hD4DwhcQTevhph3PaceMkFSEGM1lOcdVY,
|
|
|
4
4
|
karrio/server/events/filters.py,sha256=vMeY42IsoFl482-yX1BI17sw-9x9euOnzTl-860W3sg,2230
|
|
5
5
|
karrio/server/events/models.py,sha256=WQQKpDnbUW97beFmCBJDTckSoE-h-HtxeRfjoNWepQY,2582
|
|
6
6
|
karrio/server/events/router.py,sha256=IBUR7rfBkdEHQzWxYOPcVSM8NBp3fte9G6Q5BVTUNNw,95
|
|
7
|
-
karrio/server/events/signals.py,sha256=
|
|
8
|
-
karrio/server/events/tasks.py,sha256=
|
|
7
|
+
karrio/server/events/signals.py,sha256=lIqouHZ_RGSzZXQgBeTT5Y0YoQL_TpzoifqxQKYJTSo,4539
|
|
8
|
+
karrio/server/events/tasks.py,sha256=kqs-W2VnDHOQNvieN8Ltehk578W5FTXTobj7t_mi9Xk,787
|
|
9
9
|
karrio/server/events/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
10
10
|
karrio/server/events/urls.py,sha256=oLTTzDWPhEFfK93EvzHTDRxqkw8Fr3iXneDXwFUkvcU,217
|
|
11
11
|
karrio/server/events/migrations/0001_initial.py,sha256=c_HS1Pt89fnDgc839eh2VGBN4mvICBGWH5OUC5Xsz8k,2212
|
|
@@ -25,9 +25,9 @@ karrio/server/events/serializers/event.py,sha256=dKYqldfSEjKMY7uB1rBFfEfSZ_dfEp8
|
|
|
25
25
|
karrio/server/events/serializers/webhook.py,sha256=Ri5JS1SXpSsPUvQH989T_7Amu1p46y5TP54MEEhK8j8,889
|
|
26
26
|
karrio/server/events/task_definitions/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
|
|
27
27
|
karrio/server/events/task_definitions/base/__init__.py,sha256=3vP52gFdCo9hctLRKnYvEi9iz1UK8GL_a47Nw44h3Nc,1834
|
|
28
|
-
karrio/server/events/task_definitions/base/archiving.py,sha256=
|
|
29
|
-
karrio/server/events/task_definitions/base/tracking.py,sha256=
|
|
30
|
-
karrio/server/events/task_definitions/base/webhook.py,sha256=
|
|
28
|
+
karrio/server/events/task_definitions/base/archiving.py,sha256=n2Jxn6Jj-3fMtNCBnCUXrq4_iePmvU31j4ntCilIXJk,7303
|
|
29
|
+
karrio/server/events/task_definitions/base/tracking.py,sha256=av_uiT_0zNuZEC9X31EUXnuIF6gavtM8_1g300QUtzk,9026
|
|
30
|
+
karrio/server/events/task_definitions/base/webhook.py,sha256=QNRq3xhLWQEbrs3zSy6Sa0AXUPhWE7YenKpPzZoFwL0,3616
|
|
31
31
|
karrio/server/events/tests/__init__.py,sha256=5szv9hDvu0R0jtm3XWktY19rCaE8bZ2LdjRm4oJ0pYA,220
|
|
32
32
|
karrio/server/events/tests/test_events.py,sha256=Fxi1hv_lyuRJw5Y_ydywhq5P3akpxet4mFMFSiHU96c,4066
|
|
33
33
|
karrio/server/events/tests/test_tracking_tasks.py,sha256=oOPdjhVax4SzTgBwKxySosgWOX6ZJ2Y-cYvXp3kj0lw,12114
|
|
@@ -39,7 +39,7 @@ karrio/server/graph/schemas/events/__init__.py,sha256=Yg1rWew5DgSb_OnLy8n7qqwPLf
|
|
|
39
39
|
karrio/server/graph/schemas/events/inputs.py,sha256=Mgy9qCUrbL-sMI5dNXsnbW8K5_PnGKM13brzZrc5OWk,1526
|
|
40
40
|
karrio/server/graph/schemas/events/mutations.py,sha256=930g2D5TnAEgEjfEfLml1Q9OGCyxe2D592BhzSGDQAQ,1862
|
|
41
41
|
karrio/server/graph/schemas/events/types.py,sha256=TPlrDwQV4LZXu-1t4gFl_eYayU39THmgYT3uv7VXnnw,2759
|
|
42
|
-
karrio_server_events-2025.
|
|
43
|
-
karrio_server_events-2025.
|
|
44
|
-
karrio_server_events-2025.
|
|
45
|
-
karrio_server_events-2025.
|
|
42
|
+
karrio_server_events-2025.5rc32.dist-info/METADATA,sha256=QQ8nCIksva7rWXw-ygn4COHUMOrwrgRVAxPc0EZMFQQ,705
|
|
43
|
+
karrio_server_events-2025.5rc32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
44
|
+
karrio_server_events-2025.5rc32.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
|
|
45
|
+
karrio_server_events-2025.5rc32.dist-info/RECORD,,
|
{karrio_server_events-2025.5rc30.dist-info → karrio_server_events-2025.5rc32.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|