Compare commits

..

No commits in common. "c4a0b038e88bfd542df85554f25e9dcd515e18bf" and "0a1d9229b414d45c6aaf3ab0477e913386f6b5b2" have entirely different histories.

6 changed files with 7 additions and 33 deletions

View file

@ -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

View file

@ -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"}]

View file

@ -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

View file

@ -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.
"""

View file

@ -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.

View file

@ -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)