hubmap-search-sdk 1.0.0a3__tar.gz → 1.0.0a5__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 (96) hide show
  1. hubmap_search_sdk-1.0.0a5/.release-please-manifest.json +3 -0
  2. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/CHANGELOG.md +24 -0
  3. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/PKG-INFO +1 -1
  4. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/pyproject.toml +2 -1
  5. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_base_client.py +10 -1
  6. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_transform.py +24 -1
  7. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_typing.py +2 -0
  8. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_version.py +1 -1
  9. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_transform.py +8 -1
  10. hubmap_search_sdk-1.0.0a3/.release-please-manifest.json +0 -3
  11. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/.gitignore +0 -0
  12. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/CONTRIBUTING.md +0 -0
  13. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/LICENSE +0 -0
  14. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/README.md +0 -0
  15. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/SECURITY.md +0 -0
  16. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/api.md +0 -0
  17. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/bin/check-release-environment +0 -0
  18. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/bin/publish-pypi +0 -0
  19. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/examples/.keep +0 -0
  20. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/mypy.ini +0 -0
  21. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/noxfile.py +0 -0
  22. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/release-please-config.json +0 -0
  23. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/requirements-dev.lock +0 -0
  24. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/requirements.lock +0 -0
  25. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/__init__.py +0 -0
  26. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_client.py +0 -0
  27. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_compat.py +0 -0
  28. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_constants.py +0 -0
  29. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_exceptions.py +0 -0
  30. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_files.py +0 -0
  31. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_models.py +0 -0
  32. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_qs.py +0 -0
  33. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_resource.py +0 -0
  34. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_response.py +0 -0
  35. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_streaming.py +0 -0
  36. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_types.py +0 -0
  37. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/__init__.py +0 -0
  38. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_logs.py +0 -0
  39. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_proxy.py +0 -0
  40. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_reflection.py +0 -0
  41. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_streams.py +0 -0
  42. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_sync.py +0 -0
  43. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/_utils/_utils.py +0 -0
  44. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/lib/.keep +0 -0
  45. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/py.typed +0 -0
  46. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/__init__.py +0 -0
  47. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/add.py +0 -0
  48. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/clear_docs.py +0 -0
  49. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/indices.py +0 -0
  50. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/mapping.py +0 -0
  51. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/mget.py +0 -0
  52. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/param_search.py +0 -0
  53. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/reindex.py +0 -0
  54. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/scroll_search.py +0 -0
  55. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/search.py +0 -0
  56. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/resources/update.py +0 -0
  57. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/__init__.py +0 -0
  58. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/add_create_document_params.py +0 -0
  59. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/add_create_document_with_index_params.py +0 -0
  60. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/add_update_document_with_scope_params.py +0 -0
  61. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/index_list_response.py +0 -0
  62. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/mget_retrieve_multiple_by_index_params.py +0 -0
  63. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/mget_retrieve_multiple_params.py +0 -0
  64. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/param_search_execute_params.py +0 -0
  65. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/scroll_search_create_params.py +0 -0
  66. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/search_execute_index_query_params.py +0 -0
  67. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/search_execute_query_params.py +0 -0
  68. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/update_update_document_at_index_params.py +0 -0
  69. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/update_update_document_params.py +0 -0
  70. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/src/hubmap_search_sdk/types/update_update_document_with_scope_params.py +0 -0
  71. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/__init__.py +0 -0
  72. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/__init__.py +0 -0
  73. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_add.py +0 -0
  74. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_clear_docs.py +0 -0
  75. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_indices.py +0 -0
  76. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_mapping.py +0 -0
  77. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_mget.py +0 -0
  78. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_param_search.py +0 -0
  79. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_reindex.py +0 -0
  80. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_scroll_search.py +0 -0
  81. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_search.py +0 -0
  82. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/api_resources/test_update.py +0 -0
  83. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/conftest.py +0 -0
  84. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/sample_file.txt +0 -0
  85. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_client.py +0 -0
  86. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_deepcopy.py +0 -0
  87. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_extract_files.py +0 -0
  88. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_files.py +0 -0
  89. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_models.py +0 -0
  90. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_qs.py +0 -0
  91. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_required_args.py +0 -0
  92. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_response.py +0 -0
  93. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_streaming.py +0 -0
  94. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_utils/test_proxy.py +0 -0
  95. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/test_utils/test_typing.py +0 -0
  96. {hubmap_search_sdk-1.0.0a3 → hubmap_search_sdk-1.0.0a5}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.0.0-alpha.5"
3
+ }
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.0-alpha.5 (2025-04-15)
4
+
5
+ Full Changelog: [v1.0.0-alpha.4...v1.0.0-alpha.5](https://github.com/hubmapconsortium/search-python-sdk/compare/v1.0.0-alpha.4...v1.0.0-alpha.5)
6
+
7
+ ### Chores
8
+
9
+ * **client:** minor internal fixes ([ca092e8](https://github.com/hubmapconsortium/search-python-sdk/commit/ca092e8c959251d34a05301386bb1b9c199b4c04))
10
+ * **internal:** update pyright settings ([d4ae4c0](https://github.com/hubmapconsortium/search-python-sdk/commit/d4ae4c0a49aa4c028e3115a159f4ffccd73a8156))
11
+
12
+ ## 1.0.0-alpha.4 (2025-04-12)
13
+
14
+ Full Changelog: [v1.0.0-alpha.3...v1.0.0-alpha.4](https://github.com/hubmapconsortium/search-python-sdk/compare/v1.0.0-alpha.3...v1.0.0-alpha.4)
15
+
16
+ ### Bug Fixes
17
+
18
+ * **perf:** optimize some hot paths ([5212433](https://github.com/hubmapconsortium/search-python-sdk/commit/5212433093ec3d9cce2270a07d825a88c852bded))
19
+ * **perf:** skip traversing types for NotGiven values ([383d6b2](https://github.com/hubmapconsortium/search-python-sdk/commit/383d6b222bfa396b9b083027178c27c1fb057df6))
20
+
21
+
22
+ ### Chores
23
+
24
+ * **internal:** expand CI branch coverage ([5cb57ca](https://github.com/hubmapconsortium/search-python-sdk/commit/5cb57ca2e66a71d85e638df9c377b2305a136c66))
25
+ * **internal:** reduce CI branch coverage ([3d69904](https://github.com/hubmapconsortium/search-python-sdk/commit/3d699046bc26aa7bebf84061cf0d34aee6e944c5))
26
+
3
27
  ## 1.0.0-alpha.3 (2025-04-09)
4
28
 
5
29
  Full Changelog: [v1.0.0-alpha.2...v1.0.0-alpha.3](https://github.com/hubmapconsortium/search-python-sdk/compare/v1.0.0-alpha.2...v1.0.0-alpha.3)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: hubmap_search_sdk
3
- Version: 1.0.0a3
3
+ Version: 1.0.0a5
4
4
  Summary: The official Python library for the hubmap-search-sdk API
5
5
  Project-URL: Homepage, https://github.com/hubmapconsortium/search-python-sdk
6
6
  Project-URL: Repository, https://github.com/hubmapconsortium/search-python-sdk
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "hubmap_search_sdk"
3
- version = "1.0.0-alpha.3"
3
+ version = "1.0.0-alpha.5"
4
4
  description = "The official Python library for the hubmap-search-sdk API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -147,6 +147,7 @@ exclude = [
147
147
  ]
148
148
 
149
149
  reportImplicitOverride = true
150
+ reportOverlappingOverload = false
150
151
 
151
152
  reportImportCycles = false
152
153
  reportPrivateUsage = false
@@ -409,7 +409,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
409
409
 
410
410
  idempotency_header = self._idempotency_header
411
411
  if idempotency_header and options.method.lower() != "get" and idempotency_header not in headers:
412
- headers[idempotency_header] = options.idempotency_key or self._idempotency_key()
412
+ options.idempotency_key = options.idempotency_key or self._idempotency_key()
413
+ headers[idempotency_header] = options.idempotency_key
413
414
 
414
415
  # Don't set these headers if they were already set or removed by the caller. We check
415
416
  # `custom_headers`, which can contain `Omit()`, instead of `headers` to account for the removal case.
@@ -946,6 +947,10 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
946
947
  request = self._build_request(options, retries_taken=retries_taken)
947
948
  self._prepare_request(request)
948
949
 
950
+ if options.idempotency_key:
951
+ # ensure the idempotency key is reused between requests
952
+ input_options.idempotency_key = options.idempotency_key
953
+
949
954
  kwargs: HttpxSendArgs = {}
950
955
  if self.custom_auth is not None:
951
956
  kwargs["auth"] = self.custom_auth
@@ -1487,6 +1492,10 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1487
1492
  request = self._build_request(options, retries_taken=retries_taken)
1488
1493
  await self._prepare_request(request)
1489
1494
 
1495
+ if options.idempotency_key:
1496
+ # ensure the idempotency key is reused between requests
1497
+ input_options.idempotency_key = options.idempotency_key
1498
+
1490
1499
  kwargs: HttpxSendArgs = {}
1491
1500
  if self.custom_auth is not None:
1492
1501
  kwargs["auth"] = self.custom_auth
@@ -5,13 +5,15 @@ import base64
5
5
  import pathlib
6
6
  from typing import Any, Mapping, TypeVar, cast
7
7
  from datetime import date, datetime
8
- from typing_extensions import Literal, get_args, override, get_type_hints
8
+ from typing_extensions import Literal, get_args, override, get_type_hints as _get_type_hints
9
9
 
10
10
  import anyio
11
11
  import pydantic
12
12
 
13
13
  from ._utils import (
14
14
  is_list,
15
+ is_given,
16
+ lru_cache,
15
17
  is_mapping,
16
18
  is_iterable,
17
19
  )
@@ -108,6 +110,7 @@ def transform(
108
110
  return cast(_T, transformed)
109
111
 
110
112
 
113
+ @lru_cache(maxsize=8096)
111
114
  def _get_annotated_type(type_: type) -> type | None:
112
115
  """If the given type is an `Annotated` type then it is returned, if not `None` is returned.
113
116
 
@@ -258,6 +261,11 @@ def _transform_typeddict(
258
261
  result: dict[str, object] = {}
259
262
  annotations = get_type_hints(expected_type, include_extras=True)
260
263
  for key, value in data.items():
264
+ if not is_given(value):
265
+ # we don't need to include `NotGiven` values here as they'll
266
+ # be stripped out before the request is sent anyway
267
+ continue
268
+
261
269
  type_ = annotations.get(key)
262
270
  if type_ is None:
263
271
  # we do not have a type annotation for this field, leave it as is
@@ -415,6 +423,11 @@ async def _async_transform_typeddict(
415
423
  result: dict[str, object] = {}
416
424
  annotations = get_type_hints(expected_type, include_extras=True)
417
425
  for key, value in data.items():
426
+ if not is_given(value):
427
+ # we don't need to include `NotGiven` values here as they'll
428
+ # be stripped out before the request is sent anyway
429
+ continue
430
+
418
431
  type_ = annotations.get(key)
419
432
  if type_ is None:
420
433
  # we do not have a type annotation for this field, leave it as is
@@ -422,3 +435,13 @@ async def _async_transform_typeddict(
422
435
  else:
423
436
  result[_maybe_transform_key(key, type_)] = await _async_transform_recursive(value, annotation=type_)
424
437
  return result
438
+
439
+
440
+ @lru_cache(maxsize=8096)
441
+ def get_type_hints(
442
+ obj: Any,
443
+ globalns: dict[str, Any] | None = None,
444
+ localns: Mapping[str, Any] | None = None,
445
+ include_extras: bool = False,
446
+ ) -> dict[str, Any]:
447
+ return _get_type_hints(obj, globalns=globalns, localns=localns, include_extras=include_extras)
@@ -13,6 +13,7 @@ from typing_extensions import (
13
13
  get_origin,
14
14
  )
15
15
 
16
+ from ._utils import lru_cache
16
17
  from .._types import InheritsGeneric
17
18
  from .._compat import is_union as _is_union
18
19
 
@@ -66,6 +67,7 @@ def is_type_alias_type(tp: Any, /) -> TypeIs[typing_extensions.TypeAliasType]:
66
67
 
67
68
 
68
69
  # Extracts T from Annotated[T, ...] or from Required[Annotated[T, ...]]
70
+ @lru_cache(maxsize=8096)
69
71
  def strip_annotated_type(typ: type) -> type:
70
72
  if is_required_type(typ) or is_annotated_type(typ):
71
73
  return strip_annotated_type(cast(type, get_args(typ)[0]))
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "hubmap_search_sdk"
4
- __version__ = "1.0.0-alpha.3" # x-release-please-version
4
+ __version__ = "1.0.0-alpha.5" # x-release-please-version
@@ -8,7 +8,7 @@ from typing_extensions import Required, Annotated, TypedDict
8
8
 
9
9
  import pytest
10
10
 
11
- from hubmap_search_sdk._types import Base64FileInput
11
+ from hubmap_search_sdk._types import NOT_GIVEN, Base64FileInput
12
12
  from hubmap_search_sdk._utils import (
13
13
  PropertyInfo,
14
14
  transform as _transform,
@@ -444,3 +444,10 @@ async def test_transform_skipping(use_async: bool) -> None:
444
444
  # iterables of ints are converted to a list
445
445
  data = iter([1, 2, 3])
446
446
  assert await transform(data, Iterable[int], use_async) == [1, 2, 3]
447
+
448
+
449
+ @parametrize
450
+ @pytest.mark.asyncio
451
+ async def test_strips_notgiven(use_async: bool) -> None:
452
+ assert await transform({"foo_bar": "bar"}, Foo1, use_async) == {"fooBar": "bar"}
453
+ assert await transform({"foo_bar": NOT_GIVEN}, Foo1, use_async) == {}
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.0.0-alpha.3"
3
- }