
    Vh                         d dl mZmZmZ eZdZdZdZd dl	m
Z
 d dlmZ d dlmZmZ dZ	 d d	lZ G d de      Zy	# e$ r d
ZY w xY w)    )absolute_importdivisionprint_functiona  
name: lmdb_kv
author:
  - Jan-Piet Mens (@jpmens)
version_added: '0.2.0'
short_description: fetch data from LMDB
description:
  - This lookup returns a list of results from an LMDB DB corresponding to a list of items given to it.
requirements:
  - lmdb (Python library U(https://lmdb.readthedocs.io/en/release/))
options:
  _terms:
    description: List of keys to query.
    type: list
    elements: str
  db:
    description: Path to LMDB database.
    type: str
    default: 'ansible.mdb'
    vars:
      - name: lmdb_kv_db
a  
- name: query LMDB for a list of country codes
  ansible.builtin.debug:
    msg: "{{ query('community.general.lmdb_kv', 'nl', 'be', 'lu', db='jp.mdb') }}"

- name: use list of values in a loop by key wildcard
  ansible.builtin.debug:
    msg: "Hello from {{ item.0 }} a.k.a. {{ item.1 }}"
  vars:
    - lmdb_kv_db: jp.mdb
  with_community.general.lmdb_kv:
    - "n*"

- name: get an item by key
  ansible.builtin.assert:
    that:
      - item == 'Belgium'
    vars:
      - lmdb_kv_db: jp.mdb
  with_community.general.lmdb_kv:
    - be
zL
_raw:
  description: Value(s) stored in LMDB.
  type: list
  elements: raw
)AnsibleError)
LookupBase)	to_nativeto_textTNFc                       e Zd ZddZy)LookupModuleNc           	         t         du rt        d      | j                  ||       | j                  d      }	 t	        j
                  t        |      d      }g }t        |      d
k(  rk|j                         5 }|j                         }	|	j                          |	D ]*  \  }
}|j                  t        |
      t        |      f       , 	 d	d	d	       |S |D ][  }|j                         5 }|j                  d      r|j                         }	|d	d }|	j!                  t        |      j#                                |	j%                         j'                  t        |      j#                               r|	D ]*  \  }
}|j                  t        |
      t        |      f       , |	j)                          |	j%                         j'                  t        |      j#                               rvnD|j+                  t        |      j#                               }||j                  t        |             d	d	d	       ^ |S # t        $ r}t        d| d|       d	}~ww xY w# 1 sw Y   |S xY w# 1 sw Y   xY w)a  
        terms contain any number of keys to be retrieved.
        If terms is None, all keys from the database are returned
        with their values, and if term ends in an asterisk, we
        start searching there

        The LMDB database defaults to 'ansible.mdb' if Ansible's
        variable 'lmdb_kv_db' is not set:

              vars:
                - lmdb_kv_db: "jp.mdb"
        Fz@Can't LOOKUP(lmdb_kv): this module requires lmdb to be installed)var_optionsdirectdbT)readonlyzLMDB cannot open database z: Nr   *)	HAVE_LMDBr   set_options
get_optionlmdbopenstr	Exceptionlenbegincursorfirstappendr	   r   endswith	set_rangeencodekey
startswithnextget)selfterms	variableskwargsr   enverettxnr   r"   valuetermprefixs                 l/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/lookup/lmdb_kv.pyrunzLookupModule.runL   s+    abbYv>__T"	G))CGd3C u:? A"( AJCJJi.>?@AA, 
  9YY[ 9C}}S)!$!%cr(()=)=)?@$jjl55gfo6L6L6NO.4 M
U #

GCL)E:J+K LM"KKM %jjl55gfo6L6L6NO
 !$(<(<(> ? ,JJy'789 99 
7  	G!;B4r!EFF	G
A, 
9 9s8    H7 9AI*C:I&%AI&7	I III#&I0	)N)__name__
__module____qualname__r2        r1   r   r   J   s    1r7   r   )
__future__r   r   r   type__metaclass__DOCUMENTATIONEXAMPLESRETURNansible.errorsr   ansible.plugins.lookupr   +ansible.module_utils.common.text.convertersr   r	   r   r   ImportErrorr   r6   r7   r1   <module>rB      sb    C B..
 ( - J	
3: 3	  Is   : AA