airbyte-cdk 6.54.0__py3-none-any.whl → 6.54.1__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.
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +3 -0
- airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +3 -0
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +1 -0
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +5 -1
- {airbyte_cdk-6.54.0.dist-info → airbyte_cdk-6.54.1.dist-info}/METADATA +1 -1
- {airbyte_cdk-6.54.0.dist-info → airbyte_cdk-6.54.1.dist-info}/RECORD +10 -10
- {airbyte_cdk-6.54.0.dist-info → airbyte_cdk-6.54.1.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.54.0.dist-info → airbyte_cdk-6.54.1.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.54.0.dist-info → airbyte_cdk-6.54.1.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.54.0.dist-info → airbyte_cdk-6.54.1.dist-info}/entry_points.txt +0 -0
@@ -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
|
|
@@ -2648,7 +2648,11 @@ class ModelToComponentFactory:
|
|
2648
2648
|
elif isinstance(model, JsonlDecoderModel):
|
2649
2649
|
return JsonLineParser()
|
2650
2650
|
elif isinstance(model, CsvDecoderModel):
|
2651
|
-
return CsvParser(
|
2651
|
+
return CsvParser(
|
2652
|
+
encoding=model.encoding,
|
2653
|
+
delimiter=model.delimiter,
|
2654
|
+
set_empty_cell_to_none=model.set_empty_cell_to_none,
|
2655
|
+
)
|
2652
2656
|
elif isinstance(model, GzipDecoderModel):
|
2653
2657
|
return GzipParser(
|
2654
2658
|
inner_parser=ModelToComponentFactory._get_parser(model.decoder, config)
|
@@ -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=
|
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=
|
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=
|
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=
|
143
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=B7HVR8EtcDvhWgB3MH_rHGh_tAlLHY-ZUqXh0lWMrZc,175090
|
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
|
@@ -420,9 +420,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
420
420
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
421
421
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
422
422
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
423
|
-
airbyte_cdk-6.54.
|
424
|
-
airbyte_cdk-6.54.
|
425
|
-
airbyte_cdk-6.54.
|
426
|
-
airbyte_cdk-6.54.
|
427
|
-
airbyte_cdk-6.54.
|
428
|
-
airbyte_cdk-6.54.
|
423
|
+
airbyte_cdk-6.54.1.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
424
|
+
airbyte_cdk-6.54.1.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
425
|
+
airbyte_cdk-6.54.1.dist-info/METADATA,sha256=2oOgJRmQYFL6bH7n3HKMmQXsFGygqJkOfWxkV4Gdi2Q,6343
|
426
|
+
airbyte_cdk-6.54.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
427
|
+
airbyte_cdk-6.54.1.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
|
428
|
+
airbyte_cdk-6.54.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|