18
18
import contextlib
19
19
import enum
20
20
import socket
21
+ import uuid
21
22
import weakref
22
23
from copy import deepcopy
23
24
from typing import (
30
31
MutableMapping ,
31
32
Optional ,
32
33
Sequence ,
34
+ Union ,
33
35
cast ,
34
36
)
35
37
@@ -759,14 +761,16 @@ def _encrypt_helper(
759
761
self ,
760
762
value : Any ,
761
763
algorithm : str ,
762
- key_id : Optional [Binary ] = None ,
764
+ key_id : Optional [Union [ Binary , uuid . UUID ] ] = None ,
763
765
key_alt_name : Optional [str ] = None ,
764
766
query_type : Optional [str ] = None ,
765
767
contention_factor : Optional [int ] = None ,
766
768
range_opts : Optional [RangeOpts ] = None ,
767
769
is_expression : bool = False ,
768
770
) -> Any :
769
771
self ._check_closed ()
772
+ if isinstance (key_id , uuid .UUID ):
773
+ key_id = Binary .from_uuid (key_id )
770
774
if key_id is not None and not (
771
775
isinstance (key_id , Binary ) and key_id .subtype == UUID_SUBTYPE
772
776
):
@@ -799,7 +803,7 @@ def encrypt(
799
803
self ,
800
804
value : Any ,
801
805
algorithm : str ,
802
- key_id : Optional [Binary ] = None ,
806
+ key_id : Optional [Union [ Binary , uuid . UUID ] ] = None ,
803
807
key_alt_name : Optional [str ] = None ,
804
808
query_type : Optional [str ] = None ,
805
809
contention_factor : Optional [int ] = None ,
@@ -826,6 +830,9 @@ def encrypt(
826
830
827
831
:return: The encrypted value, a :class:`~bson.binary.Binary` with subtype 6.
828
832
833
+ .. versionchanged:: 4.7
834
+ ``key_id`` can now be passed in as a :class:`uuid.UUID`.
835
+
829
836
.. versionchanged:: 4.2
830
837
Added the `query_type` and `contention_factor` parameters.
831
838
"""
@@ -847,7 +854,7 @@ def encrypt_expression(
847
854
self ,
848
855
expression : Mapping [str , Any ],
849
856
algorithm : str ,
850
- key_id : Optional [Binary ] = None ,
857
+ key_id : Optional [Union [ Binary , uuid . UUID ] ] = None ,
851
858
key_alt_name : Optional [str ] = None ,
852
859
query_type : Optional [str ] = None ,
853
860
contention_factor : Optional [int ] = None ,
@@ -875,6 +882,9 @@ def encrypt_expression(
875
882
876
883
:return: The encrypted expression, a :class:`~bson.RawBSONDocument`.
877
884
885
+ .. versionchanged:: 4.7
886
+ ``key_id`` can now be passed in as a :class:`uuid.UUID`.
887
+
878
888
.. versionadded:: 4.4
879
889
"""
880
890
return cast (
0 commit comments