
    hI                     R    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	y)    )datetime	timedelta)ListOptional)Document)
BaseLoaderc                   j    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y)DatadogLogsLoaderz`Load `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                     	 ddl m} || _         |       }	||	j                  d<   ||	j                  d<   |	| _        || _        || _        || _        y# t        $ r}t        d      |d}~ww xY w)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
             o/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/document_loaders/datadog_logs.py__init__zDatadogLogsLoader.__init__   s    6	8 
%.5l+.5l+*"
  	K 	s   A 	A+A&&A+logc                    |j                  di       }|j                  dd      |j                  d      |j                  dd      |j                  dg       |j                  dd      d}|j                  d	d      }|j                  di       }i |d	|i}d
j                  d |j                         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   0   K   | ]  \  }}| d |   yw)z: N ).0kvs      r   	<genexpr>z.DatadogLogsLoader.parse_log.<locals>.<genexpr>K   s     IDAqqcA3KIs   )page_contentmetadata)getjoinitemsr   )r   r   r    r/   r'   inside_attributescontent_dictcontents           r   	parse_logzDatadogLogsLoader.parse_log;   s     WW\2.
''$# nnX.!~~i4NN62.#R8
 ..B/&NN<<@+@Y@))IL4F4F4HIIWx@@    c                    	 ddl m} ddlm} ddlm} ddlm} ddlm	} ddl
m} t        j                         }|t        d
      z
  }	t!        |j#                         dz        }
t!        |	j#                         dz        }| j$                  | j$                  n|} | || j&                  || j(                  | j(                  n|
       |j*                   || j,                              } || j.                        5 } ||      }|j1                  |      j3                         }d	d	d	       g }d   D ]"  }|j5                  | j7                  |             $ |S # t        $ r}t        d      |d	}~ww xY w# 1 sw Y   TxY w)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   r9   "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appendr6   )r   r9   r:   r;   r<   r=   r>   r   rM   twenty_minutes_beforenow_timestamptwenty_minutes_before_timestamprA   rF   
api_clientapi_instanceresponsedocsrows                      r   loadzDatadogLogsLoader.loadN   s   	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8 	CJ":.L#--4-8@@BH	C  "F# 	-CKKs+,	- I  	K 	8	C 	Cs#   $E  )E<	E9(E44E9<F)NNd   )__name__
__module____qualname____doc__strr   rN   r   dictr   r6   r   r[   r)   r7   r   r
   r
   	   s     $(!%** * 	*
 C=* #* * 
*XAT Ah A&;d8n ;r7   r
   N)
r   r   typingr   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   r
   r)   r7   r   <module>rf      s    ( ! - @@
 @r7   