diff --git a/.gitignore b/.gitignore index 46993f4..89b3100 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ +*~ +*.pyc +dist/ rattail_nationbuilder.egg-info/ diff --git a/CHANGELOG.md b/CHANGELOG.md index fb8fedf..1df7dfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,41 @@ All notable changes to rattail-nationbuilder 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.3.4 (2024-08-19) + +### Fix + +- avoid deprecated method in app provider +- avoid deprecated base class for config extension + +## v0.3.3 (2024-08-19) + +### Fix + +- avoid deprecated import for `parse_list()` + +## v0.3.2 (2024-08-13) + +### Fix + +- update app provider entry point, per wuttjamaican + +## v0.3.1 (2024-07-01) + +### Fix + +- remove legacy command definitions + +## v0.3.0 (2024-06-10) + +### Feat + +- switch from setup.cfg to pyproject.toml + hatchling + +## [0.2.0] - 2024-05-29 +### Changed +- Migrate all commands to use `typer`. + ## [0.1.14] - 2023-12-01 ### Changed - Update subcommand entry point group names, per wuttjamaican. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d484943 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,55 @@ + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + + +[project] +name = "rattail-nationbuilder" +version = "0.3.4" +description = "Rattail integration package for NationBuilder" +readme = "README.md" +authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] +license = {text = "GNU GPL v3+"} +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Topic :: Office/Business", + "Topic :: Software Development :: Libraries :: Python Modules", +] +dependencies = [ + "rattail", +] + + +[project.entry-points."rattail.typer_imports"] +rattail_nationbuilder = "rattail_nationbuilder.commands" + + +[project.entry-points."rattail.config.extensions"] +rattail_nationbuilder = "rattail_nationbuilder.config:RattailNationBuilderExtension" + + +[project.entry-points."rattail.importing"] +"to_rattail.from_nationbuilder.import" = "rattail_nationbuilder.importing.nationbuilder:FromNationBuilderToRattail" + + +[project.entry-points."wutta.app.providers"] +rattail_nationbuilder = "rattail_nationbuilder.app:NationBuilderProvider" + + +[project.urls] +Homepage = "https://rattailproject.org" +Repository = "https://forgejo.wuttaproject.org/rattail/rattail-nationbuilder" +Changelog = "https://forgejo.wuttaproject.org/rattail/rattail-nationbuilder/src/branch/master/CHANGELOG.md" + + +[tool.commitizen] +version_provider = "pep621" +tag_format = "v$version" +update_changelog_on_bump = true diff --git a/rattail_nationbuilder/_version.py b/rattail_nationbuilder/_version.py index 19bf267..ab7b619 100644 --- a/rattail_nationbuilder/_version.py +++ b/rattail_nationbuilder/_version.py @@ -1,3 +1,6 @@ # -*- coding: utf-8; -*- -__version__ = '0.1.14' +from importlib.metadata import version + + +__version__ = version('rattail-nationbuilder') diff --git a/rattail_nationbuilder/app.py b/rattail_nationbuilder/app.py index 0fa8ccb..e18f15f 100644 --- a/rattail_nationbuilder/app.py +++ b/rattail_nationbuilder/app.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar +# Copyright © 2010-2024 Lance Edgar # # This file is part of Rattail. # @@ -36,7 +36,7 @@ class NationBuilderProvider(RattailProvider): if 'nationbuilder' not in self.handlers: spec = self.config.get('rattail', 'nationbuilder.handler', default='rattail_nationbuilder.app:NationBuilderHandler') - factory = self.load_object(spec) + factory = self.app.load_object(spec) self.handlers['nationbuilder'] = factory(self.config, **kwargs) return self.handlers['nationbuilder'] diff --git a/rattail_nationbuilder/commands.py b/rattail_nationbuilder/commands.py index de3456a..707de46 100644 --- a/rattail_nationbuilder/commands.py +++ b/rattail_nationbuilder/commands.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar +# Copyright © 2010-2024 Lance Edgar # # This file is part of Rattail. # @@ -24,13 +24,25 @@ rattail-nationbuilder commands """ -from rattail import commands +import typer + +from rattail.commands import rattail_typer +from rattail.commands.typer import importer_command, typer_get_runas_user +from rattail.commands.importing import ImportCommandHandler -class ImportNationBuilder(commands.ImportSubcommand): +@rattail_typer.command() +@importer_command +def import_nationbuilder( + ctx: typer.Context, + **kwargs +): """ Import data for NationBuilder => Rattail """ - name = 'import-nationbuilder' - description = __doc__.strip() - handler_key = 'to_rattail.from_nationbuilder.import' + config = ctx.parent.rattail_config + progress = ctx.parent.rattail_progress + handler = ImportCommandHandler( + config, import_handler_key='to_rattail.from_nationbuilder.import') + kwargs['user'] = typer_get_runas_user(ctx) + handler.run(kwargs, progress=progress) diff --git a/rattail_nationbuilder/config.py b/rattail_nationbuilder/config.py index de2aef3..0c6fa3c 100644 --- a/rattail_nationbuilder/config.py +++ b/rattail_nationbuilder/config.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar +# Copyright © 2010-2024 Lance Edgar # # This file is part of Rattail. # @@ -24,10 +24,10 @@ Config Extension """ -from rattail.config import ConfigExtension +from wuttjamaican.conf import WuttaConfigExtension -class RattailNationBuilderExtension(ConfigExtension): +class RattailNationBuilderExtension(WuttaConfigExtension): """ Config extension for rattail-nationbuilder """ @@ -36,7 +36,7 @@ class RattailNationBuilderExtension(ConfigExtension): def configure(self, config): # rattail import-nationbuilder - config.setdefault('rattail.importing', 'to_rattail.from_nationbulder.import.default_handler', + config.setdefault('rattail.importing.to_rattail.from_nationbulder.import.default_handler', 'rattail_nationbuilder.importing.nationbuilder:FromNationBuilderToRattail') - config.setdefault('rattail.importing', 'to_rattail.from_nationbuilder.import.default_cmd', + config.setdefault('rattail.importing.to_rattail.from_nationbuilder.import.default_cmd', 'rattail import-nationbuilder') diff --git a/rattail_nationbuilder/db/model/nationbuilder.py b/rattail_nationbuilder/db/model/nationbuilder.py index 12fdbc6..6f08e09 100644 --- a/rattail_nationbuilder/db/model/nationbuilder.py +++ b/rattail_nationbuilder/db/model/nationbuilder.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar +# Copyright © 2010-2024 Lance Edgar # # This file is part of Rattail. # @@ -27,9 +27,10 @@ NationBuilder cache tables import sqlalchemy as sa from sqlalchemy import orm +from wuttjamaican.util import parse_list + from rattail.db import model from rattail.db.util import normalize_full_name -from rattail.config import parse_list class NationBuilderCachePerson(model.Base): diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index da55360..0000000 --- a/setup.cfg +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8; -*- - -[metadata] -name = rattail-nationbuilder -version = attr: rattail_nationbuilder.__version__ -author = Lance Edgar -author_email = lance@edbob.org -url = https://rattailproject.org/ -license = GNU GPL v3 -description = Rattail integration package for NationBuilder -long_description = file: README.md -classifiers = - Development Status :: 4 - Beta - Intended Audience :: Developers - License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) - Natural Language :: English - Operating System :: OS Independent - Programming Language :: Python - Programming Language :: Python :: 3 - Topic :: Office/Business - Topic :: Software Development :: Libraries :: Python Modules - - -[options] -install_requires = - rattail - -packages = find: -include_package_data = True - - -[options.entry_points] - -rattail.subcommands = - import-nationbuilder = rattail_nationbuilder.commands:ImportNationBuilder - -rattail.config.extensions = - rattail_nationbuilder = rattail_nationbuilder.config:RattailNationBuilderExtension - -rattail.importing = - to_rattail.from_nationbuilder.import = rattail_nationbuilder.importing.nationbuilder:FromNationBuilderToRattail - -rattail.providers = - rattail_nationbuilder = rattail_nationbuilder.app:NationBuilderProvider diff --git a/setup.py b/setup.py deleted file mode 100644 index db55b4b..0000000 --- a/setup.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8; -*- -################################################################################ -# -# Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar -# -# This file is part of Rattail. -# -# Rattail is free software: you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation, either version 3 of the License, or (at your option) any later -# version. -# -# Rattail 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 General Public License along with -# Rattail. If not, see . -# -################################################################################ -""" -rattail-nationbuilder setup script -""" - -from setuptools import setup - -setup() diff --git a/tasks.py b/tasks.py index cb2927f..20fb0d4 100644 --- a/tasks.py +++ b/tasks.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar +# Copyright © 2010-2024 Lance Edgar # # This file is part of Rattail. # @@ -30,22 +30,17 @@ import shutil from invoke import task -here = os.path.abspath(os.path.dirname(__file__)) -exec(open(os.path.join(here, 'rattail_nationbuilder', '_version.py')).read()) - - @task def release(c): """ Release a new version of rattail-nationbuilder """ - # rebuild local tar.gz file for distribution + # rebuild package + if os.path.exists('dist'): + shutil.rmtree('dist') if os.path.exists('rattail_nationbuilder.egg-info'): shutil.rmtree('rattail_nationbuilder.egg-info') c.run('python -m build --sdist') - # filename of built package - filename = 'rattail-nationbuilder-{}.tar.gz'.format(__version__) - # upload to PyPI - c.run('twine upload dist/{}'.format(filename)) + c.run('twine upload dist/*')