diff --git a/pyproject.toml b/pyproject.toml
index 354f492f6..acea91b84 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,15 +4,13 @@ build-backend = "hatchling.build"
[project]
name = "wger"
-version = "2.3.0b1"
-# dynamic = ["version", "dependencies"]
-dynamic = ["dependencies"]
+dynamic = ["version", "dependencies"]
authors = [
{ name = "Roland Geider", email = "roland@geider.net" },
]
description = "FLOSS workout, fitness and weight manager/tracker"
readme = "README.md"
-requires-python = ">=3.9"
+requires-python = ">=3.10"
classifiers = [
# http://pypi.python.org/pypi?%3Aaction=list_classifiers
'Development Status :: 5 - Production/Stable',
@@ -30,10 +28,11 @@ classifiers = [
[project.urls]
Homepage = "https://wger.de/"
-Documentation = "https://wger.readthedocs.io/en/latest/"
+Documentation = "https://wger.readthedocs.io"
Repository = "https://github.com/wger-project/wger"
Issues = "https://github.com/wger-project/wger/issues"
Changelog = "https://wger.readthedocs.io/en/latest/changelog.html"
+Funding = "https://buymeacoffee.com/wger"
[project.scripts]
wger = "wger.__main__:main"
@@ -48,10 +47,10 @@ dependencies = { file = ["requirements.txt"] }
[tool.distutils.bdist_wheel]
universal = 1
-# [tool.hatch.version]
-# source = "code"
-# path = "wger/__init__.py"
-# expression = "get_version()"
+[tool.hatch.version]
+source = "code"
+path = "wger/version.py"
+expression = "get_version()"
[tool.ruff]
diff --git a/wger/__init__.py b/wger/__init__.py
index 48483331b..c59d1532c 100644
--- a/wger/__init__.py
+++ b/wger/__init__.py
@@ -12,25 +12,6 @@
#
# You should have received a copy of the GNU Affero General Public License
-# Third Party
-from packaging.version import Version
# wger
from wger.celery_configuration import app
-
-
-MIN_APP_VERSION = Version('1.8.0')
-"""Minimum version of the mobile app required to access this server"""
-
-MIN_SERVER_VERSION = Version('2.3.0beta1')
-"""Minimum version of the server required to run sync commands on this server"""
-
-VERSION = Version('2.3.0beta1')
-"""Current version of the app"""
-
-
-def get_version(version: Version = None) -> str:
- if version is None:
- version = VERSION
-
- return str(version)
diff --git a/wger/config/__init__.py b/wger/config/__init__.py
index 97c167829..fda2db619 100644
--- a/wger/config/__init__.py
+++ b/wger/config/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/core/__init__.py b/wger/core/__init__.py
index 2a5851ace..4627cb08d 100644
--- a/wger/core/__init__.py
+++ b/wger/core/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/core/api/min_server_version.py b/wger/core/api/min_server_version.py
index 89b818536..f55d412b0 100644
--- a/wger/core/api/min_server_version.py
+++ b/wger/core/api/min_server_version.py
@@ -20,9 +20,9 @@ import requests
from packaging.version import parse
# wger
-from wger import VERSION
from wger.core.api.endpoints import MIN_SERVER_VERSION_ENDPOINT
from wger.utils.url import make_uri
+from wger.version import VERSION
def check_min_server_version(remote_url):
diff --git a/wger/core/api/views.py b/wger/core/api/views.py
index 1edc37bb7..597c3da6b 100644
--- a/wger/core/api/views.py
+++ b/wger/core/api/views.py
@@ -49,11 +49,6 @@ from rest_framework.permissions import (
from rest_framework.response import Response
# wger
-from wger import (
- MIN_APP_VERSION,
- MIN_SERVER_VERSION,
- get_version,
-)
from wger.core.api.serializers import (
LanguageSerializer,
LicenseSerializer,
@@ -73,6 +68,11 @@ from wger.core.models import (
)
from wger.utils.api_token import create_token
from wger.utils.permissions import WgerPermission
+from wger.version import (
+ MIN_APP_VERSION,
+ MIN_SERVER_VERSION,
+ get_version,
+)
logger = logging.getLogger(__name__)
diff --git a/wger/core/tests/test_check_min_server_version.py b/wger/core/tests/test_check_min_server_version.py
index 4ab45e008..ab0e505a7 100644
--- a/wger/core/tests/test_check_min_server_version.py
+++ b/wger/core/tests/test_check_min_server_version.py
@@ -26,8 +26,8 @@ from django.core.management import CommandError
from packaging.version import Version
# wger
-from wger import VERSION
from wger.core.api.min_server_version import check_min_server_version
+from wger.version import VERSION
class TestCheckMinServerVersion(unittest.TestCase):
diff --git a/wger/exercises/__init__.py b/wger/exercises/__init__.py
index e6febe2be..4860bf45a 100644
--- a/wger/exercises/__init__.py
+++ b/wger/exercises/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/gallery/__init__.py b/wger/gallery/__init__.py
index 7ad2fb243..7e312f5ed 100644
--- a/wger/gallery/__init__.py
+++ b/wger/gallery/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/gym/__init__.py b/wger/gym/__init__.py
index 869912bd4..2fb5d1fba 100644
--- a/wger/gym/__init__.py
+++ b/wger/gym/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/mailer/__init__.py b/wger/mailer/__init__.py
index 816f195e4..8657bdae1 100644
--- a/wger/mailer/__init__.py
+++ b/wger/mailer/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/manager/__init__.py b/wger/manager/__init__.py
index b2fcf3c3f..de401f1fb 100644
--- a/wger/manager/__init__.py
+++ b/wger/manager/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/manager/api/views.py b/wger/manager/api/views.py
index 4c30c40c8..022210f4c 100644
--- a/wger/manager/api/views.py
+++ b/wger/manager/api/views.py
@@ -127,7 +127,6 @@ class RoutineViewSet(viewsets.ModelViewSet):
out = WorkoutDayDataDisplayModeSerializer(
self.get_object().date_sequence,
- # generate_sequence(self.get_object()),
many=True,
).data
cache.set(cache_key, out, settings.WGER_SETTINGS['ROUTINE_CACHE_TTL'])
diff --git a/wger/manager/tests/__init__.py b/wger/manager/tests/__init__.py
index 7d1f90ca0..375cec210 100644
--- a/wger/manager/tests/__init__.py
+++ b/wger/manager/tests/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/manager/views/ical.py b/wger/manager/views/ical.py
index 5a94c04a0..724f9a9f0 100644
--- a/wger/manager/views/ical.py
+++ b/wger/manager/views/ical.py
@@ -33,8 +33,8 @@ from icalendar import (
from icalendar.tools import UIDGenerator
# wger
-from wger import get_version
from wger.manager.models import Routine
+from wger.version import get_version
logger = logging.getLogger(__name__)
diff --git a/wger/measurements/__init__.py b/wger/measurements/__init__.py
index d6331e676..1b3ff6ea0 100644
--- a/wger/measurements/__init__.py
+++ b/wger/measurements/__init__.py
@@ -1,5 +1,5 @@
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/nutrition/__init__.py b/wger/nutrition/__init__.py
index 71ac8ffd3..a631c8405 100644
--- a/wger/nutrition/__init__.py
+++ b/wger/nutrition/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/settings_global.py b/wger/settings_global.py
index 9bda81f43..52b897207 100644
--- a/wger/settings_global.py
+++ b/wger/settings_global.py
@@ -20,8 +20,8 @@ import sys
from datetime import timedelta
# wger
-from wger import get_version
from wger.utils.constants import DOWNLOAD_INGREDIENT_WGER
+from wger.version import get_version
"""
diff --git a/wger/software/__init__.py b/wger/software/__init__.py
index 7d1f90ca0..375cec210 100644
--- a/wger/software/__init__.py
+++ b/wger/software/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/software/urls.py b/wger/software/urls.py
index ea8e0207a..303f841c4 100644
--- a/wger/software/urls.py
+++ b/wger/software/urls.py
@@ -22,8 +22,8 @@ from django.views.generic import (
)
# wger
-from wger import get_version
from wger.software import views
+from wger.version import get_version
urlpatterns = [
diff --git a/wger/utils/__init__.py b/wger/utils/__init__.py
index 7d1f90ca0..375cec210 100644
--- a/wger/utils/__init__.py
+++ b/wger/utils/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()
diff --git a/wger/utils/pdf.py b/wger/utils/pdf.py
index d32ce9e0e..74d6d4646 100644
--- a/wger/utils/pdf.py
+++ b/wger/utils/pdf.py
@@ -38,8 +38,8 @@ from reportlab.platypus import (
)
# wger
-from wger import get_version
from wger.core.models import Language
+from wger.version import get_version
# ************************
diff --git a/wger/utils/requests.py b/wger/utils/requests.py
index aec1fd6f6..11859da5d 100644
--- a/wger/utils/requests.py
+++ b/wger/utils/requests.py
@@ -16,7 +16,7 @@
import requests
# wger
-from wger import get_version
+from wger.version import get_version
def wger_user_agent():
diff --git a/wger/version.py b/wger/version.py
new file mode 100644
index 000000000..69424eb50
--- /dev/null
+++ b/wger/version.py
@@ -0,0 +1,43 @@
+# This file is part of wger Workout Manager.
+#
+# wger Workout Manager is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# wger Workout Manager is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+
+# Standard Library
+import logging
+import subprocess
+
+# Third Party
+from packaging.version import Version
+
+
+logger = logging.getLogger(__name__)
+
+MIN_APP_VERSION = Version('1.8.0')
+"""
+Minimum version of the mobile app required to access this server.
+
+Always use versions in the x.y.z format, without any suffixes like "beta1" or such.
+"""
+
+MIN_SERVER_VERSION = Version(f'2.3.0beta2')
+"""Minimum version of the server required to run sync commands on this server"""
+
+VERSION = Version(f'2.3.0beta2')
+"""Current version of the app"""
+
+
+def get_version(version: Version = None) -> str:
+ if version is None:
+ version = VERSION
+
+ return str(version)
diff --git a/wger/weight/__init__.py b/wger/weight/__init__.py
index 7d1f90ca0..375cec210 100644
--- a/wger/weight/__init__.py
+++ b/wger/weight/__init__.py
@@ -16,7 +16,7 @@
# along with Workout Manager. If not, see .
# wger
-from wger import get_version
+from wger.version import get_version
VERSION = get_version()