interloper-core 0.76.0__tar.gz → 0.78.0__tar.gz
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.
- {interloper_core-0.76.0 → interloper_core-0.78.0}/PKG-INFO +1 -1
- {interloper_core-0.76.0 → interloper_core-0.78.0}/pyproject.toml +4 -2
- {interloper_core-0.76.0 → interloper_core-0.78.0}/pyproject.toml.orig +3 -3
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/__init__.py +7 -12
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/asset/__init__.py +3 -2
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/asset/base.py +414 -439
- interloper_core-0.78.0/src/interloper/asset/decorator.py +174 -0
- interloper_core-0.78.0/src/interloper/asset/upstream.py +48 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/catalog/base.py +31 -32
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/commands/run.py +8 -4
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/component/__init__.py +4 -4
- interloper_core-0.78.0/src/interloper/component/base.py +816 -0
- interloper_core-0.78.0/src/interloper/component/decorator.py +255 -0
- interloper_core-0.78.0/src/interloper/component/relation.py +421 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/config/base.py +1 -0
- interloper_core-0.78.0/src/interloper/config/decorator.py +100 -0
- interloper_core-0.78.0/src/interloper/connection/decorator.py +120 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/dag/base.py +207 -96
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/destination/__init__.py +3 -6
- interloper_core-0.78.0/src/interloper/destination/base.py +110 -0
- interloper_core-0.78.0/src/interloper/destination/context.py +84 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/destination/csv.py +18 -18
- interloper_core-0.78.0/src/interloper/destination/database.py +265 -0
- interloper_core-0.78.0/src/interloper/destination/decorator.py +105 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/destination/file.py +18 -18
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/destination/memory.py +14 -14
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/errors.py +8 -12
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/console.py +1 -1
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/hook/base.py +15 -18
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/hook/trigger.py +11 -15
- interloper_core-0.78.0/src/interloper/job/base.py +77 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/normalizer/base.py +15 -25
- interloper_core-0.78.0/src/interloper/normalizer/strategy.py +37 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/operation/base.py +39 -26
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/partitioning/base.py +1 -7
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/partitioning/time.py +2 -5
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/representation/__init__.py +2 -2
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/representation/base.py +187 -30
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/resource/__init__.py +1 -3
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/resource/base.py +4 -18
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/resource/fields.py +46 -36
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/rest/paginator.py +1 -1
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/schema/base.py +1 -1
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/serializable/__init__.py +2 -1
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/serializable/base.py +383 -61
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/source/__init__.py +1 -1
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/source/base.py +252 -329
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/source/decorator.py +36 -95
- interloper_core-0.78.0/src/interloper/utils/data.py +33 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/utils/time.py +1 -1
- interloper_core-0.76.0/src/interloper/asset/decorator.py +0 -211
- interloper_core-0.76.0/src/interloper/component/base.py +0 -536
- interloper_core-0.76.0/src/interloper/config/decorator.py +0 -82
- interloper_core-0.76.0/src/interloper/conformer/__init__.py +0 -5
- interloper_core-0.76.0/src/interloper/conformer/base.py +0 -126
- interloper_core-0.76.0/src/interloper/connection/decorator.py +0 -106
- interloper_core-0.76.0/src/interloper/destination/base.py +0 -115
- interloper_core-0.76.0/src/interloper/destination/context.py +0 -31
- interloper_core-0.76.0/src/interloper/destination/database.py +0 -368
- interloper_core-0.76.0/src/interloper/destination/decorator.py +0 -110
- interloper_core-0.76.0/src/interloper/destination/partitioned.py +0 -100
- interloper_core-0.76.0/src/interloper/job/base.py +0 -96
- interloper_core-0.76.0/src/interloper/normalizer/strategy.py +0 -21
- interloper_core-0.76.0/src/interloper/resource/ref.py +0 -118
- interloper_core-0.76.0/src/interloper/utils/data.py +0 -86
- {interloper_core-0.76.0 → interloper_core-0.78.0}/README.md +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/asset/context.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/catalog/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/commands/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/commands/agent.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/commands/app.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/commands/db.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/commands/launch.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/main.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/cli/runtime.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/config/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/connection/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/connection/base.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/dag/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/bus.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/event.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/logger.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/stderr.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/events/types.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/hook/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/hook/webhook.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/job/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/job/cron.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/normalizer/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/oauth/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/oauth/base.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/oauth/config.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/oauth/providers.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/operation/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/partitioning/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/registry/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/registry/base.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/rest/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/rest/auth.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/rest/client.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/async_runner.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/base.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/multi_process.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/results.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/serial.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/state.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/runner/sync_runner.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/schema/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/schema/decorator.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/settings.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/telemetry/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/telemetry/attributes.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/telemetry/metrics.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/telemetry/propagation.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/telemetry/setup.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/telemetry/tracer.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/utils/__init__.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/utils/concurrency.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/utils/imports.py +0 -0
- {interloper_core-0.76.0 → interloper_core-0.78.0}/src/interloper/utils/text.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "interloper-core"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.78.0"
|
|
4
4
|
description = "Interloper"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -110,8 +110,10 @@ convention = "google"
|
|
|
110
110
|
"D102",
|
|
111
111
|
"D104",
|
|
112
112
|
"B018",
|
|
113
|
+
"RUF069",
|
|
114
|
+
"PLW0108",
|
|
113
115
|
]
|
|
114
116
|
|
|
115
117
|
[build-system]
|
|
116
|
-
requires = ["uv_build>=0.
|
|
118
|
+
requires = ["uv_build>=0.12.9,<0.13"]
|
|
117
119
|
build-backend = "uv_build"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# ###############
|
|
4
4
|
[project]
|
|
5
5
|
name = "interloper-core"
|
|
6
|
-
version = "0.
|
|
6
|
+
version = "0.78.0"
|
|
7
7
|
description = "Interloper"
|
|
8
8
|
authors = [{ name = "Guillaume Onfroy", email = "guillaume@digitlcloud.com" }]
|
|
9
9
|
readme = "README.md"
|
|
@@ -72,7 +72,7 @@ snapchat = "interloper.oauth.providers:SNAPCHAT"
|
|
|
72
72
|
tiktok = "interloper.oauth.providers:TIKTOK"
|
|
73
73
|
|
|
74
74
|
[build-system]
|
|
75
|
-
requires = ["uv_build>=0.
|
|
75
|
+
requires = ["uv_build>=0.12.9,<0.13"]
|
|
76
76
|
build-backend = "uv_build"
|
|
77
77
|
|
|
78
78
|
[tool.uv.build-backend]
|
|
@@ -96,7 +96,7 @@ convention = "google"
|
|
|
96
96
|
|
|
97
97
|
[tool.ruff.lint.per-file-ignores]
|
|
98
98
|
"__init__.py" = ["F401", "F403"]
|
|
99
|
-
"tests/**" = ["ANN", "D101", "D102", "D104", "B018"]
|
|
99
|
+
"tests/**" = ["ANN", "D101", "D102", "D104", "B018", "RUF069", "PLW0108"]
|
|
100
100
|
|
|
101
101
|
# Pytest is configured once, at the workspace root: a per-package
|
|
102
102
|
# [tool.pytest.ini_options] block would make it the rootdir for any run
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"""Interloper's public API: assets, sources, destinations, DAGs, and runners."""
|
|
2
2
|
|
|
3
|
-
from interloper.asset import Asset, AssetDefinition,
|
|
3
|
+
from interloper.asset import Asset, AssetDefinition, ExecutionContext, Upstream, asset
|
|
4
4
|
from interloper.catalog import Catalog
|
|
5
5
|
from interloper.component import (
|
|
6
6
|
KINDS,
|
|
7
7
|
Component,
|
|
8
8
|
ComponentDefinition,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
ComponentIdentity,
|
|
10
|
+
Relation,
|
|
11
11
|
)
|
|
12
12
|
from interloper.config import Config, config
|
|
13
13
|
from interloper.connection import (
|
|
@@ -22,11 +22,9 @@ from interloper.dag import DAG
|
|
|
22
22
|
from interloper.destination import (
|
|
23
23
|
CSVDestination,
|
|
24
24
|
Destination,
|
|
25
|
-
DestinationDefinition,
|
|
26
25
|
FileDestination,
|
|
27
26
|
IOContext,
|
|
28
27
|
MemoryDestination,
|
|
29
|
-
PartitionedDestination,
|
|
30
28
|
destination,
|
|
31
29
|
)
|
|
32
30
|
from interloper.events import Event, EventBus, EventType
|
|
@@ -45,7 +43,7 @@ from interloper.partitioning import (
|
|
|
45
43
|
TimePartitionWindow,
|
|
46
44
|
)
|
|
47
45
|
from interloper.registry import Registry
|
|
48
|
-
from interloper.resource import Resource, ResourceDefinition
|
|
46
|
+
from interloper.resource import Resource, ResourceDefinition
|
|
49
47
|
from interloper.resource.fields import (
|
|
50
48
|
CronField,
|
|
51
49
|
FetchField,
|
|
@@ -86,7 +84,6 @@ __all__ = [
|
|
|
86
84
|
"KINDS",
|
|
87
85
|
"Asset",
|
|
88
86
|
"AssetDefinition",
|
|
89
|
-
"AssetIdentity",
|
|
90
87
|
"AsyncRESTClient",
|
|
91
88
|
"AsyncRunner",
|
|
92
89
|
"BasePaginator",
|
|
@@ -94,13 +91,13 @@ __all__ = [
|
|
|
94
91
|
"Catalog",
|
|
95
92
|
"Component",
|
|
96
93
|
"ComponentDefinition",
|
|
94
|
+
"ComponentIdentity",
|
|
97
95
|
"Config",
|
|
98
96
|
"Connection",
|
|
99
97
|
"ConnectionState",
|
|
100
98
|
"CronField",
|
|
101
99
|
"CronJob",
|
|
102
100
|
"Destination",
|
|
103
|
-
"DestinationDefinition",
|
|
104
101
|
"Event",
|
|
105
102
|
"EventBus",
|
|
106
103
|
"EventType",
|
|
@@ -137,18 +134,15 @@ __all__ = [
|
|
|
137
134
|
"Partition",
|
|
138
135
|
"PartitionConfig",
|
|
139
136
|
"PartitionWindow",
|
|
140
|
-
"PartitionedDestination",
|
|
141
137
|
"RESTClient",
|
|
142
138
|
"RangePaginator",
|
|
143
139
|
"RefreshTokenOAuthConnection",
|
|
144
140
|
"RefreshTokenResponse",
|
|
145
141
|
"Registry",
|
|
146
|
-
"
|
|
147
|
-
"RelationSlot",
|
|
142
|
+
"Relation",
|
|
148
143
|
"Renewal",
|
|
149
144
|
"Resource",
|
|
150
145
|
"ResourceDefinition",
|
|
151
|
-
"ResourceRef",
|
|
152
146
|
"RunResult",
|
|
153
147
|
"Runner",
|
|
154
148
|
"Schema",
|
|
@@ -167,6 +161,7 @@ __all__ = [
|
|
|
167
161
|
"TimePartitionWindow",
|
|
168
162
|
"TimezoneField",
|
|
169
163
|
"TriggerHook",
|
|
164
|
+
"Upstream",
|
|
170
165
|
"WebhookHook",
|
|
171
166
|
"Workload",
|
|
172
167
|
"asset",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""Assets: the core data-producing component, its execution context, and its decorator."""
|
|
2
2
|
|
|
3
|
-
from interloper.asset.base import Asset, AssetDefinition
|
|
3
|
+
from interloper.asset.base import Asset, AssetDefinition
|
|
4
4
|
from interloper.asset.context import ExecutionContext
|
|
5
5
|
from interloper.asset.decorator import asset
|
|
6
|
+
from interloper.asset.upstream import Upstream
|
|
6
7
|
|
|
7
|
-
__all__ = ["Asset", "AssetDefinition", "
|
|
8
|
+
__all__ = ["Asset", "AssetDefinition", "ExecutionContext", "Upstream", "asset"]
|