� ���g�3� �T�ddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZed��Zejd ��Zd gZGd �d e��Zddedededefd�Zd�Zd�Zdde fd�Zdefd�Zdefd�Zdefd�Z defd�Z!dedeejfd�Z"dS)�N)�Optional)�parser)� relativedelta)�utils)� FlagValue)�convert_to_datetime_aware�is_valid_regexl�����posthog�is_notc��eZdZdS)�InconclusiveMatchErrorN)�__name__� __module__� __qualname__���e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/posthog/feature_flags.pyr r s�������Drr ��key� distinct_id�salt�returnc���|�d|�|��}ttj|�d�������dd�d��}|t z S)N�.zutf-8��)�int�hashlib�sha1�encode� hexdigest�__LONG_SCALE__)rrr�hash_key�hash_vals r�_hashr%s_���+�+� �+�T�+�+�H��7�<����� 8� 8�9�9�C�C�E�E�c�r�c�J�B�O�O�H� �n� $�$rc��t|d|d���}t|��D]$}||dkr||dkr |dcS�%dS)Nr�variant)r� value_min� value_max)r%�variant_lookup_table)�flagr� hash_valuer's r�get_matching_variantr-#sf���t�E�{�K�i�@�@�@�J�'��-�-�"�"�� ���-� -� -�*�w�{�?S�2S�2S��5�>� !� !� !�� �4rc���g}d}|�d��pi�d��pi�d��pg}|D]1}||ddz z}|�|||dd���|}�2|S) Nr�filters� multivariate�variants�rollout_percentage�dr)r(r)r)�get�append)� feature_flag� lookup_tabler(� multivariatesr'r)s rr*r*+s����L��I�"�&�&�y�1�1�7�R�<�<�^�L�L�R�PR�W�W�Xb�c�c�i�gi�M� ������(<� =�� C�C� ����)�)�T[�\a�Tb�c�c�d�d�d�� � � �rc��|�d��pi�d��pg}d}|pi}|�d��pi�d��pi�d��pg}d�|D��}t|d����}|D]\} t||| ||��r4| �d ��} | r| |vr| } nt||��} | pd cS�K#t$rd }Y�YwxYw|rt d ���dS) Nr/�groupsFr0r1c��g|] }|d�� S�rr)�.0r's r� <listcomp>z1match_feature_flag_properties.<locals>.<listcomp><s��F�F�F�W�'�%�.�F�F�Frc�4�|�d��rdndS)Nr'r�)r4)� conditions r�<lambda>z/match_feature_flag_properties.<locals>.<lambda>Bs��9�=�=��#;�#;�B�a�a��rr<r'TzGCan't determine if feature flag is enabled or not with given properties)r4�sorted�is_condition_matchr-r ) r+r� properties�cohort_properties�flag_conditions�is_inconclusive� flag_variants�valid_variant_keys�sorted_flag_conditionsrA�variant_overrider's r�match_feature_flag_propertiesrM6sw���x�x� �*�*�0�b�5�5�h�?�?�E�2�O��O�)�/�R���h�h�y�)�)�/�R�4�4�^�D�D�J��O�O�PZ�[�[�a�_a�M�F�F� �F�F�F��$�� B� B����� ,� #� #� � #�"�$� �Y� �L]�^�^� '�#,�=�=��#;�#;� �#�F�(8�<N�(N�(N�.�G�G�2�4��E�E�G���$�&�&�&�  '��&� #� #� #�"�O�O�O� #�����p�$�%n�o�o�o� �5s�AC� C.�-C.c�~�|�d��}t|�d��pg��dkr^|�d��D]D}|�d��}|dkrt|||��}nt||��}|sdS�E|�dS|�t |d|��|d z krdSdS) Nr2rEr�type�cohortFTrr3)r4�len� match_cohort�match_propertyr%) r6rrArErFr2�prop� property_type�matchess rrDrD[s���"���';�<�<�� �9�=�=�� &� &� ,�"�-�-��1�1��M�M�,�/�/� � �D� �H�H�V�,�,�M���(�(�&�t�Z�9J�K�K���(��z�:�:��� ��u�u� � � %��4��%�%� �U�0C�[�*Q�*Q�Ug�jm�Um�*n�*n��u� �4rc��|�d��}|�d��pd}|�d��}||vrtd���|dkrtd���||}|tvr|�dS|d vr"d �}|dkr |||��S|||�� S|d kr||vS|d krtj||��S|d krtj||�� S|dkr_t t |����oBtjt |����� t |����duS|dkr_t t |����oBtjt |����� t |����duS|dvr�d�}d} t|��}n#t$rYnwxYw|�>|�<t|t ��r||t |��|��S||||��S|t |��t |��|��S|dv�r� tt |����} | s0tjt |����} t!| ��} n"#t$r} td��| �d} ~ wwxYw| std���t|t"j��r!t!|��} |dkr| | kS| | kSt|t"j��r6|dkr|| ���kS|| ���kSt|t ��rS tj|��} t!| ��} |dkr| | kS| | kS#t$rtd���wxYwtd���td|�����)Nr�operator�exact�valuez5can't match properties without a given property value� is_not_setz/can't match properties with operator is_not_setF)rYr c��t|t��r-t|�����d�|D��vSt j||��S)Nc�P�g|]#}t|�������$Sr)�str�casefold)r=�vals rr>z?match_property.<locals>.compute_exact_match.<locals>.<listcomp>�s+��9_�9_�9_�RU�#�c�(�(�:K�:K�:M�:M�9_�9_�9_r)� isinstance�listr^r_r� str_iequals)rZ�override_values r�compute_exact_matchz+match_property.<locals>.compute_exact_match�sW���%��&�&� `��>�*�*�3�3�5�5�9_�9_�Y^�9_�9_�9_�_�_��$�U�N�;�;� ;r�is_set� icontains� not_icontains�regex� not_regex)�gt�gte�lt�ltec��|dkr||kS|dkr||kS|dkr||kS|dkr||kStd|�����)NrkrlrmrnzInvalid operator: )� ValueError)�lhs�rhsrXs r�comparezmatch_property.<locals>.compare�sm���4����S�y� ��U�"�"��c�z�!��T�!�!��S�y� ��U�"�"��c�z�!� �!@�h�!@�!@�A�A�Ar)�is_date_before� is_date_afterz.The date set on the flag is not a valid formatrtz'The date provided is not a valid formatz1The date provided must be a string or date objectzUnknown operator )r4r �NONE_VALUES_ALLOWED_OPERATORSr� str_icontainsr r^�re�compile�search�float� Exceptionra�-relative_date_parse_for_feature_flag_matchingr�parser�datetime�date) �property�property_valuesrrXrZrdrers� parsed_value� parsed_date�e� override_dates rrSrSps��� �,�,�u� � �C��|�|�J�'�'�2�7�H� �L�L�� !� !�E� �/�!�!�$�%\�]�]�]��<���$�%V�W�W�W�$�S�)�N��5�5�5�>�;Q��u��&�&�&� <� <� <� �w� � �&�&�u�n�=�=� =�*�*�5�.�A�A�A� A��8����o�%�%��;����"�>�5�9�9�9��?�"�"��&�~�u�=�=�=�=��7����c�%�j�j�)�)�l�b�j��U���.D�.D�.K�.K�C�P^�L_�L_�.`�.`�hl�.l�l��;����c�%�j�j�)�)�h�b�j��U���.D�.D�.K�.K�C�P^�L_�L_�.`�.`�dh�.h�h��-�-�-� B� B� B�� � � ��<�<�L�L��� � � � �D� ���� � #��(B��.�#�.�.� G��w�~�s�5�z�z�8�D�D�D��w�~�|�X�F�F�F��7�3�~�.�.��E� � �H�E�E� E��6�6�6� b�G��E� � �S�S�K�� E�$�l�3�u�:�:�6�6� �7� �D�D� ���� b� b� b�(�)Y�Z�Z�`a� a����� b����� [�(�)Y�Z�Z� Z� �n�h�&7� 8� 8� ^�5�n�E�E�M��+�+�+�$�{�2�2�$�{�2�2� ��� � 6� 6� ^��+�+�+�%� �(8�(8�(:�(:�:�:�%� �(8�(8�(:�(:�:�:� ��� ,� ,� ^� X� &� �^� <� <� � 9�-� H� H� ��/�/�/�(�;�6�6�(�;�6�6��� X� X� X�,�-V�W�W�W� X����)�)\�]�]� ]� !�!?�X�!?�!?� @� @�@s=�:G � G�G�AJ� J5� J0�0J5�*.N�N�N9c��t|�d����}||vrtd���||}t|||��S)NrZ�8can't match cohort without a given cohort property value)r^r4r �match_property_group)r�r�rF� cohort_id�property_groups rrRrR�sU���H�L�L��)�)�*�*�I��)�)�)�$�%_�`�`�`�&�y�1�N� ���AR� S� S�Src�(�|sdS|�d��}|�d��}|rt|��dkrdSd}d|dvrx|D]^} t|||��}|dkr|sdSn|rdS�&#t$r,}t�d|�d|����d}Yd}~�Wd}~wwxYw|rtd ���|dkS|D]�} |�d��d krt |||��}nt||��}|�d d��} |dkr|s| sdS|r| rdSn|r| sdS|s| rdS�x#t$r,}t�d|�d|����d}Yd}~��d}~wwxYw|rtd ���|dkS) NTrO�valuesrF�ANDzFailed to compute property z locally: z8Can't match cohort without a given cohort property valuerP�negationr�)r4rQr�r �log�debugrRrS) r�r�rF�property_group_typerE�error_matching_locallyrTrVr�r�s rr�r��s��� ���t�(�,�,�V�4�4���#�#�H�-�-�J� ���Z���A�-�-��t�"���:�a�=� � �� .� .�D� .�.�t�_�FW�X�X��&�%�/�/�"�%�$�u�u�%��$�#�t�t���)� .� .� .�� � �K��K�K��K�K�L�L�L�)-�&�&�&�&�&�&����� .���� "� e�(�)c�d�d� d�"�e�+�+�� .� .�D� .��8�8�F�#�#�x�/�/�*�4��BS�T�T�G�G�,�T�?�C�C�G��8�8�J��6�6��&�%�/�/�"�%�8�%�$�u�u��%�8�%�$�u�u���$�x�$�#�t�t�"�$�x�$�#�t�t���)� .� .� .�� � �K��K�K��K�K�L�L�L�)-�&�&�&�&�&�&����� .���� "� e�(�)c�d�d� d�#�e�+�+sI�A:�3A:�: B0�"B+�+B0�AE�-E�4E�<E� E:�"E5�5E:rZc��d}tj||��}tj�tjj��}|r�t |�d����}|dkrdS|�d��}|dkr|t|���z }nj|dkr|t|���z }nP|d kr|t|� ��z }n6|d kr|t|� ��z }n|d kr|t|���z }ndS|SdS)Nz)^-?(?P<number>[0-9]+)(?P<interval>[a-z])$�numberi'�interval�h)�hours�d)�days�w)�weeks�m)�months�y)�years) rxrzr�now�timezone�utcr�groupr)rZri�match� parsed_dtr�r�s rr}r}8s&�� 8�E� �I�e�U� #� #�E��!�%�%�h�&7�&;�<�<�I� ���U�[�[��*�*�+�+�� �V� � ��4��;�;�z�*�*�� �s�?�?�!�M��$?�$?�$?�?�I�I� ��_�_�!�M�v�$>�$>�$>�>�I�I� ��_�_�!�M��$?�$?�$?�?�I�I� ��_�_�!�M��$@�$@�$@�@�I�I� ��_�_�!�M��$?�$?�$?�?�I�I��4����tr)r)N)#rr�loggingrx�typingr�dateutilr�dateutil.relativedeltarr r� posthog.typesr� posthog.utilsrr r{r"� getLoggerr�rvr|r r^r%r-r*rM�boolrDrSrRr�r}rrr�<module>r�s�������������� � � � �������������0�0�0�0�0�0�������#�#�#�#�#�#�C�C�C�C�C�C�C�C���(�)�)���g�� �"�"��!)� �� � � � � �Y� � � �%�%�s�%��%�C�%��%�%�%�%� ������"�"�\e�"�"�"�"�J�_c�����*pA��pA�pA�pA�pA�fT�$�T�T�T�T�$@,�PT�@,�@,�@,�@,�F����(�J[�A\������r
Memory