PyReverseETL 3.1.4__tar.gz → 3.1.5__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 (94) hide show
  1. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/Cargo.lock +2 -2
  2. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/Cargo.toml +1 -1
  3. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/PKG-INFO +2 -2
  4. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/README.md +1 -1
  5. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/pyproject.toml +1 -1
  6. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/python/src/lib.rs +24 -3
  7. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/LICENSE +0 -0
  8. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/Cargo.toml +0 -0
  9. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/benches/load_test.rs +0 -0
  10. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/bin/pyreverseetl_dashboard.rs +0 -0
  11. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/activation.rs +0 -0
  12. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/alert_compat.rs +0 -0
  13. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/error.rs +0 -0
  14. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/http_client.rs +0 -0
  15. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/hubspot.rs +0 -0
  16. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/mapping.rs +0 -0
  17. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/marketo.rs +0 -0
  18. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/mod.rs +0 -0
  19. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/oauth_manager.rs +0 -0
  20. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/retry_policy.rs +0 -0
  21. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/salesforce.rs +0 -0
  22. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/schema_detect.rs +0 -0
  23. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/adapters/webhook.rs +0 -0
  24. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/cdc/change_detector.rs +0 -0
  25. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/cdc/changelog.rs +0 -0
  26. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/cdc/checkpoint.rs +0 -0
  27. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/cdc/mod.rs +0 -0
  28. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/config.rs +0 -0
  29. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/connectors_db.rs +0 -0
  30. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/database_advanced.rs +0 -0
  31. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/destination.rs +0 -0
  32. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/error.rs +0 -0
  33. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/hdfs.rs +0 -0
  34. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/mod.rs +0 -0
  35. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/mysql.rs +0 -0
  36. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/object_storage.rs +0 -0
  37. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/postgres.rs +0 -0
  38. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/rate_limiting.rs +0 -0
  39. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/registry.rs +0 -0
  40. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/saas.rs +0 -0
  41. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/source.rs +0 -0
  42. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/connectors/web.rs +0 -0
  43. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/destination.rs +0 -0
  44. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/entity.rs +0 -0
  45. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/error.rs +0 -0
  46. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/executor.rs +0 -0
  47. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/cached_gate.rs +0 -0
  48. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/compliance_rules.rs +0 -0
  49. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/credentials.rs +0 -0
  50. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/mod.rs +0 -0
  51. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/quality_gate.rs +0 -0
  52. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/retry_policy.rs +0 -0
  53. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/schema_evolution.rs +0 -0
  54. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/governance/statguardian_client.rs +0 -0
  55. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/idempotency.rs +0 -0
  56. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/lib.rs +0 -0
  57. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/lineage.rs +0 -0
  58. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/observability/dashboard_launcher.rs +0 -0
  59. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/observability/logs.rs +0 -0
  60. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/observability/metrics.rs +0 -0
  61. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/observability/metrics_server.rs +0 -0
  62. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/observability/mod.rs +0 -0
  63. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/observability/traces.rs +0 -0
  64. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/pipeline/activation_pipeline.rs +0 -0
  65. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/pipeline/backpressure.rs +0 -0
  66. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/pipeline/latency_tracker.rs +0 -0
  67. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/pipeline/mod.rs +0 -0
  68. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/sources/kafka.rs +0 -0
  69. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/sources/mod.rs +0 -0
  70. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/sources/polling.rs +0 -0
  71. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/sources/sync_config.rs +0 -0
  72. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/statguardian.rs +0 -0
  73. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/storage/mod.rs +0 -0
  74. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/storage/repository.rs +0 -0
  75. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/storage/schema.rs +0 -0
  76. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/streaming/event_processor.rs +0 -0
  77. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/streaming/event_schema.rs +0 -0
  78. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/streaming/mod.rs +0 -0
  79. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/streampdf.rs +0 -0
  80. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/streamxl.rs +0 -0
  81. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/sync.rs +0 -0
  82. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/testing/connector_test.rs +0 -0
  83. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/testing/harness.rs +0 -0
  84. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/testing/metrics.rs +0 -0
  85. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/testing/mock_http.rs +0 -0
  86. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/testing/mod.rs +0 -0
  87. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/testing/test_data.rs +0 -0
  88. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/transformers/mod.rs +0 -0
  89. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/transformers/spark.rs +0 -0
  90. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/core/src/workflow.rs +0 -0
  91. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/python/Cargo.toml +0 -0
  92. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/python/pyreverseetl/__init__.py +0 -0
  93. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/python/pyreverseetl/cli.py +0 -0
  94. {pyreverseetl-3.1.4 → pyreverseetl-3.1.5}/python/pyreverseetl/server.py +0 -0
@@ -3199,7 +3199,7 @@ dependencies = [
3199
3199
 
3200
3200
  [[package]]
3201
3201
  name = "pyreverseetl"
3202
- version = "3.1.4"
3202
+ version = "3.1.5"
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.4"
3213
+ version = "3.1.5"
3214
3214
  dependencies = [
3215
3215
  "async-trait",
3216
3216
  "aws-config",
@@ -3,7 +3,7 @@ members = ["core", "python"]
3
3
  resolver = "2"
4
4
 
5
5
  [workspace.package]
6
- version = "3.1.4"
6
+ version = "3.1.5"
7
7
  authors = ["Georgi Mammen Mullassery <mullassery@gmail.com>"]
8
8
  license = "Apache-2.0"
9
9
  repository = "https://github.com/Mullassery/PyReverseETL"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyReverseETL
3
- Version: 3.1.4
3
+ Version: 3.1.5
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Programming Language :: Python :: 3
@@ -103,7 +103,7 @@ repeated here to avoid implying vendor endorsement.
103
103
 
104
104
  ## Project status
105
105
 
106
- **Beta.** Version 3.1.4. The Postgres/MySQL/S3/webhook paths are real and verified against
106
+ **Beta.** Version 3.1.5. The Postgres/MySQL/S3/webhook paths are real and verified against
107
107
  real services; the `web` source connector (MudFish-backed site crawling) is implemented
108
108
  and unit-tested but not yet exercised end-to-end against a live site; the CRM/marketing
109
109
  adapters are real but mock-verified only; several
@@ -80,7 +80,7 @@ repeated here to avoid implying vendor endorsement.
80
80
 
81
81
  ## Project status
82
82
 
83
- **Beta.** Version 3.1.4. The Postgres/MySQL/S3/webhook paths are real and verified against
83
+ **Beta.** Version 3.1.5. The Postgres/MySQL/S3/webhook paths are real and verified against
84
84
  real services; the `web` source connector (MudFish-backed site crawling) is implemented
85
85
  and unit-tested but not yet exercised end-to-end against a live site; the CRM/marketing
86
86
  adapters are real but mock-verified only; several
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "PyReverseETL"
7
- version = "3.1.4"
7
+ version = "3.1.5"
8
8
  description = "The Open Operational Data Activation Runtime"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -2,7 +2,7 @@ use pyo3::exceptions::PyValueError;
2
2
  use pyo3::prelude::*;
3
3
  use pyreverseetl_core::adapters::AuthMethod as AdapterAuth;
4
4
  use pyreverseetl_core::connectors::{
5
- MySQLConfig, ObjectStorageConfig, PostgreSQLConfig, TableFormat,
5
+ MySQLConfig, ObjectStorageConfig, PostgreSQLConfig, TableFormat, WebConfig,
6
6
  };
7
7
  use pyreverseetl_core::destination::DestinationType;
8
8
  use pyreverseetl_core::entity::EntityType;
@@ -301,8 +301,27 @@ fn build_source_spec(source_type: &str, config: &Value) -> PyResult<SourceSpec>
301
301
  Ok(SourceSpec::MySQL(cfg))
302
302
  }
303
303
  "s3" => Ok(SourceSpec::S3(build_object_storage_config(config)?)),
304
+ "web" => {
305
+ let mut cfg = WebConfig {
306
+ seed_url: get_str(config, "seed_url")?.to_string(),
307
+ ..Default::default()
308
+ };
309
+ if let Some(v) = config.get("max_depth").and_then(|v| v.as_u64()) {
310
+ cfg.max_depth = v as usize;
311
+ }
312
+ if let Some(v) = config.get("max_urls").and_then(|v| v.as_u64()) {
313
+ cfg.max_urls = v as usize;
314
+ }
315
+ if let Some(v) = config.get("same_domain").and_then(|v| v.as_bool()) {
316
+ cfg.same_domain = v;
317
+ }
318
+ if let Some(v) = config.get("render_js").and_then(|v| v.as_bool()) {
319
+ cfg.render_js = v;
320
+ }
321
+ Ok(SourceSpec::Web(cfg))
322
+ }
304
323
  other => Err(py_err(format!(
305
- "unsupported source_type '{other}' (supported: postgres, mysql, s3)"
324
+ "unsupported source_type '{other}' (supported: postgres, mysql, s3, web)"
306
325
  ))),
307
326
  }
308
327
  }
@@ -489,7 +508,9 @@ pub struct PySyncResult {
489
508
  /// Run a real sync: read from `source_type`/`source_config` (JSON string),
490
509
  /// apply `compliance_rules` (JSON string, optional), write to
491
510
  /// `destination_type`/`destination_config` (JSON string), and record a real
492
- /// lineage edge. Supported `source_type`: `postgres`, `mysql`, `s3`.
511
+ /// lineage edge. Supported `source_type`: `postgres`, `mysql`, `s3`, `web`
512
+ /// (MudFish-backed site crawl; `source_config` takes `seed_url` plus optional
513
+ /// `max_depth`, `max_urls`, `same_domain`, `render_js`).
493
514
  /// Supported `destination_type`: all of those plus `webhook`, `salesforce`,
494
515
  /// `hubspot`, `marketo`. With `dry_run=True`, records are still read and run
495
516
  /// through the real compliance engine, but the destination is never
File without changes