
    j                      6    d dl m Z  d\  ZZ G d d          ZdS )   )connections)TFc            	           e Zd ZdZddededdfdZd Zed	             Zd
 Z	d Z
defdZdefdZd Zd ZddedededefdZddedededefdZddededefdZddefdZdS )RolezPRole, can be granted privileges which are allowed to execute some objects' apis.defaultnameusingreturnNc                 0    || _         || _        || _        dS )z[Constructs a role by name
        :param name: role name.
        :type  name: str
        N)_name_using_kwargs)selfr   r   kwargss       [/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/pymilvus/orm/role.py__init__zRole.__init__   s    
 
    c                 4    t          j        | j                  S N)r   _fetch_handlerr   r   s    r   _get_connectionzRole._get_connection   s    )$+666r   c                     | j         S r   )r   r   s    r   r   z	Role.name!   s
    zr   c                 Z    |                                                      | j                  S )a  Create a role
            It will success if the role isn't existed, otherwise fail.

        :example:
            >>> from pymilvus import connections, utility
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(name=role_name)
            >>> role.create()
            >>> roles = utility.list_roles()
            >>> print(f"roles in Milvus: {roles}")
        )r   create_roler   r   s    r   createzRole.create%   s&     ##%%11$*===r   c                 Z    |                                                      | j                  S )a  Drop a role
            It will success if the role is existed, otherwise fail.

        :example:
            >>> from pymilvus import connections, utility
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(name=role_name)
            >>> role.drop()
            >>> roles = utility.list_roles()
            >>> print(f"roles in Milvus: {roles}")
        )r   	drop_roler   r   s    r   dropz	Role.drop4   s&     ##%%//
;;;r   usernamec                 \    |                                                      || j                  S )a  Add user to role
            The user will get permissions that the role are allowed to perform operations.
            :param username: user name.
            :type  username: str

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(name=role_name)
            >>> role.add_user(username)
            >>> users = role.get_users()
            >>> print(f"users added to the role: {users}")
        )r   add_user_to_roler   r   r   s     r   add_userzRole.add_userC   s(     ##%%66xLLLr   c                 \    |                                                      || j                  S )a  Remove user from role
            The user will remove permissions that the role are allowed to perform operations.
            :param username: user name.
            :type  username: str

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(name=role_name)
            >>> role.remove_user(username)
            >>> users = role.get_users()
            >>> print(f"users added to the role: {users}")
        )r   remove_user_from_roler   r"   s     r   remove_userzRole.remove_userT   s(     ##%%;;HdjQQQr   c                     |                                                      | j        t                    }t	          |j                  dk    rg S |j        d         j        S )aK  Get all users who are added to the role.
            :return a RoleInfo object which contains a RoleItem group
                According to the RoleItem, you can get a list of usernames.

            RoleInfo groups:
            - UserItem: <role_name:admin>, <users:('root',)>

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(name=role_name)
            >>> users = role.get_users()
            >>> print(f"users added to the role: {users}")
            )r   select_one_roler   INCLUDE_USER_INFOlengroupsusersr   roless     r   	get_userszRole.get_userse   sQ      $$&&66tzCTUUu|!!I|A$$r   c                     |                                                      | j        t                    }t	          |j                  dk    S )a  Check whether the role is existed.
            :return a bool value
                It will be True if the role is existed, otherwise False.

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(name=role_name)
            >>> is_exist = role.is_exist()
            >>> print(f"the role: {is_exist}")
        r(   )r   r)   r   NOT_INCLUDE_USER_INFOr+   r,   r.   s     r   is_existzRole.is_existz   s=     $$&&66tzCXYY5<  A%%r    objectobject_name	privilegedb_namec                 b    |                                                      | j        ||||          S )ar  Grant a privilege for the role
            :param object: object type.
            :type  object: str
            :param object_name: identifies a specific object name.
            :type  object_name: str
            :param privilege: privilege name.
            :type  privilege: str
            :param db_name: db name.
            :type  db_name: str

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(role_name)
            >>> role.grant("Collection", collection_name, "Insert")
        )r   grant_privileger   r   r5   r6   r7   r8   s        r   grantz
Role.grant   s5    $ ##%%55JY
 
 	
r   c                 b    |                                                      | j        ||||          S )a  Revoke a privilege for the role
        Args:
            object(str): object type.
            object_name(str): identifies a specific object name.
            privilege(str): privilege name.
            db_name(str): db name.

        Examples:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(role_name)
            >>> role.revoke("Collection", collection_name, "Insert")
        )r   revoke_privileger   r;   s        r   revokezRole.revoke   s5     ##%%66JY
 
 	
r   c                 `    |                                                      | j        |||          S )a"  List a grant info for the role and the specific object
            :param object: object type.
            :type  object: str
            :param object_name: identifies a specific object name.
            :type  object_name: str
            :param db_name: db name.
            :type  db_name: str
            :return a GrantInfo object
            :rtype GrantInfo

            GrantInfo groups:
                - GrantItem: <object:Collection>, <object_name:foo>, <role_name:x>,
                <grantor_name:root>, <privilege:Load>

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(role_name)
            >>> role.list_grant("Collection", collection_name)
        )r    select_grant_for_role_and_objectr   )r   r5   r6   r8   s       r   
list_grantzRole.list_grant   s3    , ##%%FFJW
 
 	
r   c                 \    |                                                      | j        |          S )a<  List a grant info for the role
            :param db_name: db name.
            :type  db_name: str
            :return a GrantInfo object
            :rtype GrantInfo

            GrantInfo groups:
            - GrantItem: <object:Collection>, <object_name:foo>, <role_name:x>,
                <grantor_name:root>, <privilege:Load>

        :example:
            >>> from pymilvus import connections
            >>> from pymilvus.orm.role import Role
            >>> connections.connect()
            >>> role = Role(role_name)
            >>> role.list_grants()
        )r   select_grant_for_one_roler   )r   r8   s     r   list_grantszRole.list_grants   s(    $ ##%%??
GTTTr   )r   )r4   )__name__
__module____qualname____doc__strr   r   propertyr   r   r   r#   r&   r0   r3   r<   r?   rB   rE    r   r   r   r      s       ZZ S  t    7 7 7   X> > >< < <M M M M M"RC R R R R"% % %*& & & 
 
C 
c 
c 
C 
 
 
 
,
 
S 
s 
s 
S 
 
 
 
&
 
 
3 
 
 
 
 
4U U3 U U U U U Ur   r   N)r   r*   r2   r   rL   r   r   <module>rM      sk    % $ $ $ $ $+6 ( (MU MU MU MU MU MU MU MU MU MUr   