adapta 4.0.0__tar.gz → 4.0.2__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 (152) hide show
  1. {adapta-4.0.0 → adapta-4.0.2}/PKG-INFO +1 -1
  2. adapta-4.0.2/adapta/_version.py +1 -0
  3. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/validation/validation_abstract.py +2 -0
  4. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/validation/validation_polars.py +2 -0
  5. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/iceberg/v1/_functions.py +18 -14
  6. {adapta-4.0.0 → adapta-4.0.2}/pyproject.toml +1 -1
  7. adapta-4.0.0/adapta/_version.py +0 -1
  8. {adapta-4.0.0 → adapta-4.0.2}/LICENSE +0 -0
  9. {adapta-4.0.0 → adapta-4.0.2}/README.md +0 -0
  10. {adapta-4.0.0 → adapta-4.0.2}/adapta/__init__.py +0 -0
  11. {adapta-4.0.0 → adapta-4.0.2}/adapta/connectors/__init__.py +0 -0
  12. {adapta-4.0.0 → adapta-4.0.2}/adapta/connectors/service_bus/__init__.py +0 -0
  13. {adapta-4.0.0 → adapta-4.0.2}/adapta/connectors/service_bus/_connector.py +0 -0
  14. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/README.md +0 -0
  15. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/__init__.py +0 -0
  16. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/dataclass/__init__.py +0 -0
  17. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/dataclass/dataclass_abstract.py +0 -0
  18. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/dataclass/dataclass_core.py +0 -0
  19. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/validation/__init__.py +0 -0
  20. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/validation/validation.py +0 -0
  21. {adapta-4.0.0 → adapta-4.0.2}/adapta/dataclass_validation/validation/validation_utils.py +0 -0
  22. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/README.md +0 -0
  23. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/__init__.py +0 -0
  24. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/_async_logger.py +0 -0
  25. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/_base.py +0 -0
  26. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/_internal.py +0 -0
  27. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/_internal_logger.py +0 -0
  28. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/_logger_interface.py +0 -0
  29. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/handlers/__init__.py +0 -0
  30. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/handlers/datadog_api_handler.py +0 -0
  31. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/handlers/safe_stream_handler.py +0 -0
  32. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/models/__init__.py +0 -0
  33. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/models/_log_level.py +0 -0
  34. {adapta-4.0.0 → adapta-4.0.2}/adapta/logs/models/_logs_metadata.py +0 -0
  35. {adapta-4.0.0 → adapta-4.0.2}/adapta/metrics/__init__.py +0 -0
  36. {adapta-4.0.0 → adapta-4.0.2}/adapta/metrics/_base.py +0 -0
  37. {adapta-4.0.0 → adapta-4.0.2}/adapta/metrics/providers/README.md +0 -0
  38. {adapta-4.0.0 → adapta-4.0.2}/adapta/metrics/providers/__init__.py +0 -0
  39. {adapta-4.0.0 → adapta-4.0.2}/adapta/metrics/providers/datadog_provider.py +0 -0
  40. {adapta-4.0.0 → adapta-4.0.2}/adapta/metrics/providers/void_provider.py +0 -0
  41. {adapta-4.0.0 → adapta-4.0.2}/adapta/ml/__init__.py +0 -0
  42. {adapta-4.0.0 → adapta-4.0.2}/adapta/ml/_model.py +0 -0
  43. {adapta-4.0.0 → adapta-4.0.2}/adapta/ml/mlflow/__init__.py +0 -0
  44. {adapta-4.0.0 → adapta-4.0.2}/adapta/ml/mlflow/_client.py +0 -0
  45. {adapta-4.0.0 → adapta-4.0.2}/adapta/ml/mlflow/_functions.py +0 -0
  46. {adapta-4.0.0 → adapta-4.0.2}/adapta/process_communication/__init__.py +0 -0
  47. {adapta-4.0.0 → adapta-4.0.2}/adapta/process_communication/_models.py +0 -0
  48. {adapta-4.0.0 → adapta-4.0.2}/adapta/schema_management/README.md +0 -0
  49. {adapta-4.0.0 → adapta-4.0.2}/adapta/schema_management/__init__.py +0 -0
  50. {adapta-4.0.0 → adapta-4.0.2}/adapta/schema_management/schema_entity.py +0 -0
  51. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/__init__.py +0 -0
  52. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/README.md +0 -0
  53. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/__init__.py +0 -0
  54. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/_azure_client.py +0 -0
  55. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/_base.py +0 -0
  56. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/_local_client.py +0 -0
  57. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/aws/__init__.py +0 -0
  58. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/aws/_aws_client.py +0 -0
  59. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/aws/_aws_credentials.py +0 -0
  60. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/hashicorp_vault/__init__.py +0 -0
  61. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/hashicorp_vault/hashicorp_vault_client.py +0 -0
  62. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/hashicorp_vault/kubernetes_client.py +0 -0
  63. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/hashicorp_vault/oidc_client.py +0 -0
  64. {adapta-4.0.0 → adapta-4.0.2}/adapta/security/clients/hashicorp_vault/token_client.py +0 -0
  65. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/__init__.py +0 -0
  66. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/blob/README.md +0 -0
  67. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/blob/__init__.py +0 -0
  68. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/blob/azure_storage_client.py +0 -0
  69. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/blob/base.py +0 -0
  70. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/blob/local_storage_client.py +0 -0
  71. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/blob/s3_storage_client.py +0 -0
  72. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/cache/__init__.py +0 -0
  73. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/cache/_base.py +0 -0
  74. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/cache/redis_cache.py +0 -0
  75. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/__init__.py +0 -0
  76. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/README.md +0 -0
  77. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/__init__.py +0 -0
  78. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/azure_sql.py +0 -0
  79. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/models/__init__.py +0 -0
  80. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/models/_models.py +0 -0
  81. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/odbc.py +0 -0
  82. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/snowflake_sql.py +0 -0
  83. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/database/v3/trino_sql.py +0 -0
  84. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/delta_lake/__init__.py +0 -0
  85. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/delta_lake/v3/README.md +0 -0
  86. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/delta_lake/v3/__init__.py +0 -0
  87. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/delta_lake/v3/_functions.py +0 -0
  88. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/delta_lake/v3/_models.py +0 -0
  89. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/__init__.py +0 -0
  90. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/v3/__init__.py +0 -0
  91. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/v3/datastax_astra/README.md +0 -0
  92. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/v3/datastax_astra/__init__.py +0 -0
  93. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/v3/datastax_astra/_model_mappers.py +0 -0
  94. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/v3/datastax_astra/_models.py +0 -0
  95. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/distributed_object_store/v3/datastax_astra/astra_client.py +0 -0
  96. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/exceptions.py +0 -0
  97. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/iceberg/__init__.py +0 -0
  98. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/iceberg/v1/__init__.py +0 -0
  99. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/iceberg/v1/_models.py +0 -0
  100. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/__init__.py +0 -0
  101. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/_functions.py +0 -0
  102. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/astra.py +0 -0
  103. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/aws.py +0 -0
  104. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/azure.py +0 -0
  105. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/base.py +0 -0
  106. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/enum.py +0 -0
  107. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/expression_dsl/__init__.py +0 -0
  108. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/expression_dsl/arrow_filter_expression.py +0 -0
  109. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/expression_dsl/astra_filter_expression.py +0 -0
  110. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/expression_dsl/filter_expression.py +0 -0
  111. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/expression_dsl/iceberg_filter_expression.py +0 -0
  112. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/expression_dsl/trino_filter_expression.py +0 -0
  113. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/format.py +0 -0
  114. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/__init__.py +0 -0
  115. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/dict.py +0 -0
  116. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/exceptions.py +0 -0
  117. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/metaframe.py +0 -0
  118. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/pandas.py +0 -0
  119. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/pickle.py +0 -0
  120. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/polars.py +0 -0
  121. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/formatters/unit.py +0 -0
  122. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/hive.py +0 -0
  123. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/iceberg.py +0 -0
  124. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/local.py +0 -0
  125. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/models/trino.py +0 -0
  126. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/README.md +0 -0
  127. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/__init__.py +0 -0
  128. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/_models.py +0 -0
  129. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/_qes_astra.py +0 -0
  130. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/_qes_delta.py +0 -0
  131. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/_qes_iceberg.py +0 -0
  132. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/_qes_local.py +0 -0
  133. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/query_enabled_store/_qes_trino.py +0 -0
  134. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/secrets/README.md +0 -0
  135. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/secrets/__init__.py +0 -0
  136. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/secrets/_base.py +0 -0
  137. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/secrets/azure_secret_client.py +0 -0
  138. {adapta-4.0.0 → adapta-4.0.2}/adapta/storage/secrets/hashicorp_vault_secret_storage_client.py +0 -0
  139. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/README.md +0 -0
  140. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/__init__.py +0 -0
  141. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/_common.py +0 -0
  142. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/_requests.py +0 -0
  143. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/concurrent_task_runner.py +0 -0
  144. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/data_structures/__init__.py +0 -0
  145. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/data_structures/_functions.py +0 -0
  146. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/decorators/__init__.py +0 -0
  147. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/decorators/_logging.py +0 -0
  148. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/decorators/_rate_limit.py +0 -0
  149. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/metaframe.py +0 -0
  150. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/polars.py +0 -0
  151. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/python_typing/__init__.py +0 -0
  152. {adapta-4.0.0 → adapta-4.0.2}/adapta/utils/python_typing/_functions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adapta
3
- Version: 4.0.0
3
+ Version: 4.0.2
4
4
  Summary: Logging, data connectors, monitoring, secret handling and general lifehacks to make data people lives easier.
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -0,0 +1 @@
1
+ __version__ = '4.0.2'
@@ -72,6 +72,8 @@ class AbstractValidationClass:
72
72
  origin_dtype = get_origin(dtype)
73
73
  if origin_dtype in self._dtype_recursive_dtypes and origin_dtype == list:
74
74
  return self._dtype_recursive_dtypes[origin_dtype](self._get_expected_dtypes(dtype=get_args(dtype)[0]))
75
+ if origin_dtype == dict:
76
+ return self._dtype_mapping[origin_dtype]
75
77
 
76
78
  raise TypeError(
77
79
  f"Unsupported data type: {dtype}. Supported types are: "
@@ -23,6 +23,7 @@ class PolarsValidationClass(AbstractValidationClass):
23
23
  bool: pl.Boolean,
24
24
  datetime.date: pl.Date,
25
25
  datetime.datetime: pl.Datetime,
26
+ dict: pl.Struct,
26
27
  }
27
28
 
28
29
  @property
@@ -39,6 +40,7 @@ class PolarsValidationClass(AbstractValidationClass):
39
40
  pl.Float32: [pl.Float64, pl.String],
40
41
  pl.Float64: [pl.String],
41
42
  pl.Boolean: [pl.Int64, pl.String],
43
+ pl.List(pl.Null): [pl.List(pl.String), pl.List(pl.Int64), pl.List(pl.Float64), pl.List(pl.Boolean)],
42
44
  }
43
45
 
44
46
  def _validate_primary_keys(self, **kwargs) -> None:
@@ -1,4 +1,5 @@
1
1
  """Iceberg reader (via REST Catalog)"""
2
+ import os
2
3
  from typing import Literal
3
4
 
4
5
  import polars
@@ -53,27 +54,30 @@ def load_using_catalog(
53
54
  if row_filter:
54
55
  row_filter_expression = compile_expression(row_filter, IcebergFilterExpression)
55
56
 
56
- if lazy_read:
57
- return MetaFrame(
58
- data=catalog.load_table(identifier=(schema, table_name))
59
- .scan(
60
- row_filter=row_filter_expression or ALWAYS_TRUE,
61
- selected_fields=columns or ("*",),
62
- limit=limit,
63
- snapshot_id=version_id,
64
- )
65
- .to_arrow_batch_reader(),
66
- convert_to_polars=lambda v: polars.scan_pyarrow_dataset(pyarrow.dataset.dataset(v)),
67
- convert_to_pandas=None,
68
- )
57
+ table = catalog.load_table(identifier=(schema, table_name))
58
+ if "ADAPTA__ICEBERG_REST_CATALOG__S3_ENDPOINT_OVERRIDE" in os.environ:
59
+ # FileIO's endpoint is taken directly from the catalog response
60
+ # In case it differs from `s3.endpoint` set in catalog config, align them
61
+ # Note that when vended credentials are used, table.config will take preference over client setting
62
+ # thus endpoint is updated after catalog returns creds
63
+ # this is necessary if your S3 service has multiple endpoints and client doesn't have access to the one used by catalog
64
+ table.io.properties["s3.endpoint"] = os.environ["ADAPTA__ICEBERG_REST_CATALOG__S3_ENDPOINT_OVERRIDE"]
65
+ table.config["s3.endpoint"] = os.environ["ADAPTA__ICEBERG_REST_CATALOG__S3_ENDPOINT_OVERRIDE"]
69
66
 
70
- scanner = catalog.load_table(identifier=(schema, table_name)).scan(
67
+ scanner = table.scan(
71
68
  row_filter=row_filter_expression or ALWAYS_TRUE,
72
69
  selected_fields=columns or ("*",),
73
70
  limit=limit,
74
71
  snapshot_id=version_id,
75
72
  )
76
73
 
74
+ if lazy_read:
75
+ return MetaFrame(
76
+ data=scanner.to_arrow_batch_reader(),
77
+ convert_to_polars=lambda v: polars.scan_pyarrow_dataset(pyarrow.dataset.dataset(v)),
78
+ convert_to_pandas=None,
79
+ )
80
+
77
81
  return MetaFrame(
78
82
  data=scanner,
79
83
  # use built-in DataScan converters
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "adapta"
3
- version = "4.0.0"
3
+ version = "4.0.2"
4
4
  description = "Logging, data connectors, monitoring, secret handling and general lifehacks to make data people lives easier."
5
5
  authors = ["ECCO Sneaks & Data <esdsupport@ecco.com>"]
6
6
  maintainers = ['GZU <gzu@ecco.com>', 'JRB <ext-jrb@ecco.com>']
@@ -1 +0,0 @@
1
- __version__ = '4.0.0'
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