ingestr 0.13.86__py3-none-any.whl → 0.13.87__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.
Potentially problematic release.
This version of ingestr might be problematic. Click here for more details.
- ingestr/src/appstore/__init__.py +1 -0
- ingestr/src/buildinfo.py +1 -1
- ingestr/src/chess/__init__.py +1 -1
- ingestr/src/klaviyo/__init__.py +5 -5
- ingestr/src/mongodb/__init__.py +1 -1
- ingestr/src/mongodb/helpers.py +36 -15
- ingestr/src/revenuecat/__init__.py +18 -13
- ingestr/src/revenuecat/helpers.py +29 -0
- ingestr/src/shopify/__init__.py +1 -1
- ingestr/src/sources.py +2 -0
- {ingestr-0.13.86.dist-info → ingestr-0.13.87.dist-info}/METADATA +1 -1
- {ingestr-0.13.86.dist-info → ingestr-0.13.87.dist-info}/RECORD +15 -15
- {ingestr-0.13.86.dist-info → ingestr-0.13.87.dist-info}/WHEEL +0 -0
- {ingestr-0.13.86.dist-info → ingestr-0.13.87.dist-info}/entry_points.txt +0 -0
- {ingestr-0.13.86.dist-info → ingestr-0.13.87.dist-info}/licenses/LICENSE.md +0 -0
ingestr/src/appstore/__init__.py
CHANGED
ingestr/src/buildinfo.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
version = "v0.13.
|
|
1
|
+
version = "v0.13.87"
|
ingestr/src/chess/__init__.py
CHANGED
|
@@ -75,7 +75,7 @@ def players_archives(players: List[str]) -> Iterator[List[TDataItem]]:
|
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
@dlt.resource(
|
|
78
|
-
write_disposition="
|
|
78
|
+
write_disposition="replace", columns={"end_time": {"data_type": "timestamp"}}
|
|
79
79
|
)
|
|
80
80
|
def players_games(
|
|
81
81
|
players: List[str], start_month: str = None, end_month: str = None
|
ingestr/src/klaviyo/__init__.py
CHANGED
|
@@ -30,7 +30,7 @@ def klaviyo_source(api_key: str, start_date: TAnyDateTime) -> Iterable[DltResour
|
|
|
30
30
|
start_date_obj = ensure_pendulum_datetime(start_date)
|
|
31
31
|
client = KlaviyoClient(api_key)
|
|
32
32
|
|
|
33
|
-
@dlt.resource(write_disposition="
|
|
33
|
+
@dlt.resource(write_disposition="merge", primary_key="id", parallelized=True)
|
|
34
34
|
def events(
|
|
35
35
|
datetime=dlt.sources.incremental(
|
|
36
36
|
"datetime",
|
|
@@ -135,7 +135,7 @@ def klaviyo_source(api_key: str, start_date: TAnyDateTime) -> Iterable[DltResour
|
|
|
135
135
|
) -> Iterable[TDataItem]:
|
|
136
136
|
yield from client.fetch_catalog_item(create_client(), updated.start_value)
|
|
137
137
|
|
|
138
|
-
@dlt.resource(write_disposition="
|
|
138
|
+
@dlt.resource(write_disposition="merge", primary_key="id", parallelized=True)
|
|
139
139
|
def forms(
|
|
140
140
|
updated_at=dlt.sources.incremental(
|
|
141
141
|
"updated_at",
|
|
@@ -162,7 +162,7 @@ def klaviyo_source(api_key: str, start_date: TAnyDateTime) -> Iterable[DltResour
|
|
|
162
162
|
) -> Iterable[TDataItem]:
|
|
163
163
|
yield from client.fetch_lists(create_client(), updated.start_value)
|
|
164
164
|
|
|
165
|
-
@dlt.resource(write_disposition="
|
|
165
|
+
@dlt.resource(write_disposition="merge", primary_key="id", parallelized=True)
|
|
166
166
|
def images(
|
|
167
167
|
updated_at=dlt.sources.incremental(
|
|
168
168
|
"updated_at",
|
|
@@ -188,7 +188,7 @@ def klaviyo_source(api_key: str, start_date: TAnyDateTime) -> Iterable[DltResour
|
|
|
188
188
|
) -> Iterable[TDataItem]:
|
|
189
189
|
yield from client.fetch_segments(create_client(), updated.start_value)
|
|
190
190
|
|
|
191
|
-
@dlt.resource(write_disposition="
|
|
191
|
+
@dlt.resource(write_disposition="merge", primary_key="id", parallelized=True)
|
|
192
192
|
def flows(
|
|
193
193
|
updated=dlt.sources.incremental(
|
|
194
194
|
"updated",
|
|
@@ -203,7 +203,7 @@ def klaviyo_source(api_key: str, start_date: TAnyDateTime) -> Iterable[DltResour
|
|
|
203
203
|
for start, end in intervals:
|
|
204
204
|
yield lambda s=start, e=end: client.fetch_flows(create_client(), s, e)
|
|
205
205
|
|
|
206
|
-
@dlt.resource(write_disposition="
|
|
206
|
+
@dlt.resource(write_disposition="merge", primary_key="id", parallelized=True)
|
|
207
207
|
def templates(
|
|
208
208
|
updated=dlt.sources.incremental(
|
|
209
209
|
"updated",
|
ingestr/src/mongodb/__init__.py
CHANGED
|
@@ -101,7 +101,7 @@ def mongodb_collection(
|
|
|
101
101
|
write_disposition: Optional[str] = dlt.config.value,
|
|
102
102
|
parallel: Optional[bool] = False,
|
|
103
103
|
limit: Optional[int] = None,
|
|
104
|
-
chunk_size: Optional[int] =
|
|
104
|
+
chunk_size: Optional[int] = 1000,
|
|
105
105
|
data_item_format: Optional[TDataItemFormat] = "object",
|
|
106
106
|
filter_: Optional[Dict[str, Any]] = None,
|
|
107
107
|
projection: Optional[Union[Mapping[str, Any], Iterable[str]]] = dlt.config.value,
|
ingestr/src/mongodb/helpers.py
CHANGED
|
@@ -518,21 +518,42 @@ class CollectionAggregationLoader(CollectionLoader):
|
|
|
518
518
|
if limit and limit > 0:
|
|
519
519
|
pipeline.append({"$limit": limit})
|
|
520
520
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
521
|
+
# Add maxTimeMS to prevent hanging
|
|
522
|
+
cursor = self.collection.aggregate(
|
|
523
|
+
pipeline,
|
|
524
|
+
allowDiskUse=True,
|
|
525
|
+
batchSize=min(self.chunk_size, 101),
|
|
526
|
+
maxTimeMS=30000 # 30 second timeout
|
|
527
|
+
)
|
|
528
|
+
|
|
529
|
+
docs_buffer = []
|
|
530
|
+
try:
|
|
531
|
+
for doc in cursor:
|
|
532
|
+
docs_buffer.append(doc)
|
|
533
|
+
|
|
534
|
+
if len(docs_buffer) >= self.chunk_size:
|
|
535
|
+
res = map_nested_in_place(convert_mongo_objs, docs_buffer)
|
|
536
|
+
if len(res) > 0 and "_id" in res[0] and isinstance(res[0]["_id"], dict):
|
|
537
|
+
yield dlt.mark.with_hints(
|
|
538
|
+
res,
|
|
539
|
+
dlt.mark.make_hints(columns={"_id": {"data_type": "json"}}),
|
|
540
|
+
)
|
|
541
|
+
else:
|
|
542
|
+
yield res
|
|
543
|
+
docs_buffer = []
|
|
544
|
+
|
|
545
|
+
# Yield any remaining documents
|
|
546
|
+
if docs_buffer:
|
|
547
|
+
res = map_nested_in_place(convert_mongo_objs, docs_buffer)
|
|
548
|
+
if len(res) > 0 and "_id" in res[0] and isinstance(res[0]["_id"], dict):
|
|
549
|
+
yield dlt.mark.with_hints(
|
|
550
|
+
res,
|
|
551
|
+
dlt.mark.make_hints(columns={"_id": {"data_type": "json"}}),
|
|
552
|
+
)
|
|
553
|
+
else:
|
|
554
|
+
yield res
|
|
555
|
+
finally:
|
|
556
|
+
cursor.close()
|
|
536
557
|
|
|
537
558
|
|
|
538
559
|
class CollectionAggregationLoaderParallel(CollectionAggregationLoader):
|
|
@@ -9,9 +9,11 @@ from .helpers import (
|
|
|
9
9
|
_paginate,
|
|
10
10
|
convert_timestamps_to_iso,
|
|
11
11
|
process_customer_with_nested_resources_async,
|
|
12
|
+
create_project_resource,
|
|
12
13
|
)
|
|
13
14
|
|
|
14
15
|
|
|
16
|
+
|
|
15
17
|
@dlt.source(name="revenuecat", max_table_nesting=0)
|
|
16
18
|
def revenuecat_source(
|
|
17
19
|
api_key: str,
|
|
@@ -22,10 +24,10 @@ def revenuecat_source(
|
|
|
22
24
|
|
|
23
25
|
Args:
|
|
24
26
|
api_key: RevenueCat API v2 secret key with Bearer token format
|
|
25
|
-
project_id: RevenueCat project ID (required for customers, products, subscriptions, purchases)
|
|
27
|
+
project_id: RevenueCat project ID (required for customers, products, entitlements, offerings, subscriptions, purchases)
|
|
26
28
|
|
|
27
29
|
Returns:
|
|
28
|
-
Iterable of DLT resources for customers, products, purchases, subscriptions, and projects
|
|
30
|
+
Iterable of DLT resources for customers, products, entitlements, offerings, purchases, subscriptions, and projects
|
|
29
31
|
"""
|
|
30
32
|
|
|
31
33
|
@dlt.resource(name="projects", primary_key="id", write_disposition="merge")
|
|
@@ -85,19 +87,22 @@ def revenuecat_source(
|
|
|
85
87
|
# Yield each processed customer
|
|
86
88
|
yield from process_customers_sync()
|
|
87
89
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
# Create project-dependent resources dynamically
|
|
91
|
+
project_resources = []
|
|
92
|
+
resource_names = ["products", "entitlements", "offerings"]
|
|
93
|
+
|
|
94
|
+
for resource_name in resource_names:
|
|
95
|
+
@dlt.resource(name=resource_name, primary_key="id", write_disposition="merge")
|
|
96
|
+
def create_resource(resource_name=resource_name) -> Iterator[Dict[str, Any]]:
|
|
97
|
+
"""Get list of project resource."""
|
|
98
|
+
yield from create_project_resource(resource_name, api_key, project_id)
|
|
99
|
+
|
|
100
|
+
# Set the function name for better identification
|
|
101
|
+
create_resource.__name__ = resource_name
|
|
102
|
+
project_resources.append(create_resource)
|
|
98
103
|
|
|
99
104
|
return [
|
|
100
105
|
projects,
|
|
101
106
|
customers,
|
|
102
|
-
|
|
107
|
+
*project_resources,
|
|
103
108
|
]
|
|
@@ -260,3 +260,32 @@ async def process_customer_with_nested_resources_async(
|
|
|
260
260
|
await asyncio.gather(*tasks)
|
|
261
261
|
|
|
262
262
|
return customer
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def create_project_resource(
|
|
266
|
+
resource_name: str,
|
|
267
|
+
api_key: str,
|
|
268
|
+
project_id: str = None,
|
|
269
|
+
timestamp_fields: List[str] = None,
|
|
270
|
+
) -> Iterator[Dict[str, Any]]:
|
|
271
|
+
"""
|
|
272
|
+
Helper function to create DLT resources for project-dependent endpoints.
|
|
273
|
+
|
|
274
|
+
Args:
|
|
275
|
+
resource_name: Name of the resource (e.g., 'products', 'entitlements', 'offerings')
|
|
276
|
+
api_key: RevenueCat API key
|
|
277
|
+
project_id: RevenueCat project ID
|
|
278
|
+
timestamp_fields: List of timestamp fields to convert to ISO format
|
|
279
|
+
|
|
280
|
+
Returns:
|
|
281
|
+
Iterator of resource data
|
|
282
|
+
"""
|
|
283
|
+
if project_id is None:
|
|
284
|
+
raise ValueError(f"project_id is required for {resource_name} resource")
|
|
285
|
+
|
|
286
|
+
endpoint = f"/projects/{project_id}/{resource_name}"
|
|
287
|
+
default_timestamp_fields = timestamp_fields or ["created_at", "updated_at"]
|
|
288
|
+
|
|
289
|
+
for item in _paginate(api_key, endpoint):
|
|
290
|
+
item = convert_timestamps_to_iso(item, default_timestamp_fields)
|
|
291
|
+
yield item
|
ingestr/src/shopify/__init__.py
CHANGED
|
@@ -669,7 +669,7 @@ def shopify_source(
|
|
|
669
669
|
params["updated_at_max"] = updated_at.end_value.isoformat()
|
|
670
670
|
yield from client.get_pages("customers", params)
|
|
671
671
|
|
|
672
|
-
@dlt.resource(primary_key="id", write_disposition="
|
|
672
|
+
@dlt.resource(primary_key="id", write_disposition="merge")
|
|
673
673
|
def events(
|
|
674
674
|
created_at: dlt.sources.incremental[
|
|
675
675
|
pendulum.DateTime
|
ingestr/src/sources.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ingestr
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.87
|
|
4
4
|
Summary: ingestr is a command-line application that ingests data from various sources and stores them in any database.
|
|
5
5
|
Project-URL: Homepage, https://github.com/bruin-data/ingestr
|
|
6
6
|
Project-URL: Issues, https://github.com/bruin-data/ingestr/issues
|
|
@@ -2,7 +2,7 @@ ingestr/conftest.py,sha256=OE2yxeTCosS9CUFVuqNypm-2ftYvVBeeq7egm3878cI,1981
|
|
|
2
2
|
ingestr/main.py,sha256=qoWHNcHh0-xVnyQxbQ-SKuTxPb1RNV3ENkCpqO7CLrk,26694
|
|
3
3
|
ingestr/src/.gitignore,sha256=8cX1AZTSI0TcdZFGTmS_oyBjpfCzhOEt0DdAo2dFIY8,203
|
|
4
4
|
ingestr/src/blob.py,sha256=UUWMjHUuoR9xP1XZQ6UANQmnMVyDx3d0X4-2FQC271I,2138
|
|
5
|
-
ingestr/src/buildinfo.py,sha256=
|
|
5
|
+
ingestr/src/buildinfo.py,sha256=1rVIau-By8hnJDfUNsHKA3_2BZoQHq9yn0wY8bWtb3U,21
|
|
6
6
|
ingestr/src/destinations.py,sha256=M2Yni6wiWcrvZ8EPJemidqxN156l0rehgCc7xuil7mo,22840
|
|
7
7
|
ingestr/src/errors.py,sha256=Ufs4_DfE77_E3vnA1fOQdi6cmuLVNm7_SbFLkL1XPGk,686
|
|
8
8
|
ingestr/src/factory.py,sha256=hC5E_XgrgTHMqwqPc6ihUYvRGTGMTzdPfQhrgPyD0tY,6945
|
|
@@ -11,7 +11,7 @@ ingestr/src/http_client.py,sha256=bxqsk6nJNXCo-79gW04B53DQO-yr25vaSsqP0AKtjx4,73
|
|
|
11
11
|
ingestr/src/loader.py,sha256=9NaWAyfkXdqAZSS-N72Iwo36Lbx4PyqIfaaH1dNdkFs,1712
|
|
12
12
|
ingestr/src/partition.py,sha256=BrIP6wFJvyR7Nus_3ElnfxknUXeCipK_E_bB8kZowfc,969
|
|
13
13
|
ingestr/src/resource.py,sha256=ZqmZxFQVGlF8rFPhBiUB08HES0yoTj8sZ--jKfaaVps,1164
|
|
14
|
-
ingestr/src/sources.py,sha256=
|
|
14
|
+
ingestr/src/sources.py,sha256=YtqbkrF_z5n6Ccmj6kiYgjGMPL08r_1vc9YOvNhXlcw,125121
|
|
15
15
|
ingestr/src/table_definition.py,sha256=REbAbqdlmUMUuRh8nEQRreWjPVOQ5ZcfqGkScKdCrmk,390
|
|
16
16
|
ingestr/src/time.py,sha256=H_Fk2J4ShXyUM-EMY7MqCLZQhlnZMZvO952bmZPc4yE,254
|
|
17
17
|
ingestr/src/version.py,sha256=J_2xgZ0mKlvuHcjdKCx2nlioneLH0I47JiU_Slr_Nwc,189
|
|
@@ -22,7 +22,7 @@ ingestr/src/applovin/__init__.py,sha256=X_YCLppPrnL8KXfYWICE_uDfMzHHH3JZ-DBGZ1Rl
|
|
|
22
22
|
ingestr/src/applovin_max/__init__.py,sha256=fxXqsIibJarp5NOGe08G964HftwLDymTtYS_LqPJht4,3315
|
|
23
23
|
ingestr/src/appsflyer/__init__.py,sha256=QoK-B3cYYMD3bqzQaLWNH6FkJyjRbzRkBF2n6urxubs,8071
|
|
24
24
|
ingestr/src/appsflyer/client.py,sha256=E6xPW4KlbBnQZ0K4eq2Xgb3AmGrtrzIX9bX8EnQr-D4,3615
|
|
25
|
-
ingestr/src/appstore/__init__.py,sha256=
|
|
25
|
+
ingestr/src/appstore/__init__.py,sha256=np8AkAIVZPnJt2pjHYgzEX9UhbxseMW9MKVnJ8qowUA,4781
|
|
26
26
|
ingestr/src/appstore/client.py,sha256=qY9nBZPNIAveR-Dn-pW141Mr9xi9LMOz2HHfnfueHvE,3975
|
|
27
27
|
ingestr/src/appstore/errors.py,sha256=KVpPWth5qlv6_QWEm3aJAt3cdf6miPJs0UDzxknx2Ms,481
|
|
28
28
|
ingestr/src/appstore/models.py,sha256=tW1JSATHBIxZ6a77-RTCBQptJk6iRC8fWcmx4NW7SVA,1716
|
|
@@ -33,7 +33,7 @@ ingestr/src/asana_source/helpers.py,sha256=PukcdDQWIGqnGxuuobbLw4hUy4-t6gxXg_Xyw
|
|
|
33
33
|
ingestr/src/asana_source/settings.py,sha256=-2tpdkwh04RvLKFvwQodnFLYn9MaxOO1hsebGnDQMTU,2829
|
|
34
34
|
ingestr/src/attio/__init__.py,sha256=CLejJjp5vGkt6r18nfNNZ-Xjc1SZgQ5IlcBW5XFQR90,3243
|
|
35
35
|
ingestr/src/attio/helpers.py,sha256=fCySmG5E6Iyh3Nm9a-HGbHNedxPH_2_otXYMTQsCibw,2185
|
|
36
|
-
ingestr/src/chess/__init__.py,sha256=
|
|
36
|
+
ingestr/src/chess/__init__.py,sha256=mvMLZdexSgDAHIk7Ps18sOrCVGCYKq35PrG2Etgj_P8,6813
|
|
37
37
|
ingestr/src/chess/helpers.py,sha256=v1HTImOMjAF7AzZUPDIuHu00e7ut0o5y1kWcVYo4QZw,549
|
|
38
38
|
ingestr/src/chess/settings.py,sha256=p0RlCGgtXUacPDEvZmwzSWmzX0Apj1riwfz-nrMK89k,158
|
|
39
39
|
ingestr/src/clickup/__init__.py,sha256=uvfAqNturT4bMvU4NS3E8BdL6nvDFzNuh7bMlih8HJk,2547
|
|
@@ -84,7 +84,7 @@ ingestr/src/kafka/__init__.py,sha256=QUHsGmdv5_E-3z0GDHXvbk39puwuGDBsyYSDhvbA89E
|
|
|
84
84
|
ingestr/src/kafka/helpers.py,sha256=V9WcVn3PKnEpggArHda4vnAcaV8VDuh__dSmRviJb5Y,7502
|
|
85
85
|
ingestr/src/kinesis/__init__.py,sha256=YretSz4F28tbkcPhd55mBp2Xk7XE9unyWx0nmvl8iEc,6235
|
|
86
86
|
ingestr/src/kinesis/helpers.py,sha256=SO2cFmWNGcykUYmjHdfxWsOQSkLQXyhFtfWnkcUOM0s,3152
|
|
87
|
-
ingestr/src/klaviyo/__init__.py,sha256=
|
|
87
|
+
ingestr/src/klaviyo/__init__.py,sha256=Tg5EqAgsEK8xM5RO2im8vFMzPGc7yDpSCUkprGjMooI,7870
|
|
88
88
|
ingestr/src/klaviyo/client.py,sha256=tPj79ia7AW0ZOJhzlKNPCliGbdojRNwUFp8HvB2ym5s,7434
|
|
89
89
|
ingestr/src/klaviyo/helpers.py,sha256=_i-SHffhv25feLDcjy6Blj1UxYLISCwVCMgGtrlnYHk,496
|
|
90
90
|
ingestr/src/linear/__init__.py,sha256=rufjwhLip7RK6j2DpFzCRQEvA_oOqgPEEdREJkc53_U,12295
|
|
@@ -94,8 +94,8 @@ ingestr/src/linkedin_ads/dimension_time_enum.py,sha256=EmHRdkFyTAfo4chGjThrwqffW
|
|
|
94
94
|
ingestr/src/linkedin_ads/helpers.py,sha256=eUWudRVlXl4kqIhfXQ1eVsUpZwJn7UFqKSpnbLfxzds,4498
|
|
95
95
|
ingestr/src/mixpanel/__init__.py,sha256=s1QtqMP0BTGW6YtdCabJFWj7lEn7KujzELwGpBOQgfs,1796
|
|
96
96
|
ingestr/src/mixpanel/client.py,sha256=c_reouegOVYBOwHLfgYFwpmkba0Sxro1Zkml07NCYf0,3602
|
|
97
|
-
ingestr/src/mongodb/__init__.py,sha256=
|
|
98
|
-
ingestr/src/mongodb/helpers.py,sha256=
|
|
97
|
+
ingestr/src/mongodb/__init__.py,sha256=wu3KJ3VH5FF67gctJqm4T3ZTdBOQam1u6xuFBohq7bs,7486
|
|
98
|
+
ingestr/src/mongodb/helpers.py,sha256=JyZvi93_WFUowctEqOdYHNnVOWXcDdAhae-25W3jvLA,31680
|
|
99
99
|
ingestr/src/notion/__init__.py,sha256=36wUui8finbc85ObkRMq8boMraXMUehdABN_AMe_hzA,1834
|
|
100
100
|
ingestr/src/notion/settings.py,sha256=MwQVZViJtnvOegfjXYc_pJ50oUYgSRPgwqu7TvpeMOA,82
|
|
101
101
|
ingestr/src/notion/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -113,11 +113,11 @@ ingestr/src/pipedrive/helpers/__init__.py,sha256=UX1K_qnGXB0ShtnBOfp2XuVbK8RRoCK
|
|
|
113
113
|
ingestr/src/pipedrive/helpers/custom_fields_munger.py,sha256=rZ4AjdITHfJE2NNomCR7vMBS1KnWpEGVF6fADwsIHUE,4488
|
|
114
114
|
ingestr/src/pipedrive/helpers/pages.py,sha256=Klpjw2OnMuhzit3PpiHKsfzGcJ3rQPSQBl3HhE3-6eA,3358
|
|
115
115
|
ingestr/src/quickbooks/__init__.py,sha256=cZUuVCOTGPHTscRj6i0DytO63_fWF-4ieMxoU4PcyTg,3727
|
|
116
|
-
ingestr/src/revenuecat/__init__.py,sha256=
|
|
117
|
-
ingestr/src/revenuecat/helpers.py,sha256=
|
|
116
|
+
ingestr/src/revenuecat/__init__.py,sha256=2UBEkIPlsuJKq0TYR-LSsLk2F4ubcQ6g_H4Fw1I8zDQ,4041
|
|
117
|
+
ingestr/src/revenuecat/helpers.py,sha256=QpgszejLEBsn9Km-DNTidPPnapBesDCnweg1IPOgoRw,9635
|
|
118
118
|
ingestr/src/salesforce/__init__.py,sha256=2hik5pRrxVODdDTlUEMoyccNC07zozjnxkMHcjMT1qA,4558
|
|
119
119
|
ingestr/src/salesforce/helpers.py,sha256=QTdazBt-qRTBbCQMZnyclIaDQFmBixBy_RDKD00Lt-8,2492
|
|
120
|
-
ingestr/src/shopify/__init__.py,sha256=
|
|
120
|
+
ingestr/src/shopify/__init__.py,sha256=RzSSG93g-Qlkz6TAxi1XasFDdxxtVXIo53ZTtjGczW4,62602
|
|
121
121
|
ingestr/src/shopify/exceptions.py,sha256=BhV3lIVWeBt8Eh4CWGW_REFJpGCzvW6-62yZrBWa3nQ,50
|
|
122
122
|
ingestr/src/shopify/helpers.py,sha256=NfHD6lWXe88ybR0ri-FCQuh2Vf8l5WG0a0FVjmdoSC4,6296
|
|
123
123
|
ingestr/src/shopify/settings.py,sha256=StY0EPr7wFJ7KzRRDN4TKxV0_gkIS1wPj2eR4AYSsDk,141
|
|
@@ -157,8 +157,8 @@ ingestr/testdata/merge_expected.csv,sha256=DReHqWGnQMsf2PBv_Q2pfjsgvikYFnf1zYcQZ
|
|
|
157
157
|
ingestr/testdata/merge_part1.csv,sha256=Pw8Z9IDKcNU0qQHx1z6BUf4rF_-SxKGFOvymCt4OY9I,185
|
|
158
158
|
ingestr/testdata/merge_part2.csv,sha256=T_GiWxA81SN63_tMOIuemcvboEFeAmbKc7xRXvL9esw,287
|
|
159
159
|
ingestr/tests/unit/test_smartsheets.py,sha256=eiC2CCO4iNJcuN36ONvqmEDryCA1bA1REpayHpu42lk,5058
|
|
160
|
-
ingestr-0.13.
|
|
161
|
-
ingestr-0.13.
|
|
162
|
-
ingestr-0.13.
|
|
163
|
-
ingestr-0.13.
|
|
164
|
-
ingestr-0.13.
|
|
160
|
+
ingestr-0.13.87.dist-info/METADATA,sha256=JVXcUZ0Q-y74Les20MSztmp0u_d6Y0M1XHpW6z8v-T4,15182
|
|
161
|
+
ingestr-0.13.87.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
162
|
+
ingestr-0.13.87.dist-info/entry_points.txt,sha256=oPJy0KBnPWYjDtP1k8qwAihcTLHSZokSQvRAw_wtfJM,46
|
|
163
|
+
ingestr-0.13.87.dist-info/licenses/LICENSE.md,sha256=cW8wIhn8HFE-KLStDF9jHQ1O_ARWP3kTpk_-eOccL24,1075
|
|
164
|
+
ingestr-0.13.87.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|