Change PyMemoize to django-cache-memoize
This allows to support python 3.10
This commit is contained in:
parent
8b77f5e89f
commit
67b970f3f8
|
@ -1,4 +1,4 @@
|
||||||
import memoize.djangocache
|
from cache_memoize import cache_memoize
|
||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
|
@ -11,9 +11,6 @@ from funkwhale_api.music import utils as music_utils
|
||||||
|
|
||||||
from . import stats
|
from . import stats
|
||||||
|
|
||||||
store = memoize.djangocache.Cache("default")
|
|
||||||
memo = memoize.Memoizer(store, namespace="instance:stats")
|
|
||||||
|
|
||||||
|
|
||||||
def get():
|
def get():
|
||||||
all_preferences = preferences.all()
|
all_preferences = preferences.all()
|
||||||
|
@ -72,7 +69,7 @@ def get():
|
||||||
}
|
}
|
||||||
|
|
||||||
if share_stats:
|
if share_stats:
|
||||||
getter = memo(lambda: stats.get(), max_age=600)
|
getter = cache_memoize(600, prefix="memoize:instance:stats")(stats.get)
|
||||||
statistics = getter()
|
statistics = getter()
|
||||||
data["usage"]["users"]["total"] = statistics["users"]["total"]
|
data["usage"]["users"]["total"] = statistics["users"]["total"]
|
||||||
data["usage"]["users"]["activeHalfyear"] = statistics["users"][
|
data["usage"]["users"]["activeHalfyear"] = statistics["users"][
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import memoize.djangocache
|
|
||||||
import musicbrainzngs
|
import musicbrainzngs
|
||||||
|
from cache_memoize import cache_memoize
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from funkwhale_api import __version__
|
from funkwhale_api import __version__
|
||||||
|
@ -9,10 +9,6 @@ _api.set_useragent("funkwhale", str(__version__), settings.FUNKWHALE_URL)
|
||||||
_api.set_hostname(settings.MUSICBRAINZ_HOSTNAME)
|
_api.set_hostname(settings.MUSICBRAINZ_HOSTNAME)
|
||||||
|
|
||||||
|
|
||||||
store = memoize.djangocache.Cache("default")
|
|
||||||
memo = memoize.Memoizer(store, namespace="memoize:musicbrainz")
|
|
||||||
|
|
||||||
|
|
||||||
def clean_artist_search(query, **kwargs):
|
def clean_artist_search(query, **kwargs):
|
||||||
cleaned_kwargs = {}
|
cleaned_kwargs = {}
|
||||||
if kwargs.get("name"):
|
if kwargs.get("name"):
|
||||||
|
@ -24,38 +20,59 @@ class API(object):
|
||||||
_api = _api
|
_api = _api
|
||||||
|
|
||||||
class artists(object):
|
class artists(object):
|
||||||
search = memo(clean_artist_search, max_age=settings.MUSICBRAINZ_CACHE_DURATION)
|
search = cache_memoize(
|
||||||
get = memo(_api.get_artist_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION)
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
|
prefix="memoize:musicbrainz:clean_artist_search",
|
||||||
|
)(clean_artist_search)
|
||||||
|
get = cache_memoize(
|
||||||
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
|
prefix="memoize:musicbrainz:get_artist_by_id",
|
||||||
|
)(_api.get_artist_by_id)
|
||||||
|
|
||||||
class images(object):
|
class images(object):
|
||||||
get_front = memo(
|
get_front = cache_memoize(
|
||||||
_api.get_image_front, max_age=settings.MUSICBRAINZ_CACHE_DURATION
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
)
|
prefix="memoize:musicbrainz:get_image_front",
|
||||||
|
)(_api.get_image_front)
|
||||||
|
|
||||||
class recordings(object):
|
class recordings(object):
|
||||||
search = memo(
|
search = cache_memoize(
|
||||||
_api.search_recordings, max_age=settings.MUSICBRAINZ_CACHE_DURATION
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
)
|
prefix="memoize:musicbrainz:search_recordings",
|
||||||
get = memo(
|
)(_api.search_recordings)
|
||||||
_api.get_recording_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION
|
get = cache_memoize(
|
||||||
)
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
|
prefix="memoize:musicbrainz:get_recording_by_id",
|
||||||
|
)(_api.get_recording_by_id)
|
||||||
|
|
||||||
class releases(object):
|
class releases(object):
|
||||||
search = memo(_api.search_releases, max_age=settings.MUSICBRAINZ_CACHE_DURATION)
|
search = cache_memoize(
|
||||||
get = memo(_api.get_release_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION)
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
browse = memo(_api.browse_releases, max_age=settings.MUSICBRAINZ_CACHE_DURATION)
|
prefix="memoize:musicbrainz:search_releases",
|
||||||
|
)(_api.search_releases)
|
||||||
|
get = cache_memoize(
|
||||||
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
|
prefix="memoize:musicbrainz:get_release_by_id",
|
||||||
|
)(_api.get_release_by_id)
|
||||||
|
browse = cache_memoize(
|
||||||
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
|
prefix="memoize:musicbrainz:browse_releases",
|
||||||
|
)(_api.browse_releases)
|
||||||
# get_image_front = _api.get_image_front
|
# get_image_front = _api.get_image_front
|
||||||
|
|
||||||
class release_groups(object):
|
class release_groups(object):
|
||||||
search = memo(
|
search = cache_memoize(
|
||||||
_api.search_release_groups, max_age=settings.MUSICBRAINZ_CACHE_DURATION
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
)
|
prefix="memoize:musicbrainz:search_release_groups",
|
||||||
get = memo(
|
)(_api.search_release_groups)
|
||||||
_api.get_release_group_by_id, max_age=settings.MUSICBRAINZ_CACHE_DURATION
|
get = cache_memoize(
|
||||||
)
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
browse = memo(
|
prefix="memoize:musicbrainz:get_release_group_by_id",
|
||||||
_api.browse_release_groups, max_age=settings.MUSICBRAINZ_CACHE_DURATION
|
)(_api.get_release_group_by_id)
|
||||||
)
|
browse = cache_memoize(
|
||||||
|
settings.MUSICBRAINZ_CACHE_DURATION,
|
||||||
|
prefix="memoize:musicbrainz:browse_release_groups",
|
||||||
|
)(_api.browse_release_groups)
|
||||||
# get_image_front = _api.get_image_front
|
# get_image_front = _api.get_image_front
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -583,6 +583,17 @@ python-versions = ">=3.6"
|
||||||
Django = ">=2.2"
|
Django = ">=2.2"
|
||||||
python-ldap = ">=3.1"
|
python-ldap = ">=3.1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "django-cache-memoize"
|
||||||
|
version = "0.1.10"
|
||||||
|
description = "Django utility for a memoization decorator that uses the Django cache framework."
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.5"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
dev = ["flake8", "tox", "twine", "therapist", "black"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-cacheops"
|
name = "django-cacheops"
|
||||||
version = "6.0"
|
version = "6.0"
|
||||||
|
@ -1419,14 +1430,6 @@ cachetools = ["cachetools"]
|
||||||
frozendict = ["frozendict"]
|
frozendict = ["frozendict"]
|
||||||
requests = ["requests"]
|
requests = ["requests"]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pymemoize"
|
|
||||||
version = "1.0.3"
|
|
||||||
description = "Simple memoizing module."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = "*"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pyopenssl"
|
name = "pyopenssl"
|
||||||
version = "21.0.0"
|
version = "21.0.0"
|
||||||
|
@ -2085,7 +2088,7 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = "^3.7"
|
python-versions = "^3.7"
|
||||||
content-hash = "ca5f7edc67e0b0c9feeb5b24a24fa74517bced0bd4c52d663e62987a63cabb7c"
|
content-hash = "795509eb06dc1c88a068fc192ab5c503fd20c23a807c3a783383384defacd1e9"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
aiohttp = [
|
aiohttp = [
|
||||||
|
@ -2454,6 +2457,10 @@ django-auth-ldap = [
|
||||||
{file = "django-auth-ldap-4.0.0.tar.gz", hash = "sha256:276f79e624ce083ce13f161387f65ff1c0efe83ef8a42f2b9830d43317b15239"},
|
{file = "django-auth-ldap-4.0.0.tar.gz", hash = "sha256:276f79e624ce083ce13f161387f65ff1c0efe83ef8a42f2b9830d43317b15239"},
|
||||||
{file = "django_auth_ldap-4.0.0-py3-none-any.whl", hash = "sha256:94119c94981809124d3dc4bed974f71c7a980666896df626f556a88a5fe0b59c"},
|
{file = "django_auth_ldap-4.0.0-py3-none-any.whl", hash = "sha256:94119c94981809124d3dc4bed974f71c7a980666896df626f556a88a5fe0b59c"},
|
||||||
]
|
]
|
||||||
|
django-cache-memoize = [
|
||||||
|
{file = "django-cache-memoize-0.1.10.tar.gz", hash = "sha256:63e8faa245a41c0dbad843807e9f21a6e59eba8e6e50df310fdf6485a6749843"},
|
||||||
|
{file = "django_cache_memoize-0.1.10-py3-none-any.whl", hash = "sha256:676299313079cde9242ae84db0160e80b1d44e8dd6bc9b1f4f1247e11b30c9e0"},
|
||||||
|
]
|
||||||
django-cacheops = [
|
django-cacheops = [
|
||||||
{file = "django-cacheops-6.0.tar.gz", hash = "sha256:78e161ebd96a32e28e19ec7da31f2afed9e62a79726b8b5f0ed12dd16c2e5841"},
|
{file = "django-cacheops-6.0.tar.gz", hash = "sha256:78e161ebd96a32e28e19ec7da31f2afed9e62a79726b8b5f0ed12dd16c2e5841"},
|
||||||
{file = "django_cacheops-6.0-py2.py3-none-any.whl", hash = "sha256:ee38b969c9fc68f7c88e769b6c811e19563cca1ae08210d9f553ff758b6c3e17"},
|
{file = "django_cacheops-6.0-py2.py3-none-any.whl", hash = "sha256:ee38b969c9fc68f7c88e769b6c811e19563cca1ae08210d9f553ff758b6c3e17"},
|
||||||
|
@ -3078,9 +3085,6 @@ pygments = [
|
||||||
pyld = [
|
pyld = [
|
||||||
{file = "PyLD-2.0.3.tar.gz", hash = "sha256:287445f888c3a332ccbd20a14844c66c2fcbaeab3c99acd506a0788e2ebb2f82"},
|
{file = "PyLD-2.0.3.tar.gz", hash = "sha256:287445f888c3a332ccbd20a14844c66c2fcbaeab3c99acd506a0788e2ebb2f82"},
|
||||||
]
|
]
|
||||||
pymemoize = [
|
|
||||||
{file = "PyMemoize-1.0.3.tar.gz", hash = "sha256:07c7b8f592b1f03af74289ef0e554520022dae378ba36d0dbc1f80532130197b"},
|
|
||||||
]
|
|
||||||
pyopenssl = [
|
pyopenssl = [
|
||||||
{file = "pyOpenSSL-21.0.0-py2.py3-none-any.whl", hash = "sha256:8935bd4920ab9abfebb07c41a4f58296407ed77f04bd1a92914044b848ba1ed6"},
|
{file = "pyOpenSSL-21.0.0-py2.py3-none-any.whl", hash = "sha256:8935bd4920ab9abfebb07c41a4f58296407ed77f04bd1a92914044b848ba1ed6"},
|
||||||
{file = "pyOpenSSL-21.0.0.tar.gz", hash = "sha256:5e2d8c5e46d0d865ae933bef5230090bdaf5506281e9eec60fa250ee80600cb3"},
|
{file = "pyOpenSSL-21.0.0.tar.gz", hash = "sha256:5e2d8c5e46d0d865ae933bef5230090bdaf5506281e9eec60fa250ee80600cb3"},
|
||||||
|
|
|
@ -27,7 +27,6 @@ django-versatileimagefield = "==2.2"
|
||||||
django-filter = "==21.1"
|
django-filter = "==21.1"
|
||||||
django-rest-auth = "==0.9.5"
|
django-rest-auth = "==0.9.5"
|
||||||
mutagen = "==1.45.1"
|
mutagen = "==1.45.1"
|
||||||
PyMemoize = "==1.0.3"
|
|
||||||
django-dynamic-preferences = "==1.11.0"
|
django-dynamic-preferences = "==1.11.0"
|
||||||
python-magic = "==0.4.25"
|
python-magic = "==0.4.25"
|
||||||
channels = "==3.0.4"
|
channels = "==3.0.4"
|
||||||
|
@ -57,6 +56,7 @@ ipython = "==7.31.1"
|
||||||
python-ldap = "==3.4.0"
|
python-ldap = "==3.4.0"
|
||||||
django-auth-ldap = "==4.0.0"
|
django-auth-ldap = "==4.0.0"
|
||||||
uvicorn = {version = "==0.17.4", extras = ["standard"]}
|
uvicorn = {version = "==0.17.4", extras = ["standard"]}
|
||||||
|
django-cache-memoize = "^0.1.10"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
flake8 = "==3.9.2"
|
flake8 = "==3.9.2"
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Change unmaintained PyMemoize library to django-cache-memoize
|
||||||
|
to enable Python 3.10 support
|
Loading…
Reference in New Issue