SneaksAndData / adapta

Logging, data connectors, monitoring, secret handling and general lifehacks to make data people lives easier.
Apache License 2.0
8 stars 1 forks source link

Introduce support for reading single files in LocalStorageClient #476

Closed lucasgml closed 2 weeks ago

lucasgml commented 2 weeks ago

The method read_blobs() from LocalStorageclient returned an error if blob_path pointed to an file. This PR aims to add support for reading single files without changing current support for reading directories.

Also including support for filter_predicate in both read_blobs() and list_blobs() for LocalStorageClient()

github-actions[bot] commented 2 weeks ago

Coverage

Coverage Report
FileStmtsMissCoverMissing
adapta/connectors/service_bus
   __init__.py110%18
   _connector.py17170%19–61
adapta/logs
   _async_logger.py81396%55, 78–79
   _base.py55689%35, 41, 44, 94–97
   _internal_logger.py109694%276–286
adapta/logs/handlers
   datadog_api_handler.py1093172%89, 106–113, 124, 136–152, 161–195, 204, 210, 238
adapta/metrics/providers
   datadog_provider.py43430%19–147
adapta/ml
   __init__.py110%19
   _model.py10100%17–42
adapta/ml/mlflow
   __init__.py220%17–18
   _client.py42420%19–142
   _functions.py42420%17–111
adapta/process_communication
   _models.py33682%90–96
adapta/security/clients
   __init__.py261254%27–28, 34–35, 41–42, 48–49, 53–54, 58–59
   _azure_client.py735032%42, 55–65, 75–78, 81, 84–86, 95–153, 156, 159–197
adapta/security/clients/aws
   _aws_client.py381755%37–40, 47, 57, 63, 75, 100–108, 114–117
   _aws_credentials.py733059%60–79, 83, 87, 91, 95, 99, 108–112, 116, 120, 124, 128, 132
adapta/security/clients/hashicorp_vault
   hashicorp_vault_client.py31487%46, 87, 91, 95
   kubernetes_client.py21576%45–48, 67–68
   oidc_client.py452056%33–62, 80–83, 92
   token_client.py17759%42–45, 52–53, 56, 59
adapta/storage/blob
   azure_storage_client.py1185058%71–78, 88, 95–96, 99–105, 127–128, 131–156, 159, 175–188, 196–200, 219, 240–242, 251, 267–271, 281–283, 286–305, 312
   local_storage_client.py54787%42, 67, 74, 87, 101, 104, 107
   s3_storage_client.py1177734%57, 61, 68–80, 91–96, 117–125, 133–134, 148–165, 181–185, 203–212, 222–243, 254–275
adapta/storage/cache
   redis_cache.py37370%19–107
adapta/storage/database/v2
   azure_sql.py34340%21–140
   odbc.py73730%21–219
   snowflake_sql.py69690%6–228
   trino_sql.py39390%21–127
adapta/storage/database/v2/models
   __init__.py110%19
   _models.py11110%20–54
adapta/storage/database/v3
   azure_sql.py322038%55, 70, 84–122, 132
   odbc.py721185%94–104, 114, 125–126, 140, 149–155, 182
   snowflake_sql.py772370%64–78, 93–95, 106–115, 142, 178, 193–196
   trino_sql.py38380%20–119
adapta/storage/delta_lake/v2
   _functions.py684534%73–106, 153–168, 210–294
adapta/storage/delta_lake/v3
   _functions.py661282%72, 156, 161, 163, 165, 221, 231, 241–251, 257, 292
adapta/storage/distributed_object_store/v2/datastax_astra
   _models.py19953%54–59, 62, 65, 68
   astra_client.py19614029%40–43, 113–137, 143–184, 190–191, 197–198, 201, 211, 223–224, 233, 273–361, 369, 393–520, 530, 541–556, 579–594, 616–632, 656–673
adapta/storage/distributed_object_store/v3/datastax_astra
   _model_mappers.py1592286%64, 130, 136, 138, 142, 148, 152–153, 171–174, 205, 262–272, 357, 398–410, 442
   _models.py19953%53–58, 61, 64, 67
   astra_client.py1396851%35–38, 133–174, 180–181, 187–188, 191, 201, 213–214, 223, 267–353, 361, 373, 384–403, 424–440, 462–482, 506–517
adapta/storage/models
   astra.py351071%37, 40, 44, 59–61, 64, 70–73
   aws.py361169%36–39, 46–49, 57–59, 82, 91
   azure.py601772%32, 36–40, 47, 67, 70–71, 74–75, 89–93, 100, 113, 120, 123–124, 127
   filter_expression.py125596%55, 183–184, 238, 329
   hive.py572556%36, 40, 43, 91–98, 110, 113–114, 123–163, 166
   local.py21481%31, 35, 38, 50
adapta/storage/query_enabled_store
   _models.py611084%76, 138–141, 147–150, 156–157, 163
   _qes_astra.py571377%65–66, 78, 83–96, 106–109
   _qes_delta.py39490%33, 60, 72, 80
adapta/storage/secrets
   azure_secret_client.py20200%19–66
adapta/utils
   _common.py951584%36–37, 70–83, 94, 122, 142, 162, 245
   concurrent_task_runner.py27196%109
adapta/utils/data_structures
   _functions.py34197%134
adapta/utils/decorators
   _logging.py41198%32
   _rate_limit.py25196%58
adapta/utils/python_typing
   _functions.py11373%7–9, 22
tests
   test_filtering_api.py32294%197–198
   test_python_typing_functions.py11282%38–39
   test_utils.py166199%371
   test_vault_client.py801878%33–35, 40–42, 47–51, 56–57, 62–66
TOTAL4485131471% 

Tests Skipped Failures Errors Time
207 6 :zzz: 0 :x: 0 :fire: 1m 3s :stopwatch:
github-actions[bot] commented 2 weeks ago

Coverage

Coverage Report
FileStmtsMissCoverMissing
adapta/connectors/service_bus
   __init__.py110%18
   _connector.py17170%19–61
adapta/logs
   _async_logger.py81396%55, 78–79
   _base.py55689%35, 41, 44, 94–97
   _internal_logger.py109694%276–286
adapta/logs/handlers
   datadog_api_handler.py1093172%89, 106–113, 124, 136–152, 161–195, 204, 210, 238
adapta/metrics/providers
   datadog_provider.py43430%19–147
adapta/ml
   __init__.py110%19
   _model.py10100%17–42
adapta/ml/mlflow
   __init__.py220%17–18
   _client.py42420%19–142
   _functions.py42420%17–111
adapta/process_communication
   _models.py33682%90–96
adapta/security/clients
   __init__.py261254%27–28, 34–35, 41–42, 48–49, 53–54, 58–59
   _azure_client.py735032%42, 55–65, 75–78, 81, 84–86, 95–153, 156, 159–197
adapta/security/clients/aws
   _aws_client.py381755%37–40, 47, 57, 63, 75, 100–108, 114–117
   _aws_credentials.py733059%60–79, 83, 87, 91, 95, 99, 108–112, 116, 120, 124, 128, 132
adapta/security/clients/hashicorp_vault
   hashicorp_vault_client.py31487%46, 87, 91, 95
   kubernetes_client.py21576%45–48, 67–68
   oidc_client.py452056%33–62, 80–83, 92
   token_client.py17759%42–45, 52–53, 56, 59
adapta/storage/blob
   azure_storage_client.py1195157%71–78, 88, 95–96, 99–105, 127–128, 131–156, 159, 175–188, 196–200, 219, 240–242, 251, 267–271, 281–283, 286–305, 312
   local_storage_client.py54787%42, 67, 74, 87, 101, 104, 107
   s3_storage_client.py1177734%57, 61, 68–80, 91–96, 117–125, 133–134, 148–165, 181–185, 203–212, 222–243, 254–275
adapta/storage/cache
   redis_cache.py37370%19–107
adapta/storage/database/v2
   azure_sql.py34340%21–140
   odbc.py73730%21–219
   snowflake_sql.py69690%6–228
   trino_sql.py39390%21–127
adapta/storage/database/v2/models
   __init__.py110%19
   _models.py11110%20–54
adapta/storage/database/v3
   azure_sql.py322038%55, 70, 84–122, 132
   odbc.py721185%94–104, 114, 125–126, 140, 149–155, 182
   snowflake_sql.py772370%64–78, 93–95, 106–115, 142, 178, 193–196
   trino_sql.py38380%20–119
adapta/storage/delta_lake/v2
   _functions.py684534%73–106, 153–168, 210–294
adapta/storage/delta_lake/v3
   _functions.py661282%72, 156, 161, 163, 165, 221, 231, 241–251, 257, 292
adapta/storage/distributed_object_store/v2/datastax_astra
   _models.py19953%54–59, 62, 65, 68
   astra_client.py19614029%40–43, 113–137, 143–184, 190–191, 197–198, 201, 211, 223–224, 233, 273–361, 369, 393–520, 530, 541–556, 579–594, 616–632, 656–673
adapta/storage/distributed_object_store/v3/datastax_astra
   _model_mappers.py1592286%64, 130, 136, 138, 142, 148, 152–153, 171–174, 205, 262–272, 357, 398–410, 442
   _models.py19953%53–58, 61, 64, 67
   astra_client.py1396851%35–38, 133–174, 180–181, 187–188, 191, 201, 213–214, 223, 267–353, 361, 373, 384–403, 424–440, 462–482, 506–517
adapta/storage/models
   astra.py351071%37, 40, 44, 59–61, 64, 70–73
   aws.py361169%36–39, 46–49, 57–59, 82, 91
   azure.py601772%32, 36–40, 47, 67, 70–71, 74–75, 89–93, 100, 113, 120, 123–124, 127
   filter_expression.py125596%55, 183–184, 238, 329
   hive.py572556%36, 40, 43, 91–98, 110, 113–114, 123–163, 166
   local.py21481%31, 35, 38, 50
adapta/storage/query_enabled_store
   _models.py611084%76, 138–141, 147–150, 156–157, 163
   _qes_astra.py571377%65–66, 78, 83–96, 106–109
   _qes_delta.py39490%33, 60, 72, 80
adapta/storage/secrets
   azure_secret_client.py20200%19–66
adapta/utils
   _common.py951584%36–37, 70–83, 94, 122, 142, 162, 245
   concurrent_task_runner.py27196%109
adapta/utils/data_structures
   _functions.py34197%134
adapta/utils/decorators
   _logging.py41198%32
   _rate_limit.py25196%58
adapta/utils/python_typing
   _functions.py11191%24
tests
   test_filtering_api.py32294%197–198
   test_utils.py166199%371
   test_vault_client.py801878%33–35, 40–42, 47–51, 56–57, 62–66
TOTAL4487131171% 

Tests Skipped Failures Errors Time
207 5 :zzz: 0 :x: 0 :fire: 1m 2s :stopwatch: