
    \j                     2    d Z d ZeZd Zedk(  r e        yy)a  
Simple decorator to set attributes of target function or class in a DRY way.

Usage example:

    # Django proposes:
    def my_calculated_field(...
    my_calculated_field.short_description = 'Field'
    my_calculated_field.admin_order_field = 'real_field'

    # DRY:
    @attr(short_description='Field', admin_order_field='real_field')
    def my_calculated_field(...

Get it:

    sudo pip install attr
    from attr import attr

New popular http://attrs.org used by https://pytest.org defines another "attr" package that shadows this "attr" module.
Please use "dry_attr" alias to unshadow it:

    from dry_attr import attr
    from dry_attr import dry_attr

attr version 0.3.1
Copyright (C) 2013-2017 by Denis Ryzhkov <denisr@denisr.com>
MIT License, see http://opensource.org/licenses/MIT
c                        fd}|S )Nc                 R    j                         D ]  \  }}t        | ||        | S N)itemssetattr)targetnamevaluenames_valuess      2/root/env/lib/python3.12/site-packages/dry_attr.py
set_targetzattr.<locals>.set_target    s0    '--/ 	)KD%FD%(	)     )r
   r   s   ` r   attrr      s     r   c                     t        dd      d        } t        dd       G d dt                     }| j                  |j                  cxk(  rdk(  sJ  J | j                  |j                  cxk(  rdk(  sJ  J t	        d       y )N      )abc                       y r   r   r   r   r   fztest.<locals>.f*   s    r   c                       e Zd Zy)test.<locals>.CN)__name__
__module____qualname__r   r   r   Cr   -   s    r   r   OK)r   objectr   r   print)r   r   s     r   testr    (   sp    	A^ 	A^F 33!##????33!##????	$Kr   __main__N)__doc__r   dry_attrr    r   r   r   r   <module>r$      s/   <  zF r   