Skip to content

Commit

Permalink
Merge pull request #19 from Capitains/documentation
Browse files Browse the repository at this point in the history
Release 0.0.3
  • Loading branch information
PonteIneptique committed Apr 15, 2016
2 parents b26a1ea + 5e412da commit 144a217
Show file tree
Hide file tree
Showing 26 changed files with 1,112 additions and 123 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
.idea
env
*.rdb
*.autosave

cache_dir
benchmarking/node_modules
Expand Down
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ install:

# command to run tests
script:
- coverage run --source=nautilus setup.py test
- coverage run --source=capitains_nautilus setup.py test

after_success:
- if [[ $TRAVIS_PYTHON_VERSION == 3* ]]; then coveralls; fi

branches:
only:
- master
- documentation
3 changes: 2 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ Capitains Nautilus
:target: https://coveralls.io/github/Capitains/Nautilus?branch=master
.. image:: https://travis-ci.org/Capitains/Nautilus.svg?branch=master
:target: https://travis-ci.org/Capitains/Nautilus

.. image:: https://api.codacy.com/project/badge/grade/c76dc6ce6b324246927a49adf7e7fa46
:target: https://www.codacy.com/app/leponteineptique/Nautilus
Documentation
#############

Expand Down
2 changes: 1 addition & 1 deletion capitains_nautilus/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ def _cache_key(*args):
:param args:
:return:
"""
return "_".join(map(lambda x: str(x), args))
return "_".join(map(str, args))
142 changes: 142 additions & 0 deletions capitains_nautilus/cache.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals


class BaseCache(object):
""" Based on the `werkzeug.contrib.cache.BaseCache <https://github.com/pallets/werkzeug/blob/master/werkzeug/contrib/cache.py>`_ object. Provides a wrapper for other cache system in the future.
:param default_timeout: the default timeout (in seconds) that is used if no timeout is specified on :meth:`set`. A timeout of 0 indicates that the cache never expires.
"""
def __init__(self, default_timeout=300):
self.default_timeout = default_timeout

def get(self, key):
"""Look up key in the cache and return the value for it.
:param key: the key to be looked up.
:returns: The value if it exists and is readable, else ``None``.
"""
return None

def delete(self, key):
"""Delete `key` from the cache.
:param key: the key to delete.
:returns: Whether the key existed and has been deleted.
:rtype: boolean
"""
return True

def get_many(self, *keys):
"""Returns a list of values for the given keys.
For each key a item in the list is created::
foo, bar = cache.get_many("foo", "bar")
Has the same error handling as :meth:`get`.
:param keys: The function accepts multiple keys as positional
arguments.
"""
return map(self.get, keys)

def get_dict(self, *keys):
"""Like :meth:`get_many` but return a dict::
d = cache.get_dict("foo", "bar")
foo = d["foo"]
bar = d["bar"]
:param keys: The function accepts multiple keys as positional
arguments.
"""
return dict(zip(keys, self.get_many(*keys)))

def set(self, key, value, timeout=None):
"""Add a new key/value to the cache (overwrites value, if key already
exists in the cache).
:param key: the key to set
:param value: the value for the key
:param timeout: the cache timeout for the key in seconds (if not
specified, it uses the default timeout). A timeout of
0 idicates that the cache never expires.
:returns: ``True`` if key has been updated, ``False`` for backend
errors. Pickling errors, however, will raise a subclass of
``pickle.PickleError``.
:rtype: boolean
"""
return True

def add(self, key, value, timeout=None):
"""Works like :meth:`set` but does not overwrite the values of already
existing keys.
:param key: the key to set
:param value: the value for the key
:param timeout: the cache timeout for the key in seconds (if not
specified, it uses the default timeout). A timeout of
0 idicates that the cache never expires.
:returns: Same as :meth:`set`, but also ``False`` for already
existing keys.
:rtype: boolean
"""
return True

def set_many(self, mapping, timeout=None):
"""Sets multiple keys and values from a mapping.
:param mapping: a mapping with the keys/values to set.
:param timeout: the cache timeout for the key in seconds (if not
specified, it uses the default timeout). A timeout of
0 idicates that the cache never expires.
:returns: Whether all given keys have been set.
:rtype: boolean
"""
rv = True
for key, value in mapping:
if not self.set(key, value, timeout):
rv = False
return rv

def delete_many(self, *keys):
"""Deletes multiple keys at once.
:param keys: The function accepts multiple keys as positional
arguments.
:returns: Whether all given keys have been deleted.
:rtype: boolean
"""
return all(self.delete(key) for key in keys)

def has(self, key):
"""Checks if a key exists in the cache without returning it. This is a
cheap operation that bypasses loading the actual data on the backend.
This method is optional and may not be implemented on all caches.
:param key: the key to check
"""
raise NotImplementedError(
'%s doesn\'t have an efficient implementation of `has`. That '
'means it is impossible to check whether a key exists without '
'fully loading the key\'s data. Consider using `self.get` '
'explicitly if you don\'t care about performance.'
)

def clear(self):
"""Clears the cache. Keep in mind that not all caches support
completely clearing the cache.
:returns: Whether the cache has been cleared.
:rtype: boolean
"""
return True

def inc(self, key, delta=1):
"""Increments the value of a key by `delta`. If the key does
not yet exist it is initialized with `delta`.
For supporting caches this is an atomic operation.
:param key: the key to increment.
:param delta: the delta to add.
:returns: The new value or ``None`` for backend errors.
"""
value = (self.get(key) or 0) + delta
return value if self.set(key, value) else None

def dec(self, key, delta=1):
"""Decrements the value of a key by `delta`. If the key does
not yet exist it is initialized with `-delta`.
For supporting caches this is an atomic operation.
:param key: the key to increment.
:param delta: the delta to subtract.
:returns: The new value or `None` for backend errors.
"""
value = (self.get(key) or 0) - delta
return value if self.set(key, value) else None
4 changes: 3 additions & 1 deletion capitains_nautilus/cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,15 @@ def _commandline(repositories,
app = Flask("Nautilus")
if debug:
app.logger.setLevel(logging.INFO)
nautilus = FlaskNautilus(

FlaskNautilus(
app=app,
resources=repositories,
parser_cache=nautilus_cache,
http_cache=Cache(config={'CACHE_TYPE': cache_type}),
logger=None
)

if debug:
app.run(debug=debug, port=port, host=host)
else:
Expand Down
2 changes: 1 addition & 1 deletion capitains_nautilus/errors.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from six import text_type as str


class CTSError(BaseException):
CODE = None
Expand Down
Loading

0 comments on commit 144a217

Please sign in to comment.