diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c4f50d..ee32008 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,15 +5,6 @@ All notable changes to WuttJamaican will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## v0.16.1 (2024-12-05) - -### Fix - -- add `db.util.make_topo_sortkey()` function -- use true UUID type for Upgrades table primary key -- let caller set data type for `uuid_column()` and `uuid_fk_column()` -- avoid error when loading installer templates - ## v0.16.0 (2024-11-30) ### Feat diff --git a/docs/narr/install/quickstart.rst b/docs/narr/install/quickstart.rst index 84a491d..0fea804 100644 --- a/docs/narr/install/quickstart.rst +++ b/docs/narr/install/quickstart.rst @@ -22,39 +22,35 @@ Make a parent folder for all source code: mkdir -p ~/src -Make and activate a new :term:`virtual environment` for your project: +Make a :term:`virtual environment` for your project: .. code-block:: sh cd /path/to/envs python3 -m venv poser - source poser/bin/activate Make a new e.g. ``poser`` database in PostgreSQL (or MySQL). -Install and run `cookiecutter `_ -with `wuttaweb template -`_: +Install and run cookiecutter with wuttaweb template: .. code-block:: sh - pip install cookiecutter - cookiecutter -o ~/src git+https://forgejo.wuttaproject.org/wutta/cookiecutter-wuttaweb + cd /path/to/envs/poser + bin/pip install cookiecutter + bin/cookiecutter -o ~/src git+https://forgejo.wuttaproject.org/wutta/cookiecutter-wuttaweb Assuming you now have project code at ``~/src/poser`` then install -that and run the app installer. Note the 2nd command name will depend -on your project: +that and run the app installer: .. code-block:: sh - pip install -e ~/src/poser - poser install + bin/pip install -e ~/src/poser + bin/poser install If all goes well, you can run the web app with: .. code-block:: sh - cd /path/to/envs/poser bin/pserve --reload file+ini:app/web.conf And browse it at http://localhost:9080 diff --git a/pyproject.toml b/pyproject.toml index d9c0ce8..96ce552 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,10 +6,10 @@ build-backend = "hatchling.build" [project] name = "WuttJamaican" -version = "0.16.1" +version = "0.16.0" description = "Base package for Wutta Framework" readme = "README.md" -authors = [{name = "Lance Edgar", email = "lance@wuttaproject.org"}] +authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] license = {text = "GNU GPL v3+"} classifiers = [ "Development Status :: 4 - Beta", @@ -49,7 +49,6 @@ wutta = "wuttjamaican.cli:wutta_typer" [project.urls] Homepage = "https://wuttaproject.org/" Repository = "https://forgejo.wuttaproject.org/wutta/wuttjamaican" -Issues = "https://forgejo.wuttaproject.org/wutta/wuttjamaican/issues" Changelog = "https://forgejo.wuttaproject.org/wutta/wuttjamaican/src/branch/master/CHANGELOG.md" diff --git a/src/wuttjamaican/db/util.py b/src/wuttjamaican/db/util.py index 643e267..0df0e68 100644 --- a/src/wuttjamaican/db/util.py +++ b/src/wuttjamaican/db/util.py @@ -27,7 +27,6 @@ Database Utilities import uuid as _uuid import sqlalchemy as sa -from sqlalchemy import orm from sqlalchemy.dialects.postgresql import UUID as PGUUID from wuttjamaican.util import make_uuid @@ -128,26 +127,3 @@ def uuid_fk_column(target_column, *args, **kwargs): if not args: args = (sa.String(length=32), sa.ForeignKey(target_column)) return sa.Column(*args, **kwargs) - - -def make_topo_sortkey(model): - """ - Returns a function suitable for use as a ``key`` kwarg to a - standard Python sorting call. This key function will expect a - single class mapper and return a sequence number associated with - that model. The sequence is determined by SQLAlchemy's - topological table sorting. - - :param model: Usually the :term:`app model`, but can be any module - containing model classes. - """ - metadata = model.Base.metadata - tables = dict([(table.name, i) - for i, table in enumerate(metadata.sorted_tables, 1)]) - - def sortkey(name): - cls = getattr(model, name) - mapper = orm.class_mapper(cls) - return tuple(tables[t.name] for t in mapper.tables) - - return sortkey diff --git a/tests/db/test_util.py b/tests/db/test_util.py index 8ffef76..2f0c9ed 100644 --- a/tests/db/test_util.py +++ b/tests/db/test_util.py @@ -11,7 +11,6 @@ try: from wuttjamaican.db import util as mod from wuttjamaican.db.model.base import Setting from wuttjamaican.util import make_true_uuid - from wuttjamaican.testing import DataTestCase except ImportError: pass else: @@ -125,17 +124,3 @@ else: self.assertIsInstance(column, sa.Column) self.assertIsInstance(column.type, sa.String) self.assertEqual(column.type.length, 32) - - - class TestMakeTopoSortkey(DataTestCase): - - def test_basic(self): - model = self.app.model - sortkey = mod.make_topo_sortkey(model) - original = ['User', 'Person', 'UserRole', 'Role'] - - # models are sorted so dependants come later - result = sorted(original, key=sortkey) - self.assertTrue(result.index('Role') < result.index('UserRole')) - self.assertTrue(result.index('User') < result.index('UserRole')) - self.assertTrue(result.index('Person') < result.index('User'))