
    \j                         d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
mZ  G d d      Z G d de      Z ed	d
dedd       Z edddedd      Zy)aN  
This submodule is used only by the internals of the feature flag storage mechanism.

If you are writing your own implementation of :class:`ldclient.integrations.FeatureStore`, the
:class:`VersionedDataKind` tuple type will be passed to the ``kind`` parameter of the feature
store methods; its ``namespace`` property tells the feature store which collection of objects is
being referenced ("features", "segments", etc.). The intention is for the feature store to treat
storable objects as completely generic JSON dictionaries, rather than having any special logic
for features or segments.
    )FeatureFlagModelEntitySegment)
namedtuple)AnyCallableIterableOptionalc                       e Zd Z	 ddedededeeegef      fdZe	defd       Z
e	defd	       Ze	defd
       ZdedefdZdedefdZy)VersionedDataKindN	namespacerequest_api_pathstream_api_pathdecoderc                 <    || _         || _        || _        || _        y N)
_namespace_request_api_path_stream_api_path_decoder)selfr   r   r   r   s        F/root/env/lib/python3.12/site-packages/ldclient/versioned_data_kind.py__init__zVersionedDataKind.__init__   s     #!1 /    returnc                     | j                   S r   )r   r   s    r   r   zVersionedDataKind.namespace   s    r   c                     | j                   S r   )r   r   s    r   r   z"VersionedDataKind.request_api_path   s    %%%r   c                     | j                   S r   )r   r   s    r   r   z!VersionedDataKind.stream_api_path#   s    $$$r   datac                 `    | j                   t        |t              r|S | j                  |      S r   )r   
isinstancer   )r   r    s     r   decodezVersionedDataKind.decode'   s)    == Jt[$AK}}T""r   itemc                 F    t        |t              r|j                         S |S r   )r"   r   to_json_dict)r   r$   s     r   encodezVersionedDataKind.encode,   s    &0{&Ct  "MMr   r   )__name__
__module____qualname__strr
   r   dictr   r   propertyr   r   r   r#   r'    r   r   r   r      s    37 #    s  (D63;/0  3   &# & & % % %#3 #3 #
N3 N4 Nr   r   c                        e Zd Zdedededeeegef      dedeeege	e   f      f fdZ
edefd	       Zedeeege	e   f      fd
       Z xZS )VersionedDataKindWithOrderingr   r   r   r   priorityget_dependency_keysc                 F    t         |   ||||       || _        || _        y r   )superr   	_priority_get_dependency_keys)r   r   r   r   r   r1   r2   	__class__s          r   r   z&VersionedDataKindWithOrdering.__init__0   s(     	$4owO!$7!r   r   c                     | j                   S r   )r5   r   s    r   r1   z&VersionedDataKindWithOrdering.priority7   s    ~~r   c                     | j                   S r   )r6   r   s    r   r2   z1VersionedDataKindWithOrdering.get_dependency_keys;   s    (((r   )r(   r)   r*   r+   r
   r   r,   r   intr	   r   r-   r1   r2   __classcell__)r7   s   @r   r0   r0   /   s    8# 8 8s 8"8TFCK#89885=hvxX[}G\>]5^8 #   )Xhvx}7L.M%N ) )r   r0   featuresz/sdk/latest-flagsz/flags/   c                 4    d | j                  dg       D        S )Nc              3   >   K   | ]  }|j                  d         yw)keyNget).0ps     r   	<genexpr>z<lambda>.<locals>.<genexpr>D   s     '\e'\s   prerequisitesrA   )flags    r   <lambda>rH   D   s    '\dhhXZ>['\ r   )r   r   r   r   r1   r2   segmentsz/sdk/latest-segmentsz
/segments/N)__doc__ldclient.impl.modelr   r   r   collectionsr   typingr   r   r	   r
   r   r0   FEATURESSEGMENTSr.   r   r   <module>rP      sp   	 B A " 4 4N N8)$5 )  )Z*\^ )Z-" r   