OpenQuizz
Une application de gestion des contenus pédagogiques
BytecodeCache Class Reference
Inheritance diagram for BytecodeCache:
Collaboration diagram for BytecodeCache:

Public Member Functions

def load_bytecode (self, bucket)
 
def dump_bytecode (self, bucket)
 
def clear (self)
 
def get_cache_key (self, name, filename=None)
 
def get_source_checksum (self, source)
 
def get_bucket (self, environment, name, filename, source)
 
def set_bucket (self, bucket)
 

Detailed Description

To implement your own bytecode cache you have to subclass this class
and override :meth:`load_bytecode` and :meth:`dump_bytecode`.  Both of
these methods are passed a :class:`~jinja2.bccache.Bucket`.

A very basic bytecode cache that saves the bytecode on the file system::

    from os import path

    class MyCache(BytecodeCache):

        def __init__(self, directory):
            self.directory = directory

        def load_bytecode(self, bucket):
            filename = path.join(self.directory, bucket.key)
            if path.exists(filename):
                with open(filename, 'rb') as f:
                    bucket.load_bytecode(f)

        def dump_bytecode(self, bucket):
            filename = path.join(self.directory, bucket.key)
            with open(filename, 'wb') as f:
                bucket.write_bytecode(f)

A more advanced version of a filesystem based bytecode cache is part of
Jinja.

Member Function Documentation

◆ clear()

def clear (   self)
Clears the cache.  This method is not used by Jinja but should be
implemented to allow applications to clear the bytecode cache used
by a particular environment.

Reimplemented in FileSystemBytecodeCache.

◆ dump_bytecode()

def dump_bytecode (   self,
  bucket 
)
Subclasses have to override this method to write the bytecode
from a bucket back to the cache.  If it unable to do so it must not
fail silently but raise an exception.

Reimplemented in MemcachedBytecodeCache, and FileSystemBytecodeCache.

◆ get_bucket()

def get_bucket (   self,
  environment,
  name,
  filename,
  source 
)
Return a cache bucket for the given template.  All arguments are
mandatory but filename may be `None`.

◆ get_cache_key()

def get_cache_key (   self,
  name,
  filename = None 
)
Returns the unique hash key for this template name.

◆ get_source_checksum()

def get_source_checksum (   self,
  source 
)
Returns a checksum for the source.

◆ load_bytecode()

def load_bytecode (   self,
  bucket 
)
Subclasses have to override this method to load bytecode into a
bucket.  If they are not able to find code in the cache for the
bucket, it must not do anything.

Reimplemented in MemcachedBytecodeCache, and FileSystemBytecodeCache.

◆ set_bucket()

def set_bucket (   self,
  bucket 
)
Put the bucket into the cache.

The documentation for this class was generated from the following file: