diff --git a/.gitignore b/.gitignore
index f69dfd5..d6b84d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1 @@
-*~
-*.pyc
-dist/
rattail_mailchimp.egg-info/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9009e56..7fc0322 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,46 +5,6 @@ All notable changes to rattail-mailchimp 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.3 (2024-07-05)
-
-### Fix
-
-- define `host_key` for MailChimp -> Rattail import
-
-## v0.3.2 (2024-07-01)
-
-### Fix
-
-- remove legacy command definitions
-
-## v0.3.1 (2024-06-14)
-
-### Fix
-
-- fallback to `importlib_metadata` on older python
-
-## v0.3.0 (2024-06-10)
-
-### Feat
-
-- switch from setup.cfg to pyproject.toml + hatchling
-
-## [0.2.1] - 2024-06-04
-### Changed
-- Setup default handler for Mailchimp -> Rattail import.
-
-## [0.2.0] - 2024-06-03
-### Changed
-- Migrate all commands to use `typer`.
-
-## [0.1.5] - 2023-11-30
-### Changed
-- Update subcommand entry point group names, per wuttjamaican.
-
-## [0.1.4] - 2023-06-01
-### Changed
-- Replace `setup.py` contents with `setup.cfg`.
-
## [0.1.3] - 2023-05-13
### Changed
- Avoid deprecated import for `OrderedDict`.
diff --git a/README.md b/README.md
deleted file mode 100644
index 5b17139..0000000
--- a/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-# rattail_mailchimp
-
-Rattail is a retail software framework, released under the GNU General
-Public License.
-
-This package contains software interfaces for the
-[MailChimp](https://mailchimp.com/) system.
-
-Please see the [Rattail Project](https://rattailproject.org/) for more
-information.
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..25dc9c3
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,14 @@
+
+rattail_mailchimp
+=================
+
+Rattail is a retail software framework, released under the GNU General
+Public License.
+
+This package contains software interfaces for the `MailChimp`_ system.
+
+.. _`MailChimp`: https://mailchimp.com/
+
+Please see the `Rattail Project`_ for more information.
+
+.. _`Rattail Project`: https://rattailproject.org/
diff --git a/pyproject.toml b/pyproject.toml
deleted file mode 100644
index 335d26c..0000000
--- a/pyproject.toml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-[build-system]
-requires = ["hatchling"]
-build-backend = "hatchling.build"
-
-
-[project]
-name = "rattail-mailchimp"
-version = "0.3.3"
-description = "Rattail Software Interfaces for MailChimp"
-readme = "README.md"
-authors = [{name = "Lance Edgar", email = "lance@edbob.org"}]
-license = {text = "GNU GPL v3+"}
-classifiers = [
- "Development Status :: 4 - Beta",
- "Environment :: Console",
- "Environment :: Web Environment",
- "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 = [
- "mailchimp3",
- "rattail",
-]
-
-
-[project.entry-points."rattail.config.extensions"]
-rattail_mailchimp = "rattail_mailchimp.config:MailchimpConfigExtension"
-
-
-[project.entry-points."rattail.typer_imports"]
-rattail_mailchimp = "rattail_mailchimp.commands"
-
-
-[project.entry-points."rattail.emails"]
-rattail_mailchimp = "rattail_mailchimp.emails"
-
-
-[project.urls]
-Homepage = "https://rattailproject.org"
-Repository = "https://kallithea.rattailproject.org/rattail-project/rattail-mailchimp"
-Changelog = "https://kallithea.rattailproject.org/rattail-project/rattail-mailchimp/files/master/CHANGELOG.md"
-
-
-[tool.commitizen]
-version_provider = "pep621"
-tag_format = "v$version"
-update_changelog_on_bump = true
diff --git a/rattail_mailchimp/_version.py b/rattail_mailchimp/_version.py
index 1c2e56d..d60824a 100644
--- a/rattail_mailchimp/_version.py
+++ b/rattail_mailchimp/_version.py
@@ -1,9 +1,3 @@
# -*- coding: utf-8; -*-
-try:
- from importlib.metadata import version
-except ImportError:
- from importlib_metadata import version
-
-
-__version__ = version('rattail-mailchimp')
+__version__ = '0.1.3'
diff --git a/rattail_mailchimp/commands.py b/rattail_mailchimp/commands.py
index bc3bdef..8808fbb 100644
--- a/rattail_mailchimp/commands.py
+++ b/rattail_mailchimp/commands.py
@@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
-# Copyright © 2010-2024 Lance Edgar
+# Copyright © 2010-2021 Lance Edgar
#
# This file is part of Rattail.
#
@@ -24,25 +24,23 @@
Rattail Commands for MailChimp integration
"""
-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
+from rattail import commands
+from rattail.util import load_object
-@rattail_typer.command()
-@importer_command
-def import_mailchimp(
- ctx: typer.Context,
- **kwargs
-):
+class ImportMailChimp(commands.ImportSubcommand):
"""
Import data to Rattail, from MailChimp API
"""
- config = ctx.parent.rattail_config
- progress = ctx.parent.rattail_progress
- handler = ImportCommandHandler(
- config, import_handler_key='to_rattail.from_mailchimp.import')
- kwargs['user'] = typer_get_runas_user(ctx)
- handler.run(kwargs, progress=progress)
+ name = 'import-mailchimp'
+ description = __doc__.strip()
+ default_handler_spec = 'rattail_mailchimp.importing.mailchimp:FromMailChimpToRattail'
+
+ def get_handler_factory(self, **kwargs):
+ if self.config:
+ spec = self.config.get('rattail.importing', 'mailchimp.handler',
+ default=self.default_handler_spec)
+ else:
+ # just use default, for sake of cmd line help
+ spec = self.default_handler_spec
+ return load_object(spec)
diff --git a/rattail_mailchimp/config.py b/rattail_mailchimp/config.py
deleted file mode 100644
index 4bad837..0000000
--- a/rattail_mailchimp/config.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# -*- coding: utf-8; -*-
-################################################################################
-#
-# Rattail -- Retail Software Framework
-# Copyright © 2010-2024 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 .
-#
-################################################################################
-"""
-Config extensions for rattail-mailchimp
-"""
-
-from wuttjamaican.conf import WuttaConfigExtension
-
-
-class MailchimpConfigExtension(WuttaConfigExtension):
- """
- Config extension for rattail-mailchimp
- """
- key = 'rattail_mailchimp'
-
- def configure(self, config):
-
- # rattail import-mailchimp
- config.setdefault('rattail.importing', 'to_rattail.from_mailchimp.import.default_handler',
- 'rattail_mailchimp.importing.mailchimp:FromMailChimpToRattail')
- config.setdefault('rattail.importing', 'to_rattail.from_mailchimp.import.default_cmd',
- 'rattail import-mailchimp')
diff --git a/rattail_mailchimp/importing/mailchimp.py b/rattail_mailchimp/importing/mailchimp.py
index c5f9a35..6c194fb 100644
--- a/rattail_mailchimp/importing/mailchimp.py
+++ b/rattail_mailchimp/importing/mailchimp.py
@@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
-# Copyright © 2010-2024 Lance Edgar
+# Copyright © 2010-2023 Lance Edgar
#
# This file is part of Rattail.
#
@@ -30,6 +30,7 @@ from collections import OrderedDict
from mailchimp3 import MailChimp
from rattail import importing
+from rattail.time import localtime, make_utc
from rattail_mailchimp import importing as mailchimp_importing
@@ -37,9 +38,7 @@ class FromMailChimpToRattail(importing.ToRattailHandler):
"""
Handler for MailChimp -> Rattail cache import
"""
- host_key = 'mailchimp'
host_title = "MailChimp"
- generic_host_title = "MailChimp"
def get_importers(self):
importers = OrderedDict()
@@ -54,7 +53,7 @@ class FromMailChimp(importing.Importer):
"""
def setup(self):
- super().setup()
+ super(FromMailChimp, self).setup()
self.api_key = self.config.require('mailchimp', 'api_key')
self.mailchimp = MailChimp(self.api_key)
@@ -66,10 +65,10 @@ class FromMailChimp(importing.Importer):
# issue..since we clearly have a UTC value
value = value[:-6]
dt = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S')
- dt = self.app.localtime(dt, from_utc=True)
+ dt = localtime(self.config, dt, from_utc=True)
else:
dt = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S%z')
- dt = self.app.localtime(dt)
+ dt = localtime(self.config, dt)
return dt
@@ -96,7 +95,7 @@ class MailChimpListImporter(FromMailChimp, mailchimp_importing.model.MailChimpLi
return {
'id': mclist['id'],
'name': mclist['name'],
- 'date_created': self.app.make_utc(date_created),
+ 'date_created': make_utc(date_created),
}
@@ -161,6 +160,6 @@ class MailChimpListMemberImporter(FromMailChimp, mailchimp_importing.model.MailC
'status': member['status'],
# TODO: this API endpoint does not appear to include this field?
# 'unsubscribe_reason': member.get('unsubscribe_reason'),
- 'last_changed': self.app.make_utc(last_changed),
+ 'last_changed': make_utc(last_changed),
'source': member['source'],
}
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..7235ac6
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,107 @@
+# -*- coding: utf-8; -*-
+################################################################################
+#
+# Rattail -- Retail Software Framework
+# Copyright © 2010-2022 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 .
+#
+################################################################################
+
+import os
+from setuptools import setup, find_packages
+
+
+here = os.path.abspath(os.path.dirname(__file__))
+exec(open(os.path.join(here, 'rattail_mailchimp', '_version.py')).read())
+README = open(os.path.join(here, 'README.rst')).read()
+
+
+requires = [
+ #
+ # Version numbers within comments below have specific meanings.
+ # Basically the 'low' value is a "soft low," and 'high' a "soft high."
+ # In other words:
+ #
+ # If either a 'low' or 'high' value exists, the primary point to be
+ # made about the value is that it represents the most current (stable)
+ # version available for the package (assuming typical public access
+ # methods) whenever this project was started and/or documented.
+ # Therefore:
+ #
+ # If a 'low' version is present, you should know that attempts to use
+ # versions of the package significantly older than the 'low' version
+ # may not yield happy results. (A "hard" high limit may or may not be
+ # indicated by a true version requirement.)
+ #
+ # Similarly, if a 'high' version is present, and especially if this
+ # project has laid dormant for a while, you may need to refactor a bit
+ # when attempting to support a more recent version of the package. (A
+ # "hard" low limit should be indicated by a true version requirement
+ # when a 'high' version is present.)
+ #
+ # In any case, developers and other users are encouraged to play
+ # outside the lines with regard to these soft limits. If bugs are
+ # encountered then they should be filed as such.
+ #
+ # package # low high
+
+ 'mailchimp3', # 3.0.14
+ 'rattail', # 0.9.214
+]
+
+
+setup(
+ name = "rattail-mailchimp",
+ version = __version__,
+ author = "Lance Edgar",
+ author_email = "lance@edbob.org",
+ url = "https://rattailproject.org/",
+ license = "GNU GPL v3",
+ description = "Rattail Software Interfaces for MailChimp",
+ long_description = README,
+
+ classifiers = [
+ 'Development Status :: 4 - Beta',
+ 'Environment :: Console',
+ 'Environment :: Web Environment',
+ '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',
+ ],
+
+ install_requires = requires,
+ packages = find_packages(),
+ include_package_data = True,
+ zip_safe = False,
+
+ entry_points = {
+
+ 'rattail.commands': [
+ 'import-mailchimp = rattail_mailchimp.commands:ImportMailChimp',
+ ],
+
+
+ 'rattail.emails': [
+ 'rattail_mailchimp = rattail_mailchimp.emails',
+ ],
+ },
+)
diff --git a/tasks.py b/tasks.py
index 912f111..ac9fab3 100644
--- a/tasks.py
+++ b/tasks.py
@@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
-# Copyright © 2010-2024 Lance Edgar
+# Copyright © 2010-2022 Lance Edgar
#
# This file is part of Rattail.
#
@@ -30,15 +30,17 @@ import shutil
from invoke import task
+here = os.path.abspath(os.path.dirname(__file__))
+exec(open(os.path.join(here, 'rattail_mailchimp', '_version.py')).read())
+
+
@task
-def release(c):
+def release(ctx):
"""
Release a new version of 'rattail-mailchimp'.
"""
- if os.path.exists('dist'):
- shutil.rmtree('dist')
- if os.path.exists('rattail_mailchimp.egg-info'):
- shutil.rmtree('rattail_mailchimp.egg-info')
- c.run('python -m build --sdist')
+ shutil.rmtree('rattail_mailchimp.egg-info')
+ ctx.run('python -m build --sdist')
- c.run('twine upload dist/*')
+ filename = 'rattail-mailchimp-{}.tar.gz'.format(__version__)
+ ctx.run('twine upload dist/{}'.format(filename))