PyReverseETL 3.1.6__tar.gz → 3.1.7__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.
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/Cargo.lock +2 -2
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/Cargo.toml +1 -1
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/PKG-INFO +1 -1
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/database_advanced.rs +48 -37
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/pyproject.toml +1 -1
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/LICENSE +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/README.md +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/Cargo.toml +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/benches/load_test.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/bin/pyreverseetl_dashboard.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/activation.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/alert_compat.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/error.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/http_client.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/hubspot.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/mapping.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/marketo.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/oauth_manager.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/retry_policy.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/salesforce.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/schema_detect.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/adapters/webhook.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/cdc/change_detector.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/cdc/changelog.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/cdc/checkpoint.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/cdc/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/config.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/connectors_db.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/destination.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/error.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/hdfs.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/mysql.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/object_storage.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/postgres.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/rate_limiting.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/registry.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/saas.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/source.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/connectors/web.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/destination.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/dlq.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/entity.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/error.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/executor.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/cached_gate.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/compliance_rules.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/credentials.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/quality_gate.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/retry_policy.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/schema_evolution.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/governance/statguardian_client.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/idempotency.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/lib.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/lineage.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/observability/dashboard_launcher.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/observability/logs.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/observability/metrics.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/observability/metrics_server.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/observability/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/observability/traces.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/pipeline/activation_pipeline.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/pipeline/backpressure.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/pipeline/latency_tracker.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/pipeline/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/sources/kafka.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/sources/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/sources/polling.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/sources/sync_config.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/statguardian.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/storage/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/storage/repository.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/storage/schema.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/streaming/event_processor.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/streaming/event_schema.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/streaming/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/streampdf.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/streamxl.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/sync.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/testing/connector_test.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/testing/harness.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/testing/metrics.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/testing/mock_http.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/testing/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/testing/test_data.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/transformers/mod.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/transformers/spark.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/core/src/workflow.rs +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/python/Cargo.toml +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/python/pyreverseetl/__init__.py +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/python/pyreverseetl/cli.py +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/python/pyreverseetl/server.py +0 -0
- {pyreverseetl-3.1.6 → pyreverseetl-3.1.7}/python/src/lib.rs +0 -0
|
@@ -3199,7 +3199,7 @@ dependencies = [
|
|
|
3199
3199
|
|
|
3200
3200
|
[[package]]
|
|
3201
3201
|
name = "pyreverseetl"
|
|
3202
|
-
version = "3.1.
|
|
3202
|
+
version = "3.1.7"
|
|
3203
3203
|
dependencies = [
|
|
3204
3204
|
"chrono",
|
|
3205
3205
|
"pyo3",
|
|
@@ -3210,7 +3210,7 @@ dependencies = [
|
|
|
3210
3210
|
|
|
3211
3211
|
[[package]]
|
|
3212
3212
|
name = "pyreverseetl-core"
|
|
3213
|
-
version = "3.1.
|
|
3213
|
+
version = "3.1.7"
|
|
3214
3214
|
dependencies = [
|
|
3215
3215
|
"async-trait",
|
|
3216
3216
|
"aws-config",
|
|
@@ -222,27 +222,29 @@ impl super::DestinationConnector for AdvancedDatabaseDestination {
|
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
async fn test_connection(&self) -> crate::Result<ConnectionTest> {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
225
|
+
// Honest: this connector has no real driver, so it cannot connect.
|
|
226
|
+
Ok(ConnectionTest::failure(
|
|
227
|
+
&format!(
|
|
228
|
+
"{} destination is not implemented: no real connection was attempted",
|
|
229
|
+
self.config.database_type
|
|
230
|
+
),
|
|
231
|
+
Some("advanced database connector is a stub (RECHECK-054)".to_string()),
|
|
232
|
+
))
|
|
229
233
|
}
|
|
230
234
|
|
|
231
235
|
async fn write_record(&self, _record: &Record) -> crate::Result<()> {
|
|
232
|
-
|
|
233
|
-
|
|
236
|
+
Err(crate::Error::ConnectorError(format!(
|
|
237
|
+
"{} destination write is not implemented; refusing to report a write that did not happen",
|
|
238
|
+
self.config.database_type
|
|
239
|
+
)))
|
|
234
240
|
}
|
|
235
241
|
|
|
236
|
-
async fn write_batch(&self,
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
// - BULK_LOAD: write to S3/GCS, COPY into database
|
|
243
|
-
// 3. Handle partitioning for warehouses
|
|
244
|
-
// 4. Create clustering indexes for BigQuery
|
|
245
|
-
Ok(records.len())
|
|
242
|
+
async fn write_batch(&self, _records: &[Record]) -> crate::Result<usize> {
|
|
243
|
+
Err(crate::Error::ConnectorError(format!(
|
|
244
|
+
"{} destination batch write is not implemented; refusing to report {} rows written when none were",
|
|
245
|
+
self.config.database_type,
|
|
246
|
+
_records.len()
|
|
247
|
+
)))
|
|
246
248
|
}
|
|
247
249
|
|
|
248
250
|
async fn validate_records(&self, _records: &[Record]) -> crate::Result<()> {
|
|
@@ -283,38 +285,42 @@ impl super::SourceConnector for AdvancedDatabaseSource {
|
|
|
283
285
|
}
|
|
284
286
|
|
|
285
287
|
async fn test_connection(&self) -> crate::Result<ConnectionTest> {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
288
|
+
// Honest: this connector has no real driver, so it cannot connect.
|
|
289
|
+
Ok(ConnectionTest::failure(
|
|
290
|
+
&format!(
|
|
291
|
+
"{} source is not implemented: no real connection was attempted",
|
|
292
|
+
self.config.database_type
|
|
293
|
+
),
|
|
294
|
+
Some("advanced database connector is a stub (RECHECK-054)".to_string()),
|
|
295
|
+
))
|
|
290
296
|
}
|
|
291
297
|
|
|
292
298
|
async fn detect_schema(&self) -> crate::Result<super::Schema> {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
sample_records: vec![],
|
|
298
|
-
})
|
|
299
|
+
Err(crate::Error::ConnectorError(format!(
|
|
300
|
+
"{} schema detection is not implemented",
|
|
301
|
+
self.config.database_type
|
|
302
|
+
)))
|
|
299
303
|
}
|
|
300
304
|
|
|
301
305
|
async fn read_all(&self) -> crate::Result<Vec<Record>> {
|
|
302
|
-
|
|
303
|
-
|
|
306
|
+
Err(crate::Error::ConnectorError(format!(
|
|
307
|
+
"{} read is not implemented; refusing to report an empty result as a successful read",
|
|
308
|
+
self.config.database_type
|
|
309
|
+
)))
|
|
304
310
|
}
|
|
305
311
|
|
|
306
312
|
async fn read_batch(&self, _offset: u64, _limit: u64) -> crate::Result<Vec<Record>> {
|
|
307
|
-
|
|
308
|
-
|
|
313
|
+
Err(crate::Error::ConnectorError(format!(
|
|
314
|
+
"{} read_batch is not implemented",
|
|
315
|
+
self.config.database_type
|
|
316
|
+
)))
|
|
309
317
|
}
|
|
310
318
|
|
|
311
319
|
async fn read_incremental(&self, _last_value: &str) -> crate::Result<Vec<Record>> {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
// SELECT * FROM table WHERE id > ? ORDER BY id LIMIT ?
|
|
317
|
-
Ok(vec![])
|
|
320
|
+
Err(crate::Error::ConnectorError(format!(
|
|
321
|
+
"{} read_incremental is not implemented",
|
|
322
|
+
self.config.database_type
|
|
323
|
+
)))
|
|
318
324
|
}
|
|
319
325
|
|
|
320
326
|
fn capabilities(&self) -> Vec<Capability> {
|
|
@@ -370,8 +376,13 @@ mod tests {
|
|
|
370
376
|
let dest = AdvancedDatabaseDestination { config };
|
|
371
377
|
assert_eq!(dest.name(), "Snowflake");
|
|
372
378
|
|
|
379
|
+
// The connector is a stub: it must report failure, not fake success.
|
|
373
380
|
let test = dest.test_connection().await.unwrap();
|
|
374
|
-
assert!(test.success);
|
|
381
|
+
assert!(!test.success);
|
|
382
|
+
assert!(test.message.contains("not implemented"));
|
|
383
|
+
|
|
384
|
+
// And a write must error rather than silently claim rows were written.
|
|
385
|
+
assert!(dest.write_batch(&[]).await.is_err());
|
|
375
386
|
}
|
|
376
387
|
|
|
377
388
|
#[tokio::test]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|