From 14c77760326beb43aa32d53bfca7e8f06f003545 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Fri, 17 Mar 2023 08:26:12 +0100 Subject: [PATCH 1/2] apply code migrations --- manageprojects/__init__.py | 9 ++++--- manageprojects/tests/test_project_setup.py | 31 +++++----------------- pyproject.toml | 12 ++++++--- 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/manageprojects/__init__.py b/manageprojects/__init__.py index 42993b1..6612ea7 100644 --- a/manageprojects/__init__.py +++ b/manageprojects/__init__.py @@ -1,6 +1,7 @@ -"""manageprojects - Manage Python / Django projects""" +""" + manageprojects + Manage Python / Django projects +""" -from importlib.metadata import version - -__version__ = version('manageprojects') +__version__ = '0.9.6' __author__ = 'Jens Diemer ' diff --git a/manageprojects/tests/test_project_setup.py b/manageprojects/tests/test_project_setup.py index ce5c3e6..3ff2fb3 100644 --- a/manageprojects/tests/test_project_setup.py +++ b/manageprojects/tests/test_project_setup.py @@ -1,12 +1,7 @@ import subprocess -from pathlib import Path - -try: - import tomllib # New in Python 3.11 -except ImportError: - import tomli as tomllib from bx_py_utils.path import assert_is_file +from packaging.version import Version from manageprojects import __version__ from manageprojects.cli.cli_app import PACKAGE_ROOT @@ -18,15 +13,10 @@ class ProjectSetupTestCase(BaseTestCase): def test_version(self): - pyproject_toml_path = Path(PACKAGE_ROOT, 'pyproject.toml') - assert_is_file(pyproject_toml_path) - self.assertIsNotNone(__version__) - pyproject_toml = tomllib.loads(pyproject_toml_path.read_text(encoding='UTF-8')) - pyproject_version = pyproject_toml['project']['version'] - - self.assertEqual(__version__, pyproject_version) + version = Version(__version__) # Will raise InvalidVersion() if wrong formatted + self.assertEqual(str(version), __version__) cli_bin = PACKAGE_ROOT / 'cli.py' assert_is_file(cli_bin) @@ -45,16 +35,10 @@ def test_code_style(self): exit_on_error=False, ) except subprocess.CalledProcessError as err: - self.assert_in_content( # darker was called? - got=err.stdout, - parts=('.venv/bin/darker',), - ) + self.assertIn('.venv/bin/darker', err.stdout) # darker was called? else: if 'Code style: OK' in output: - self.assert_in_content( # darker was called? - got=output, - parts=('.venv/bin/darker',), - ) + self.assertIn('.venv/bin/darker', output) # darker was called? return # Nothing to fix -> OK # Try to "auto" fix code style: @@ -68,10 +52,7 @@ def test_code_style(self): except subprocess.CalledProcessError as err: output = err.stdout - self.assert_in_content( # darker was called? - got=output, - parts=('.venv/bin/darker',), - ) + self.assertIn('.venv/bin/darker', output) # darker was called? # Check again and display the output: diff --git a/pyproject.toml b/pyproject.toml index f0dbcc0..52c1870 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "manageprojects" -version = "0.9.6" +dynamic = ["version"] description = "Manage Python / Django projects" readme = "README.md" authors = [ @@ -50,13 +50,16 @@ Source = "https://github.com/jedie/manageprojects" [project.scripts] manageprojects = "manageprojects.__main__:main" +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + [tool.setuptools.packages.find] where = ["."] include = ["manageprojects*"] -[build-system] -requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" +[tool.setuptools.dynamic] +version = {attr = "manageprojects.__version__"} [tool.darker] @@ -151,6 +154,7 @@ applied_migrations = [ "d970456", # 2023-02-20T16:19:35+01:00 "80d0a0c", # 2023-03-06T17:52:14+01:00 "04d5a25", # 2023-03-07T16:25:36+01:00 + "be96b03", # 2023-03-17T08:17:11+01:00 ] [manageprojects.cookiecutter_context.cookiecutter] From aeb91b6f9635d7847a408eff1195d5aab8eb867b Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Mon, 3 Apr 2023 16:23:08 +0200 Subject: [PATCH 2/2] Bugfix reverse command: Optimize replacements Sort reverse info from biggest to smallest one to better replace values with cookiecutter placeholders. --- manageprojects/__init__.py | 2 +- manageprojects/cookiecutter_generator.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manageprojects/__init__.py b/manageprojects/__init__.py index 6612ea7..c89d1ac 100644 --- a/manageprojects/__init__.py +++ b/manageprojects/__init__.py @@ -3,5 +3,5 @@ Manage Python / Django projects """ -__version__ = '0.9.6' +__version__ = '0.9.7' __author__ = 'Jens Diemer ' diff --git a/manageprojects/cookiecutter_generator.py b/manageprojects/cookiecutter_generator.py index fb933b0..69df14f 100644 --- a/manageprojects/cookiecutter_generator.py +++ b/manageprojects/cookiecutter_generator.py @@ -23,7 +23,7 @@ def generate_reverse_info(*, cookiecutter_context: dict) -> tuple: reverse_info = [ (value, '{{ %s }}' % key) for key, value in iter_context(context=cookiecutter_context) ] - reverse_info.sort(key=lambda x: len(x[1])) + reverse_info.sort(key=lambda x: len(x[0]), reverse=True) return tuple(reverse_info)