A process-safe python adapter to handle cache expiration.
Project description
|Build Status|
expirecache
========
Python utilities and middleware for neuron.js
expirecache analyzes the dependencies from user defined facades according
to the dependency tree, and outputs ``<script>`` tags and configurations
for `neuron.js <https://github.com/kaelzhang/neuron>`__
The dependency tree can be generated by
`neuron-package-dependency <https://github.com/kaelzhang/neuron-package-dependency>`__
Install
-------
.. code:: sh
$ pip install expirecache
Usage
-----
.. code:: py
from expirecache import Neuron
n = Neuron(
dependency_tree=dependency_tree, # must defined
resolve=resolve,
version=version,
cache=cache,
debug=False)
``expirecache`` could be used either in template file or your python
controller.
`Here <./sample/sample-jinja.html>`__ is a sample Jinja2 template file.
- **dependency\_tree** ``dict`` the ``json.loads()``\ ed dependency
tree
- **resolve** ``function(id)=`` (optional) implements your own custom
resolver. ``resolve`` accepts one parameter ``id`` which can be
either a ``str`` of module id or a ``list`` of module ids. If a
``str`` is passed in, the method should returns the resolved absolute
url of the module id. If ``id`` is a ``list``, an url of comboed
script files should be returned.
- **debug** ``function|bool=False`` tells expirecache whether should
switch on debug mode. When on debug mode, no javascript files of
dependencies will be preloaded, and the output will not be
compressed.
- if ``debug`` is callable, expirecache will use the return value of
method ``debug``
- if ``debug`` is a boolean value, and ``debug`` is true, the debug
mode will be on.
- **cache** ``dict=None`` if ``cache`` is defined, it should contains 3
methods:
- ``cache.has(key)`` returns ``bool``
- ``cache.get(key)`` looks up and returns the cached value by key
- ``cache.set(key, value)`` sets the value by key
- **version** ``str`` only works if ``cache`` is defined. expirecache will
uses ``version`` to generate the key to cache the output result
module id
^^^^^^^^^
.. code:: js
<name>@<version><path> # for example: 'jquery@2.0.0/jquery.js'
n.facade(entry, data=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^
- **entry** ``str`` id of the entry module
Registers a facade entry with ``data``. expirecache will
Returns ``''``\ (empty string), so you can use this method in python
template
n.combo(id...)
^^^^^^^^^^^^^^
Returns ``''``
n.css(id)
^^^^^^^^^
Returns ``''``
n.output()
^^^^^^^^^^
Returns ``str``
n.output\_css()
^^^^^^^^^^^^^^^
Returns ``str``
License
-------
MIT
.. |Build Status| image:: https://travis-ci.org/kaelzhang/python-expirecache.svg?branch=master
:target: https://travis-ci.org/kaelzhang/python-expirecache
expirecache
========
Python utilities and middleware for neuron.js
expirecache analyzes the dependencies from user defined facades according
to the dependency tree, and outputs ``<script>`` tags and configurations
for `neuron.js <https://github.com/kaelzhang/neuron>`__
The dependency tree can be generated by
`neuron-package-dependency <https://github.com/kaelzhang/neuron-package-dependency>`__
Install
-------
.. code:: sh
$ pip install expirecache
Usage
-----
.. code:: py
from expirecache import Neuron
n = Neuron(
dependency_tree=dependency_tree, # must defined
resolve=resolve,
version=version,
cache=cache,
debug=False)
``expirecache`` could be used either in template file or your python
controller.
`Here <./sample/sample-jinja.html>`__ is a sample Jinja2 template file.
- **dependency\_tree** ``dict`` the ``json.loads()``\ ed dependency
tree
- **resolve** ``function(id)=`` (optional) implements your own custom
resolver. ``resolve`` accepts one parameter ``id`` which can be
either a ``str`` of module id or a ``list`` of module ids. If a
``str`` is passed in, the method should returns the resolved absolute
url of the module id. If ``id`` is a ``list``, an url of comboed
script files should be returned.
- **debug** ``function|bool=False`` tells expirecache whether should
switch on debug mode. When on debug mode, no javascript files of
dependencies will be preloaded, and the output will not be
compressed.
- if ``debug`` is callable, expirecache will use the return value of
method ``debug``
- if ``debug`` is a boolean value, and ``debug`` is true, the debug
mode will be on.
- **cache** ``dict=None`` if ``cache`` is defined, it should contains 3
methods:
- ``cache.has(key)`` returns ``bool``
- ``cache.get(key)`` looks up and returns the cached value by key
- ``cache.set(key, value)`` sets the value by key
- **version** ``str`` only works if ``cache`` is defined. expirecache will
uses ``version`` to generate the key to cache the output result
module id
^^^^^^^^^
.. code:: js
<name>@<version><path> # for example: 'jquery@2.0.0/jquery.js'
n.facade(entry, data=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^
- **entry** ``str`` id of the entry module
Registers a facade entry with ``data``. expirecache will
Returns ``''``\ (empty string), so you can use this method in python
template
n.combo(id...)
^^^^^^^^^^^^^^
Returns ``''``
n.css(id)
^^^^^^^^^
Returns ``''``
n.output()
^^^^^^^^^^
Returns ``str``
n.output\_css()
^^^^^^^^^^^^^^^
Returns ``str``
License
-------
MIT
.. |Build Status| image:: https://travis-ci.org/kaelzhang/python-expirecache.svg?branch=master
:target: https://travis-ci.org/kaelzhang/python-expirecache
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
expirecache-1.0.0.tar.gz
(1.5 kB
view details)
File details
Details for the file expirecache-1.0.0.tar.gz
.
File metadata
- Download URL: expirecache-1.0.0.tar.gz
- Upload date:
- Size: 1.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d2d6ef6c27cfbf9a4df089fae560227e5bcd2b5c90f4acc2bcf7ee66b03768b |
|
MD5 | 1eb47aa2578fd51e82a488de29f64947 |
|
BLAKE2b-256 | cd309406d7e187b13758b6997d0d2d5a43ccc74ad759123dd83e228785bd0eda |