%PDF- %PDF-
Direktori : /opt/alt/python37/lib/python3.7/site-packages/beaker/ext/__pycache__/ |
Current File : //opt/alt/python37/lib/python3.7/site-packages/beaker/ext/__pycache__/mongodb.cpython-37.pyc |
B ��[? � @ s� d dl Z d dlZd dlZd dlZd dlZyd dlZd dlZd dlZW n ek r` dZdZY nX d dl m Z d dlmZ d dl mZmZ d dlmZ d dlmZmZ G dd� de �ZG d d � d e�ZdS )� N)�NamespaceManager)�SynchronizerImpl)�SyncDict�machine_identifier)�sha1)�string_type�PY2c s� e Zd ZdZdZe� Z� fdd�Zdd� Zdd� Z d d � Z dd� Zd d� Zddd�Z dd� Zdd� Zdd� Zdd� Zdd� Z� ZS )�MongoNamespaceManagera^ Provides the :class:`.NamespaceManager` API over MongoDB. Provided ``url`` can be both a mongodb connection string or an already existing MongoClient instance. The data will be stored into ``beaker_cache`` collection of the *default database*, so make sure your connection string or MongoClient point to a default database. i c s\ t t| ��|� d | _td kr&td��t|t�rFtj� |tj |�| _n|| _| j�� | _ d S )Nzpymongo3 is not available)�superr �__init__Zlock_dir�pymongo�RuntimeError� isinstancer �clients�get�MongoClient�client�get_default_database�db)�self� namespace�url�kw)� __class__� �C/opt/alt/python37/lib/python3.7/site-packages/beaker/ext/mongodb.pyr $ s zMongoNamespaceManager.__init__c C sX t |t�s|�d�}t|�| jt| j� d krJts>|�d�}t|�� � }d| j|f S )N�ascii� zutf-8z%s:%s) r �str�decode�len�MAX_KEY_LENGTHr r �encoder � hexdigest)r �keyr r r �_format_key1 s z!MongoNamespaceManager._format_keyc C s t | �|�| j�S )N)�MongoSynchronizerr% r )r r$ r r r �get_creation_lock: s z'MongoNamespaceManager.get_creation_lockc C s>