
    Ѯh                     L   d Z ddlZddlZddlmZ ddlmZ ddlmZ	 ddl
mZ ddlmZ dZd	Zej                   j#                  ee      Z ej&                  e      Z	 dd
lmZ dZddde dZdeddZedd       ZddZd ZddZ y# e$ r ej5                  d       d	ZY >w xY w)z{Manages OpenTelemetry tracing span creation and handling. This is a PREVIEW FEATURE: Coverage and functionality may change.    N)contextmanager)
exceptions)retry)__version__)ConditionalRetryPolicy$ENABLE_GCS_PYTHON_CLIENT_OTEL_TRACESF)traceTzThis service is instrumented using OpenTelemetry. OpenTelemetry or one of its components could not be imported; please add compatible versions of opentelemetry-api and opentelemetry-instrumentation packages in order to get Storage Tracing data.CloudStoragehttpzgcloud-python/)zrpc.servicez
rpc.systemzuser_agent.originalstoragezgoogleapis/python-storage)zgcp.client.servicezgcp.client.versionzgcp.client.repoc              #     K   t         rt        sd yt        j                  t              }t        ||||      }|j                  | t        j                  j                  |      5 }	 | 	 ddd       y# t        j                  $ rS}|j                  t        j                  t        j                  j                               |j                  |        d}~ww xY w# 1 sw Y   yxY ww)zCreates a context manager for a new span and set it as the current span
    in the configured tracer. If no configuration exists yields None.N)namekind
attributes)HAS_OPENTELEMETRYenable_otel_tracesr	   
get_tracer__name___get_final_attributesstart_as_current_spanSpanKindCLIENTapi_exceptionsGoogleAPICallError
set_statusStatus
StatusCodeERRORrecord_exception)	r   r   clientapi_requestr   tracerfinal_attributesspanerrors	            }/home/www/academy-backend.kofcorporation.com/venv/lib/python3.12/site-packages/google/cloud/storage/_opentelemetry_tracing.pycreate_trace_spanr'   @   s      $6
h'F,ZeT		%	%--:J 
& 
 		J	 
 00 	OOELL)9)9)?)?@A!!%(	 s=   A%C,'C )A7.	C,7C
ACCC  C)%C,c                    t         j                         }|j                  t               |r|j                  t	        ||             t        |t        j                        r|j                  t        |             t        |t              r/|j                  t        |j                  |j                               | r|j                  |        |j                         D ci c]  \  }}|	|| }}}|S c c}}w N)_default_attributescopyupdate_cloud_trace_adoption_attrs_set_api_request_attr
isinstance	api_retryRetry_set_retry_attrr   retry_policyconditional_predicateitems)r   r    r!   r   collected_attrkvr#   s           r&   r   r   V   s    (--/N563KHI%)oe45%/0E..0K0KL	
 j))7)=)=)?QA1=1QQ Rs    
C5+C5c                     i }| j                  d      r| j                  d      |d<   | j                  d      r0| j                  d      }|j                  j                   | }||d<   | j                  d      r| j                  d      |d<   |S )Nmethodzhttp.request.methodpathzurl.fulltimeoutzconnect_timeout,read_timeout)get_connectionAPI_BASE_URL)requestr    attrr;   	full_paths        r&   r.   r.   g   s    D{{8&-kk(&;"#{{6{{6"))667v>	$Z{{9/6{{9/E+,K    c           
          |r|n| j                   }d| j                   d| j                   d| j                   d| j                   d| 
}d|iS )N
multiplierz	/deadlinez/maxz/initialz
/predicater   )
_predicate_multiplier	_deadline_maximum_initial)r   r4   	predicate
retry_infos       r&   r2   r2   t   sm    )>%EDTDTIe//0	%//9J$u~~N^^fglgugufv  wA  BK  AL  MJZ  rC   )NNNNr)   )!__doc__loggingos
contextlibr   google.api_corer   r   r   r0   google.cloud.storager   google.cloud.storage.retryr   ENABLE_OTEL_TRACES_ENV_VAR!_DEFAULT_ENABLE_OTEL_TRACES_VALUEenvironr=   r   	getLoggerr   loggeropentelemetryr	   r   ImportErrordebugr*   r-   r'   r   r.   r2    rC   r&   <module>r]      s    B  	 % 8 . , = D $) !ZZ^^ A  
		8	$# "+K=9  $%2   *"
!W  
LL	 s   B B#"B#