interloper-core 0.2.0__tar.gz → 0.3.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.
Files changed (126) hide show
  1. {interloper_core-0.2.0 → interloper_core-0.3.0}/PKG-INFO +5 -4
  2. {interloper_core-0.2.0 → interloper_core-0.3.0}/pyproject.toml +8 -3
  3. interloper_core-0.3.0/src/interloper/__init__.py +99 -0
  4. interloper_core-0.3.0/src/interloper/asset/__init__.py +5 -0
  5. interloper_core-0.3.0/src/interloper/asset/base.py +743 -0
  6. {interloper_core-0.2.0/src/interloper/assets → interloper_core-0.3.0/src/interloper/asset}/context.py +32 -77
  7. interloper_core-0.3.0/src/interloper/asset/decorator.py +168 -0
  8. interloper_core-0.3.0/src/interloper/catalog/__init__.py +5 -0
  9. interloper_core-0.3.0/src/interloper/catalog/base.py +169 -0
  10. interloper_core-0.3.0/src/interloper/cli/__init__.py +0 -0
  11. interloper_core-0.3.0/src/interloper/cli/commands/__init__.py +1 -0
  12. interloper_core-0.3.0/src/interloper/cli/commands/agent.py +80 -0
  13. interloper_core-0.3.0/src/interloper/cli/commands/app.py +152 -0
  14. interloper_core-0.3.0/src/interloper/cli/commands/db.py +114 -0
  15. interloper_core-0.3.0/src/interloper/cli/commands/launch.py +76 -0
  16. interloper_core-0.3.0/src/interloper/cli/commands/run.py +228 -0
  17. interloper_core-0.3.0/src/interloper/cli/main.py +109 -0
  18. interloper_core-0.3.0/src/interloper/cli/runtime.py +84 -0
  19. interloper_core-0.3.0/src/interloper/cli/services.py +244 -0
  20. interloper_core-0.3.0/src/interloper/component/__init__.py +4 -0
  21. interloper_core-0.3.0/src/interloper/component/base.py +276 -0
  22. interloper_core-0.3.0/src/interloper/component/build.py +89 -0
  23. interloper_core-0.3.0/src/interloper/config/__init__.py +4 -0
  24. interloper_core-0.3.0/src/interloper/config/base.py +27 -0
  25. interloper_core-0.3.0/src/interloper/config/decorator.py +75 -0
  26. interloper_core-0.3.0/src/interloper/connection/__init__.py +4 -0
  27. interloper_core-0.3.0/src/interloper/connection/base.py +46 -0
  28. interloper_core-0.3.0/src/interloper/connection/decorator.py +76 -0
  29. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/dag/__init__.py +2 -2
  30. interloper_core-0.3.0/src/interloper/dag/base.py +370 -0
  31. interloper_core-0.3.0/src/interloper/dag/spec.py +43 -0
  32. interloper_core-0.3.0/src/interloper/destination/__init__.py +22 -0
  33. interloper_core-0.3.0/src/interloper/destination/adapter.py +63 -0
  34. interloper_core-0.3.0/src/interloper/destination/base.py +137 -0
  35. {interloper_core-0.2.0/src/interloper/io → interloper_core-0.3.0/src/interloper/destination}/context.py +3 -10
  36. {interloper_core-0.2.0/src/interloper/io → interloper_core-0.3.0/src/interloper/destination}/csv.py +11 -30
  37. interloper_core-0.3.0/src/interloper/destination/database.py +243 -0
  38. interloper_core-0.3.0/src/interloper/destination/decorator.py +85 -0
  39. interloper_core-0.3.0/src/interloper/destination/file.py +92 -0
  40. {interloper_core-0.2.0/src/interloper/io → interloper_core-0.3.0/src/interloper/destination}/memory.py +22 -53
  41. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/errors.py +81 -25
  42. interloper_core-0.3.0/src/interloper/events/__init__.py +15 -0
  43. interloper_core-0.3.0/src/interloper/events/bus.py +199 -0
  44. interloper_core-0.3.0/src/interloper/events/event.py +136 -0
  45. interloper_core-0.3.0/src/interloper/events/logger.py +58 -0
  46. interloper_core-0.3.0/src/interloper/events/stderr.py +42 -0
  47. interloper_core-0.3.0/src/interloper/events/types.py +51 -0
  48. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/normalizer/base.py +39 -16
  49. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/normalizer/strategy.py +3 -3
  50. interloper_core-0.3.0/src/interloper/resource/__init__.py +24 -0
  51. interloper_core-0.3.0/src/interloper/resource/base.py +81 -0
  52. interloper_core-0.3.0/src/interloper/resource/fields.py +309 -0
  53. interloper_core-0.3.0/src/interloper/resource/ref.py +108 -0
  54. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/rest/__init__.py +1 -1
  55. interloper_core-0.3.0/src/interloper/runner/__init__.py +24 -0
  56. interloper_core-0.3.0/src/interloper/runner/async_runner.py +221 -0
  57. interloper_core-0.3.0/src/interloper/runner/base.py +169 -0
  58. interloper_core-0.3.0/src/interloper/runner/multi_process.py +156 -0
  59. interloper_core-0.3.0/src/interloper/runner/multi_thread.py +50 -0
  60. {interloper_core-0.2.0/src/interloper/runners → interloper_core-0.3.0/src/interloper/runner}/results.py +51 -22
  61. interloper_core-0.3.0/src/interloper/runner/serial.py +47 -0
  62. interloper_core-0.3.0/src/interloper/runner/state.py +340 -0
  63. interloper_core-0.3.0/src/interloper/runner/sync_runner.py +218 -0
  64. interloper_core-0.3.0/src/interloper/schema/__init__.py +4 -0
  65. interloper_core-0.3.0/src/interloper/schema/base.py +196 -0
  66. interloper_core-0.3.0/src/interloper/schema/decorator.py +59 -0
  67. interloper_core-0.3.0/src/interloper/settings.py +195 -0
  68. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/source/__init__.py +0 -3
  69. interloper_core-0.3.0/src/interloper/source/base.py +537 -0
  70. interloper_core-0.3.0/src/interloper/source/decorator.py +229 -0
  71. interloper_core-0.3.0/src/interloper/utils/__init__.py +6 -0
  72. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/utils/imports.py +28 -29
  73. interloper_core-0.3.0/src/interloper/utils/text.py +77 -0
  74. interloper_core-0.2.0/src/interloper/__init__.py +0 -140
  75. interloper_core-0.2.0/src/interloper/assets/__init__.py +0 -8
  76. interloper_core-0.2.0/src/interloper/assets/base.py +0 -594
  77. interloper_core-0.2.0/src/interloper/assets/decorator.py +0 -92
  78. interloper_core-0.2.0/src/interloper/assets/keys.py +0 -22
  79. interloper_core-0.2.0/src/interloper/backfillers/__init__.py +0 -8
  80. interloper_core-0.2.0/src/interloper/backfillers/base.py +0 -254
  81. interloper_core-0.2.0/src/interloper/backfillers/results.py +0 -99
  82. interloper_core-0.2.0/src/interloper/backfillers/serial.py +0 -38
  83. interloper_core-0.2.0/src/interloper/backfillers/state.py +0 -141
  84. interloper_core-0.2.0/src/interloper/cli/__init__.py +0 -5
  85. interloper_core-0.2.0/src/interloper/cli/config.py +0 -50
  86. interloper_core-0.2.0/src/interloper/cli/display.py +0 -1068
  87. interloper_core-0.2.0/src/interloper/cli/main.py +0 -265
  88. interloper_core-0.2.0/src/interloper/dag/base.py +0 -404
  89. interloper_core-0.2.0/src/interloper/events/__init__.py +0 -29
  90. interloper_core-0.2.0/src/interloper/events/base.py +0 -480
  91. interloper_core-0.2.0/src/interloper/events/server.py +0 -148
  92. interloper_core-0.2.0/src/interloper/io/__init__.py +0 -21
  93. interloper_core-0.2.0/src/interloper/io/adapter.py +0 -106
  94. interloper_core-0.2.0/src/interloper/io/base.py +0 -73
  95. interloper_core-0.2.0/src/interloper/io/database.py +0 -378
  96. interloper_core-0.2.0/src/interloper/io/file.py +0 -153
  97. interloper_core-0.2.0/src/interloper/runners/__init__.py +0 -14
  98. interloper_core-0.2.0/src/interloper/runners/base.py +0 -279
  99. interloper_core-0.2.0/src/interloper/runners/multi_process.py +0 -158
  100. interloper_core-0.2.0/src/interloper/runners/multi_thread.py +0 -100
  101. interloper_core-0.2.0/src/interloper/runners/serial.py +0 -42
  102. interloper_core-0.2.0/src/interloper/runners/state.py +0 -229
  103. interloper_core-0.2.0/src/interloper/schema/__init__.py +0 -5
  104. interloper_core-0.2.0/src/interloper/schema/base.py +0 -179
  105. interloper_core-0.2.0/src/interloper/serialization/__init__.py +0 -21
  106. interloper_core-0.2.0/src/interloper/serialization/asset.py +0 -100
  107. interloper_core-0.2.0/src/interloper/serialization/backfiller.py +0 -29
  108. interloper_core-0.2.0/src/interloper/serialization/base.py +0 -43
  109. interloper_core-0.2.0/src/interloper/serialization/config.py +0 -45
  110. interloper_core-0.2.0/src/interloper/serialization/dag.py +0 -29
  111. interloper_core-0.2.0/src/interloper/serialization/io.py +0 -28
  112. interloper_core-0.2.0/src/interloper/serialization/runner.py +0 -29
  113. interloper_core-0.2.0/src/interloper/serialization/source.py +0 -68
  114. interloper_core-0.2.0/src/interloper/source/base.py +0 -389
  115. interloper_core-0.2.0/src/interloper/source/config.py +0 -20
  116. interloper_core-0.2.0/src/interloper/source/decorator.py +0 -77
  117. interloper_core-0.2.0/src/interloper/utils/__init__.py +0 -6
  118. interloper_core-0.2.0/src/interloper/utils/text.py +0 -94
  119. {interloper_core-0.2.0 → interloper_core-0.3.0}/README.md +0 -0
  120. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/normalizer/__init__.py +0 -0
  121. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/partitioning/__init__.py +0 -0
  122. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/partitioning/base.py +0 -0
  123. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/partitioning/time.py +0 -0
  124. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/rest/auth.py +0 -0
  125. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/rest/client.py +0 -0
  126. {interloper_core-0.2.0 → interloper_core-0.3.0}/src/interloper/rest/paginator.py +0 -0
@@ -1,16 +1,17 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: interloper-core
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Summary: Interloper
5
5
  Author: Guillaume Onfroy
6
6
  Author-email: Guillaume Onfroy <guillaume@digitlcloud.com>
7
7
  Requires-Dist: pydantic>=2.11.7
8
8
  Requires-Dist: pydantic-settings>=2.11.0
9
9
  Requires-Dist: httpx>=0.28.1
10
- Requires-Dist: pyyaml>=6.0.0 ; extra == 'cli'
11
- Requires-Dist: rich>=14.3.2 ; extra == 'cli'
10
+ Requires-Dist: pyyaml>=6.0.0
11
+ Requires-Dist: typing-extensions>=4.0.0
12
+ Requires-Dist: interloper-google-cloud ; extra == 'google-cloud'
12
13
  Requires-Python: >=3.10
13
- Provides-Extra: cli
14
+ Provides-Extra: google-cloud
14
15
  Description-Content-Type: text/markdown
15
16
 
16
17
  # interloper-core
@@ -3,7 +3,7 @@
3
3
  # ###############
4
4
  [project]
5
5
  name = "interloper-core"
6
- version = "0.2.0"
6
+ version = "0.3.0"
7
7
  description = "Interloper"
8
8
  authors = [{ name = "Guillaume Onfroy", email = "guillaume@digitlcloud.com" }]
9
9
  readme = "README.md"
@@ -12,16 +12,21 @@ dependencies = [
12
12
  "pydantic>=2.11.7",
13
13
  "pydantic-settings>=2.11.0",
14
14
  "httpx>=0.28.1",
15
+ "pyyaml>=6.0.0",
16
+ "typing_extensions>=4.0.0",
15
17
  ]
16
18
 
17
19
  [project.optional-dependencies]
18
- cli = ["pyyaml>=6.0.0", "rich>=14.3.2"]
20
+ google-cloud = ["interloper-google-cloud"]
19
21
 
20
22
  [dependency-groups]
21
23
  dev = ["pytest>=8.0.0", "pytest-cov>=7.0.0"]
22
24
 
25
+ [tool.uv.sources]
26
+ interloper-google-cloud = { workspace = true }
27
+
23
28
  [build-system]
24
- requires = ["uv_build>=0.9.5,<0.10.0"]
29
+ requires = ["uv_build>=0.11.5,<0.12"]
25
30
  build-backend = "uv_build"
26
31
 
27
32
  [tool.uv.build-backend]
@@ -0,0 +1,99 @@
1
+ from interloper.asset import Asset, AssetDefinition, ExecutionContext, asset
2
+ from interloper.catalog import Catalog
3
+ from interloper.component import Component, ComponentDefinition, ComponentSpec
4
+ from interloper.config import Config, config
5
+ from interloper.connection import Connection, connection
6
+ from interloper.dag import DAG
7
+ from interloper.destination import (
8
+ CSVDestination,
9
+ Destination,
10
+ DestinationDefinition,
11
+ FileDestination,
12
+ IOContext,
13
+ MemoryDestination,
14
+ destination,
15
+ )
16
+ from interloper.events import Event, EventBus, EventType
17
+ from interloper.normalizer import MaterializationStrategy, Normalizer
18
+ from interloper.partitioning import (
19
+ Partition,
20
+ PartitionConfig,
21
+ PartitionWindow,
22
+ TimePartition,
23
+ TimePartitionConfig,
24
+ TimePartitionWindow,
25
+ )
26
+ from interloper.resource import Resource, ResourceDefinition, ResourceRef
27
+ from interloper.resource.fields import (
28
+ FetchField,
29
+ InputField,
30
+ JsonField,
31
+ OAuthConfig,
32
+ SecretField,
33
+ SelectField,
34
+ TextField,
35
+ )
36
+ from interloper.rest import HTTPBearerAuth, OAuth2Auth, OAuth2ClientCredentialsAuth, OAuth2RefreshTokenAuth, RESTClient
37
+ from interloper.runner import AsyncRunner, MultiProcessRunner, MultiThreadRunner, Runner, RunResult, SerialRunner
38
+ from interloper.schema import Schema, schema
39
+ from interloper.source import Source, SourceDefinition, source
40
+
41
+ __all__ = [
42
+ "DAG",
43
+ "Asset",
44
+ "AssetDefinition",
45
+ "AsyncRunner",
46
+ "CSVDestination",
47
+ "Catalog",
48
+ "Component",
49
+ "ComponentDefinition",
50
+ "ComponentSpec",
51
+ "Config",
52
+ "Connection",
53
+ "Destination",
54
+ "DestinationDefinition",
55
+ "Event",
56
+ "EventBus",
57
+ "EventType",
58
+ "ExecutionContext",
59
+ "FetchField",
60
+ "FileDestination",
61
+ "HTTPBearerAuth",
62
+ "IOContext",
63
+ "InputField",
64
+ "JsonField",
65
+ "MaterializationStrategy",
66
+ "MemoryDestination",
67
+ "MultiProcessRunner",
68
+ "MultiThreadRunner",
69
+ "Normalizer",
70
+ "OAuth2Auth",
71
+ "OAuth2ClientCredentialsAuth",
72
+ "OAuth2RefreshTokenAuth",
73
+ "OAuthConfig",
74
+ "Partition",
75
+ "PartitionConfig",
76
+ "PartitionWindow",
77
+ "RESTClient",
78
+ "Resource",
79
+ "ResourceDefinition",
80
+ "ResourceRef",
81
+ "RunResult",
82
+ "Runner",
83
+ "Schema",
84
+ "SecretField",
85
+ "SelectField",
86
+ "SerialRunner",
87
+ "Source",
88
+ "SourceDefinition",
89
+ "TextField",
90
+ "TimePartition",
91
+ "TimePartitionConfig",
92
+ "TimePartitionWindow",
93
+ "asset",
94
+ "config",
95
+ "connection",
96
+ "destination",
97
+ "schema",
98
+ "source",
99
+ ]
@@ -0,0 +1,5 @@
1
+ from interloper.asset.base import Asset, AssetDefinition
2
+ from interloper.asset.context import ExecutionContext
3
+ from interloper.asset.decorator import asset
4
+
5
+ __all__ = ["Asset", "AssetDefinition", "ExecutionContext", "asset"]