diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b1fd1a..05f5ef3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,14 +5,6 @@ All notable changes to WuttaSync 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.2.1 (2025-06-29) - -### Fix - -- avoid empty keys for importer -- do not assign simple/supported fields in Importer constructor -- make `--input-path` optional for import/export commands - ## v0.2.0 (2024-12-07) ### Feat diff --git a/pyproject.toml b/pyproject.toml index fc09dc9..a198b0e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "WuttaSync" -version = "0.2.1" +version = "0.2.0" description = "Wutta Framework for data import/export and real-time sync" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@wuttaproject.org"}] diff --git a/src/wuttasync/importing/base.py b/src/wuttasync/importing/base.py index 6e06cfb..59017d7 100644 --- a/src/wuttasync/importing/base.py +++ b/src/wuttasync/importing/base.py @@ -200,6 +200,8 @@ class Importer: self.__dict__.update(kwargs) + self.simple_fields = self.get_simple_fields() + self.supported_fields = self.get_supported_fields() self.fields = self.get_fields() # fields could be comma-delimited string from cli param diff --git a/src/wuttasync/importing/handlers.py b/src/wuttasync/importing/handlers.py index 03a6179..ac3f89f 100644 --- a/src/wuttasync/importing/handlers.py +++ b/src/wuttasync/importing/handlers.py @@ -232,7 +232,7 @@ class ImportHandler(GenericHandler): """ Run import/export operations for the specified models. - :param \\*keys: One or more importer/exporter (model) keys, as + :param \*keys: One or more importer/exporter (model) keys, as defined by the handler. Each key specified must be present in :attr:`importers` and @@ -460,9 +460,6 @@ class ImportHandler(GenericHandler): Returns an importer/exporter instance corresponding to the given key. - Note that this will always create a *new* instance; they are - not cached. - The key will be the "model name" mapped to a particular importer/exporter class and thus must be present in :attr:`importers`. @@ -475,8 +472,6 @@ class ImportHandler(GenericHandler): :param key: Model key for desired importer/exporter. - :param \\**kwargs: Extra/override kwargs for the importer. - :returns: Instance of (subclass of) :class:`~wuttasync.importing.base.Importer`. """ @@ -486,11 +481,6 @@ class ImportHandler(GenericHandler): kwargs = self.get_importer_kwargs(key, **kwargs) kwargs['handler'] = self - - # nb. default logic should (normally) determine keys - if 'keys' in kwargs and not kwargs['keys']: - del kwargs['keys'] - factory = self.importers[key] return factory(self.config, **kwargs) @@ -503,7 +493,7 @@ class ImportHandler(GenericHandler): :param key: Model key for the desired importer/exporter, e.g. ``'Widget'`` - :param \\**kwargs: Any kwargs we have so collected far. + :param \**kwargs: Any kwargs we have so collected far. :returns: Final kwargs dict for new importer/exporter. """ diff --git a/tests/importing/test_base.py b/tests/importing/test_base.py index feab115..ff2ca6e 100644 --- a/tests/importing/test_base.py +++ b/tests/importing/test_base.py @@ -24,6 +24,8 @@ class TestImporter(DataTestCase): imp = self.make_importer(model_class=model.Setting) # fields + self.assertEqual(imp.supported_fields, ['name', 'value']) + self.assertEqual(imp.simple_fields, ['name', 'value']) self.assertEqual(imp.fields, ['name', 'value']) # orientation etc. diff --git a/tests/importing/test_handlers.py b/tests/importing/test_handlers.py index 3c2fe49..dac37d6 100644 --- a/tests/importing/test_handlers.py +++ b/tests/importing/test_handlers.py @@ -169,18 +169,6 @@ class TestImportHandler(DataTestCase): importer = handler.get_importer('Setting', model_class=model.Setting) self.assertIsInstance(importer, Importer) - # specifying empty keys - handler.importers['Setting'] = Importer - importer = handler.get_importer('Setting', model_class=model.Setting, - keys=None) - self.assertIsInstance(importer, Importer) - importer = handler.get_importer('Setting', model_class=model.Setting, - keys='') - self.assertIsInstance(importer, Importer) - importer = handler.get_importer('Setting', model_class=model.Setting, - keys=[]) - self.assertIsInstance(importer, Importer) - # key not found self.assertRaises(KeyError, handler.get_importer, 'BunchOfNonsense', model_class=model.Setting)