
    dhI                     R    S SK J r Jr  S SKJrJr  S SKJr  S SKJr   " S S\5      r	g)    )datetime	timedelta)ListOptional)Document)
BaseLoaderc                   z    \ rS rSrSr   SS\S\S\S\\   S\\   S	\S
S4S jjrS\	S
\
4S jrS
\\
   4S jrSrg)DatadogLogsLoader	   zXLoad `Datadog` logs.

Logs are written into the `page_content` and into the `metadata`.
Nqueryapi_keyapp_key	from_timeto_timelimitreturnc                      SSK Jn  Xl        U" 5       n	X)R                  S'   X9R                  S'   Xl        X@l        XPl        X`l        g! [         a  n[        S5      UeSnAff = f)a  Initialize Datadog document loader.

Requirements:
    - Must have datadog_api_client installed. Install with `pip install datadog_api_client`.

Args:
    query: The query to run in Datadog.
    api_key: The Datadog API key.
    app_key: The Datadog APP key.
    from_time: Optional. The start of the time range to query.
        Supports date math and regular timestamps (milliseconds) like '1688732708951'
        Defaults to 20 minutes ago.
    to_time: Optional. The end of the time range to query.
        Supports date math and regular timestamps (milliseconds) like '1688732708951'
        Defaults to now.
    limit: The maximum number of logs to return.
        Defaults to 100.
r   )ConfigurationlCould not import datadog_api_client python package. Please install it with `pip install datadog_api_client`.N
apiKeyAuth
appKeyAuth)	datadog_api_clientr   ImportErrorr   r   configurationr   r   r   )
selfr   r   r   r   r   r   r   exr   s
             i/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/document_loaders/datadog_logs.py__init__DatadogLogsLoader.__init__   ss    6	8 
%.5l+.5l+*"
  	K 	s   A
 

A%A  A%logc                    UR                  S0 5      nUR                  SS5      UR                  S5      UR                  SS5      UR                  S/ 5      UR                  SS5      S.nUR                  S	S5      nUR                  S0 5      n0 UES	U0EnS
R                  S UR                  5        5       5      n[        XsS9$ )z1
Create Document objects from Datadog log items.

attributesid statusservicetags	timestamp)r#   r%   r&   r'   r(   messagez, c              3   2   #    U H  u  pU S U 3v   M     g7f)z: N ).0kvs      r   	<genexpr>.DatadogLogsLoader.parse_log.<locals>.<genexpr>K   s     I4HDAqcA3K4Hs   )page_contentmetadata)getjoinitemsr   )r   r    r"   r2   r)   inside_attributescontent_dictcontents           r   	parse_logDatadogLogsLoader.parse_log;   s     WW\2.
''$# nnX.!~~i4NN62.#R8
 ..B/&NN<<@+@Y@))IL4F4F4HIIW@@    c                     SSK Jn  SSKJn  SSKJn  SSKJn  SSKJ	n  SSK
Jn  [        R                  " 5       nU[        S
S9-
  n	[!        UR#                  5       S-  5      n
[!        U	R#                  5       S-  5      nU R$                  b  U R$                  OUnU" U" U R&                  UU R(                  b  U R(                  OU
 S9UR*                  U" U R,                  S9S9nU" U R.                  S9 nU" U5      nUR1                  US9R3                  5       nS	S	S	5        / nWS    H#  nUR5                  U R7                  U5      5        M%     U$ ! [         a  n[        S5      UeS	nAff = f! , (       d  f       N\= f)z
Get logs from Datadog.

Returns:
    A list of Document objects.
        - page_content
        - metadata
            - id
            - service
            - status
            - tags
            - timestamp
r   )	ApiClient)LogsApi)LogsListRequest)LogsListRequestPage)LogsQueryFilter)LogsSortr   N   )minutesi  )r   _fromto)r   )filtersortpage)r   )bodydata)r   r=   "datadog_api_client.v2.api.logs_apir>   -datadog_api_client.v2.model.logs_list_requestr?   2datadog_api_client.v2.model.logs_list_request_pager@   -datadog_api_client.v2.model.logs_query_filterrA   %datadog_api_client.v2.model.logs_sortrB   r   r   nowr   intr(   r   r   r   TIMESTAMP_ASCENDINGr   r   	list_logsto_dictappendr9   )r   r=   r>   r?   r@   rA   rB   r   rQ   twenty_minutes_beforenow_timestamptwenty_minutes_before_timestamprE   rJ   
api_clientapi_instanceresponsedocsrows                      r   loadDatadogLogsLoader.loadN   sx   	4BU VF lln #i&; ;CMMOd23*-.C.M.M.ORV.V*W' ~~) NN0 	 "jj&*ll&>dllMR
 --$jj

 T%7%78J":.L#--4-8@@BH 9  "F#CKKs+, $ I  	K 	8 98s#   $E 4&E0
E-E((E-0
E>)r   r   r   r   r   )NNd   )__name__
__module____qualname____firstlineno____doc__strr   rR   r   dictr   r9   r   r_   __static_attributes__r+   r;   r   r
   r
   	   s     $(!%** * 	*
 C=* #* * 
*XAT Ah A&;d8n ;r;   r
   N)
r   r   typingr   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   r
   r+   r;   r   <module>rm      s    ( ! - @@
 @r;   