
    D6i                     @    d dl Z  G d d      ZddZ e       ZefdZy)    Nc                   "    e Zd ZdZd Zd Zd Zy)	FakeCachezy
    An object that mimics just enough of Flask-Caching's API to be compatible
    with our needs, but does nothing.
    c                      y N selfkeys     T/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/flask_dance/utils.pygetzFakeCache.get
           c                      y r   r   )r	   r
   values      r   setzFakeCache.set   r   r   c                      y r   r   r   s     r   deletezFakeCache.delete   r   r   N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s    
r   r   c                 N    || D ]  }|s|c S  |S | D ]  } ||      s|c S  |S )zr
    Return the first truthy value of an iterable.
    Shamelessly stolen from https://github.com/hynek/first
    r   )iterabledefaultr
   els       r   firstr      sK    
 { 	B		 N  	B2w		 Nr   c                     	 t        j                  t        |j                  d      |       S # t        $ r}|t
        ur|cY d}~S  d}~ww xY w)zk
    Same as getattr(), but allows dot notation lookup
    Source: http://stackoverflow.com/a/14324459
    .N)	functoolsreducegetattrsplitAttributeErrorsentinel)objnamer   es       r   getattrdr(   '   sD    
C#>> ("Ns   ), 	A
	AA
AA
)NN)r   r   r   objectr$   r(   r   r   r   <module>r*      s*        8 !) 
r   