airbyte-cdk 6.53.0__py3-none-any.whl → 6.53.0.post2.dev15405329474__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.
@@ -3630,6 +3630,9 @@ definitions:
3630
3630
  delimiter:
3631
3631
  type: string
3632
3632
  default: ","
3633
+ set_empty_cell_to_none:
3634
+ type: boolean
3635
+ default: false
3633
3636
  AsyncJobStatusMap:
3634
3637
  description: Matches the api job status to Async Job Status.
3635
3638
  type: object
@@ -103,6 +103,7 @@ class CsvParser(Parser):
103
103
  # TODO: migrate implementation to re-use file-base classes
104
104
  encoding: Optional[str] = "utf-8"
105
105
  delimiter: Optional[str] = ","
106
+ set_empty_cell_to_none: Optional[bool] = False
106
107
 
107
108
  def _get_delimiter(self) -> Optional[str]:
108
109
  """
@@ -121,6 +122,8 @@ class CsvParser(Parser):
121
122
  text_data = TextIOWrapper(data, encoding=self.encoding) # type: ignore
122
123
  reader = csv.DictReader(text_data, delimiter=self._get_delimiter() or ",")
123
124
  for row in reader:
125
+ if self.set_empty_cell_to_none:
126
+ row = {k: (None if v == "" else v) for k, v in row.items()}
124
127
  yield row
125
128
 
126
129
 
@@ -1383,6 +1383,7 @@ class CsvDecoder(BaseModel):
1383
1383
  type: Literal["CsvDecoder"]
1384
1384
  encoding: Optional[str] = "utf-8"
1385
1385
  delimiter: Optional[str] = ","
1386
+ set_empty_cell_to_none: Optional[bool] = False
1386
1387
 
1387
1388
 
1388
1389
  class AsyncJobStatusMap(BaseModel):
@@ -2646,7 +2646,11 @@ class ModelToComponentFactory:
2646
2646
  elif isinstance(model, JsonlDecoderModel):
2647
2647
  return JsonLineParser()
2648
2648
  elif isinstance(model, CsvDecoderModel):
2649
- return CsvParser(encoding=model.encoding, delimiter=model.delimiter)
2649
+ return CsvParser(
2650
+ encoding=model.encoding,
2651
+ delimiter=model.delimiter,
2652
+ set_empty_cell_to_none=model.set_empty_cell_to_none,
2653
+ )
2650
2654
  elif isinstance(model, GzipDecoderModel):
2651
2655
  return GzipParser(
2652
2656
  inner_parser=ModelToComponentFactory._get_parser(model.decoder, config)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.53.0
3
+ Version: 6.53.0.post2.dev15405329474
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -89,11 +89,11 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=OKor1mDD
89
89
  airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
90
90
  airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
91
91
  airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
92
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=BQ0JKz4K8BKCpKp3C2IumJj2y2nv29lheeJUxPX6gXU,177389
92
+ airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=sFHlde6dHSjs2q7lRF6Tv2_9tR2bsVzrjxAIQqi0lNg,177464
93
93
  airbyte_cdk/sources/declarative/declarative_source.py,sha256=qmyMnnet92eGc3C22yBtpvD5UZjqdhsAafP_zxI5wp8,1814
94
94
  airbyte_cdk/sources/declarative/declarative_stream.py,sha256=dCRlddBUSaJmBNBz1pSO1r2rTw8AP5d2_vlmIeGs2gg,10767
95
95
  airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
96
- airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py,sha256=Jd7URkDQBoHSDQHQuYUqzeex1HYfLRtGcY_-dVW33pA,7884
96
+ airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py,sha256=71_84brT5nSQs-h2QnFfcz66ecgVnXsvTo1AHI-wEtc,8055
97
97
  airbyte_cdk/sources/declarative/decoders/decoder.py,sha256=1PeKwuMK8x9dsA2zqUjSVinEWVSEgYcUS6npiW3aC2c,855
98
98
  airbyte_cdk/sources/declarative/decoders/decoder_parser.py,sha256=e0be6kfzvbnhmcou-AuloFTSoLxiV9sG9YaglWo5mto,714
99
99
  airbyte_cdk/sources/declarative/decoders/json_decoder.py,sha256=BdWpXXPhEGf_zknggJmhojLosmxuw51RBVTS0jvdCPc,2080
@@ -133,14 +133,14 @@ airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migrati
133
133
  airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
134
134
  airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
135
135
  airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=Imnj3yef0aqRdLfaUxkIYISUb8YkiPrRH_wBd-x8HjM,5999
136
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=XVfBPgNBEEkv8u6Bj1JRiXsQWa_QoipPHFxND_YsxDY,125766
136
+ airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=36uZnvm9la9gEr4FqkjxA_l1-3TiApCWLfPApP9vBcw,125817
137
137
  airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
138
138
  airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
139
139
  airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=wnRUP0Xeru9Rbu5OexXSDN9QWDo8YU4tT9M2LDVOgGA,802
140
140
  airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=2UdpCz3yi7ISZTyqkQXSSy3dMxeyOWqV7OlAS5b9GVg,11568
141
141
  airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py,sha256=laBy7ebjA-PiNwc-50U4FHvMqS_mmHvnabxgFs4CjGw,17069
142
142
  airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=pJmg78vqE5VfUrF_KJnWjucQ4k9IWFULeAxHCowrHXE,6806
143
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=7-q8icBPnEHbPa0vonz5KjsalYrrqJasIcLXK1TITlc,174730
143
+ airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=9BhRsOhCk3FxkqOlNDNhJIDeLKr3BP_nJZAV9sTXekU,174846
144
144
  airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=TBC9AkGaUqHm2IKHMPN6punBIcY5tWGULowcLoAVkfw,1109
145
145
  airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
146
146
  airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
@@ -419,9 +419,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
419
419
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
420
420
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
421
421
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
422
- airbyte_cdk-6.53.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
423
- airbyte_cdk-6.53.0.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
424
- airbyte_cdk-6.53.0.dist-info/METADATA,sha256=rfeVeqi8KTOWoTgCwUPYh3k8LhgvERDAqyAdw8IPYX0,6343
425
- airbyte_cdk-6.53.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
426
- airbyte_cdk-6.53.0.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
427
- airbyte_cdk-6.53.0.dist-info/RECORD,,
422
+ airbyte_cdk-6.53.0.post2.dev15405329474.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
423
+ airbyte_cdk-6.53.0.post2.dev15405329474.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
424
+ airbyte_cdk-6.53.0.post2.dev15405329474.dist-info/METADATA,sha256=t1npAyfmm609rLEMi0ic_4o1FXCo5D4Zh4BiiO92qB4,6364
425
+ airbyte_cdk-6.53.0.post2.dev15405329474.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
426
+ airbyte_cdk-6.53.0.post2.dev15405329474.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
427
+ airbyte_cdk-6.53.0.post2.dev15405329474.dist-info/RECORD,,