
    NgI                     Z    d dl m Z mZ d dlmZmZ d dlmZ d dlmZ  G d de          Z	dS )    )datetime	timedelta)ListOptional)Document)
BaseLoaderc                   ~    e Zd ZdZ	 	 	 ddedededee         dee         d	ed
dfdZded
e	fdZ
d
ee	         fdZdS )DatadogLogsLoaderz`Load `Datadog` logs.

    Logs are written into the `page_content` and into the `metadata`.
    Nd   queryapi_keyapp_key	from_timeto_timelimitreturnc                     	 ddl m} n"# t          $ r}t          d          |d}~ww xY w|| _         |            }	||	j        d<   ||	j        d<   |	| _        || _        || _        || _        dS )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
             m/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/datadog_logs.py__init__zDatadogLogsLoader.__init__   s    6	8888888 	 	 	K  	 
%.5l+.5l+*"


s   	 
(#(logc                    |                     di           }|                     dd          |                     d          |                     dd          |                     dg           |                     dd          d}|                     d	d          }|                     di           }i |d	|i}d
                    d |                                D                       }t          ||          S )zA
        Create Document objects from Datadog log items.
        
attributesid statusservicetags	timestamp)r"   r$   r%   r&   r'   messagez, c              3   *   K   | ]\  }}| d | V  dS )z: N ).0kvs      r   	<genexpr>z.DatadogLogsLoader.parse_log.<locals>.<genexpr>K   s0      IIDAqqKKAKKIIIIII    )page_contentmetadata)getjoinitemsr   )r   r   r!   r1   r(   inside_attributescontent_dictcontents           r   	parse_logzDatadogLogsLoader.parse_log;   s     WW\2..
''$## nnX..!~~i44NN62..#R88
 
 ..B//&NN<<<@+@Y@@))IIL4F4F4H4HIIIIIWx@@@@r/   c                 8   	 ddl m} ddlm} ddlm} ddlm} ddlm	} ddl
m} n"# t          $ r}t          d          |d	}~ww xY wt          j                    }|t          d
          z
  }	t!          |                                dz            }
t!          |	                                dz            }| j        | j        n|} | || j        || j        | j        n|
           |j         || j                            } || j                  5 } ||          }|                    |                                          }d	d	d	           n# 1 swxY w Y   g }|d         D ]*}|                    |                     |                     +|S )a+  
        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_filterr>   %datadog_api_client.v2.model.logs_sortr?   r   r   nowr   intr'   r   r   r   TIMESTAMP_ASCENDINGr   r   	list_logsto_dictappendr8   )r   r:   r;   r<   r=   r>   r?   r   rN   twenty_minutes_beforenow_timestamptwenty_minutes_before_timestamprB   rG   
api_clientapi_instanceresponsedocsrows                      r   loadzDatadogLogsLoader.loadN   s   	444444BBBBBBUUUUUU      VUUUUUFFFFFFF 	 	 	K  	 lnn #i&;&;&; ;CMMOOd233*-.C.M.M.O.ORV.V*W*W' ~) NN0 	 "?j&*l&>dllMS  
 -$$j  

 

 

 YT%7888 	CJ"7:..L#--4-88@@BBH	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C  "F# 	- 	-CKKs++,,,,s&   $' 
AAA4EE!E)NNr   )__name__
__module____qualname____doc__strr   rO   r   dictr   r8   r   r\   r*   r/   r   r
   r
   	   s          $(!%* ** * 	*
 C=* #* * 
* * * *XAT Ah A A A A&;d8n ; ; ; ; ; ;r/   r
   N)
r   r   typingr   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   r
   r*   r/   r   <module>rf      s    ( ( ( ( ( ( ( ( ! ! ! ! ! ! ! ! - - - - - - @ @ @ @ @ @@ @ @ @ @
 @ @ @ @ @r/   