Skip to content

Commit 645fc33

Browse files
Remove dependency to functools32
1 parent 76a4e6e commit 645fc33

File tree

6 files changed

+39
-5
lines changed

6 files changed

+39
-5
lines changed

flask_apidoc/apidoc.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
import mimetypes
1717

1818
from flask import request
19-
from functools32 import lru_cache
2019
from os.path import join, getmtime, getsize
2120
from werkzeug.datastructures import Headers
21+
from .utils import cached
2222

2323

2424
class ApiDoc(object):
@@ -84,7 +84,7 @@ def __send_static_file(self, path=None):
8484
# Any other apidoc file is treated as a normal static file
8585
return self.app.send_static_file(file_name)
8686

87-
@lru_cache(maxsize=None)
87+
@cached
8888
def __send_api_file(self, file_name):
8989
"""
9090
Sends apidoc files from the apidoc folder to the browser.
@@ -121,7 +121,7 @@ def __send_api_file(self, file_name):
121121

122122
return response
123123

124-
@lru_cache(maxsize=None)
124+
@cached
125125
def __read_api_project(self):
126126
"""
127127
Reads the api_project.json file from apidoc folder as a json string.

flask_apidoc/utils.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""
2+
Helpers.
3+
"""
4+
5+
6+
def cached(f):
7+
"""
8+
Cache decorator for functions taking one or more arguments.
9+
:param f: The function to be cached.
10+
:return: The cached value.
11+
"""
12+
class CachedDict(dict):
13+
def __init__(self, f):
14+
self.f = f
15+
16+
def __call__(self, *args):
17+
return self[args]
18+
19+
def __missing__(self, key):
20+
ret = self[key] = self.f(*key)
21+
return ret
22+
23+
return CachedDict(f)

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
flask>=0.10.1
22
flask_script>=2.0.5
3-
functools32==3.2.3.post2

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
'Natural Language :: English',
1818
'Operating System :: OS Independent',
1919
'Programming Language :: Python',
20-
'Programming Language :: Python :: 2.7',
20+
'Programming Language :: Python :: 2.7',
2121
'Programming Language :: Python :: 3',
2222
'Programming Language :: Python :: 3.2',
2323
'Programming Language :: Python :: 3.3',

tests/__init__.py

Whitespace-only changes.

tests/test_utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from unittest import TestCase
2+
from flask_apidoc.utils import cached
3+
4+
5+
class TestUtils(TestCase):
6+
def test_cache(self):
7+
@cached
8+
def f(a, b):
9+
return object()
10+
11+
self.assertEqual(f(1, 2), f(1, 2))
12+
self.assertNotEqual(f(1, 2), f(1, 3))

0 commit comments

Comments
 (0)