diff options
-rw-r--r-- | CHANGELOG.txt | 13 | ||||
-rw-r--r-- | lesana/collection.py | 40 | ||||
-rw-r--r-- | lesana/command.py | 30 | ||||
-rw-r--r-- | lesana/data/settings.yaml | 2 | ||||
-rw-r--r-- | tests/data/complex/settings.yaml | 2 | ||||
-rw-r--r-- | tests/data/simple/items/085682ed-6792-499d-a3ab-9aebd683c011.yaml | 2 | ||||
-rw-r--r-- | tests/test_collection.py | 86 |
7 files changed, 94 insertions, 81 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt new file mode 100644 index 0000000..58df9e3 --- /dev/null +++ b/CHANGELOG.txt @@ -0,0 +1,13 @@ +*********** + CHANGELOG +*********** + +Unreleased +========== + +Library +------- + +* This version changes the name of entry IDs from the nonsensical ``uid`` to + ``eid`` (Entry ID) everywhere in the code, including the property + ``Entry.uid`` and all method names. diff --git a/lesana/collection.py b/lesana/collection.py index 4626a7a..599d328 100644 --- a/lesana/collection.py +++ b/lesana/collection.py @@ -21,14 +21,14 @@ class Entry(object): self.collection = collection self.data = data or self.empty_data() self.fname = fname - self.uid = self.data.get('uid', None) - if not self.uid: + self.eid = self.data.get('eid', None) + if not self.eid: if self.fname: - self.uid, ext = os.path.splitext(os.path.basename(self.fname)) + self.eid, ext = os.path.splitext(os.path.basename(self.fname)) else: - self.uid = uuid.uuid4().hex + self.eid = uuid.uuid4().hex if not self.fname: - self.fname = self.uid + '.yaml' + self.fname = self.eid + '.yaml' def __str__(self): label = self.collection.settings.get('entry_label', None) @@ -36,11 +36,11 @@ class Entry(object): t = jinja2.Template(label) return t.render(**self.get_data()) else: - return self.uid + return self.eid def get_data(self): d = self.data.copy() - d['uid'] = self.uid + d['eid'] = self.eid d['fname'] = self.fname d['short_id'] = self.short_id return d @@ -75,11 +75,11 @@ class Entry(object): @property def idterm(self): - return "Q"+self.uid + return "Q"+self.eid @property def short_id(self): - return self.uid[:8] + return self.eid[:8] def validate(self): errors = [] @@ -396,37 +396,37 @@ class Collection(object): ) return entry - def entry_from_uid(self, uid): + def entry_from_eid(self, eid): cache = self._get_cache() - postlist = cache.postlist('Q'+uid) + postlist = cache.postlist('Q'+eid) for pitem in postlist: return self._doc_to_entry(cache.get_document(pitem.docid)) return None - def entries_from_short_uid(self, suid): + def entries_from_short_eid(self, seid): # It would be better to search for partial UIDs inside xapian, # but I still can't find a way to do it, so this is a workable - # workaround on repos where the uids are stored in the + # workaround on repos where the eids are stored in the # filenames. - potential_uids = [ + potential_eids = [ os.path.splitext(f)[0] for f in os.listdir(self.itemdir) - if f.startswith(suid) + if f.startswith(seid) ] - return [self.entry_from_uid(u) for u in potential_uids if u] + return [self.entry_from_eid(u) for u in potential_eids if u] - def remove_entries(self, uids): + def remove_entries(self, eids): cache = xapian.WritableDatabase( os.path.join(self.basedir, '.lesana/xapian'), xapian.DB_CREATE_OR_OPEN ) - for uid in uids: - for entry in self.entries_from_short_uid(uid): + for eid in eids: + for entry in self.entries_from_short_eid(eid): if entry is not None: cache.delete_document(entry.idterm) self.remove_file(entry.fname) else: - logging.warning("No such entry: {}, ignoring".format(uid)) + logging.warning("No such entry: {}, ignoring".format(eid)) cache.commit() cache.close() diff --git a/lesana/command.py b/lesana/command.py index a5a7508..7f4144b 100644 --- a/lesana/command.py +++ b/lesana/command.py @@ -91,7 +91,7 @@ class New(Command): collection.update_cache([filepath]) if self.args.git: collection.git_add_files([filepath]) - saved_entry = collection.entry_from_uid(new_entry.uid) + saved_entry = collection.entry_from_eid(new_entry.eid) print(saved_entry) @@ -105,19 +105,19 @@ class Edit(Command): action="store_false", dest='git' )), - (['uid'], dict( - help='uid of an entry to edit', + (['eid'], dict( + help='eid of an entry to edit', )), ] def main(self): collection = Collection(self.args.collection) - entries = collection.entries_from_short_uid(self.args.uid) + entries = collection.entries_from_short_eid(self.args.eid) if len(entries) > 1: - return "{} is not an unique uid".format(self.args.uid) + return "{} is not an unique eid".format(self.args.eid) if not entries: - return "Could not find an entry with uid starting with: {}".format( - self.args.uid + return "Could not find an entry with eid starting with: {}".format( + self.args.eid ) entry = entries[0] filepath = os.path.join( @@ -128,7 +128,7 @@ class Edit(Command): collection.update_cache([filepath]) if self.args.git: collection.git_add_files([filepath]) - saved_entry = collection.entry_from_uid(entry.uid) + saved_entry = collection.entry_from_eid(entry.eid) print(saved_entry) @@ -140,19 +140,19 @@ class Show(Command): (['--template', '-t'], dict( help='Use the specified template to display results.', )), - (['uid'], dict( - help='uid of an entry to edit', + (['eid'], dict( + help='eid of an entry to edit', )), ] def main(self): collection = Collection(self.args.collection) - entries = collection.entries_from_short_uid(self.args.uid) + entries = collection.entries_from_short_eid(self.args.eid) if len(entries) > 1: - return "{} is not an unique uid".format(self.args.uid) + return "{} is not an unique eid".format(self.args.eid) if not entries: - return "Could not find an entry with uid starting with: {}".format( - self.args.uid + return "Could not find an entry with eid starting with: {}".format( + self.args.eid ) entry = entries[0] if self.args.template: @@ -326,4 +326,4 @@ class Remove(Command): def main(self): collection = Collection(self.args.collection) - collection.remove_entries(uids=self.args.entries) + collection.remove_entries(eids=self.args.entries) diff --git a/lesana/data/settings.yaml b/lesana/data/settings.yaml index 31653d0..5df1d65 100644 --- a/lesana/data/settings.yaml +++ b/lesana/data/settings.yaml @@ -1,6 +1,6 @@ name: 'My Collection' lang: english -entry_label: '{{ uid }}: {{ name }}' +entry_label: '{{ eid }}: {{ name }}' git: true fields: - name: name diff --git a/tests/data/complex/settings.yaml b/tests/data/complex/settings.yaml index 03110f3..51f313f 100644 --- a/tests/data/complex/settings.yaml +++ b/tests/data/complex/settings.yaml @@ -1,6 +1,6 @@ name: "Fully featured lesana collection" lang: 'english' -entry_label: '{{ uid}}: {{ name }} ({{ tags }})' +entry_label: '{{ eid }}: {{ name }} ({{ tags }})' fields: - name: name type: string diff --git a/tests/data/simple/items/085682ed-6792-499d-a3ab-9aebd683c011.yaml b/tests/data/simple/items/085682ed-6792-499d-a3ab-9aebd683c011.yaml index 082128c..0abc78d 100644 --- a/tests/data/simple/items/085682ed-6792-499d-a3ab-9aebd683c011.yaml +++ b/tests/data/simple/items/085682ed-6792-499d-a3ab-9aebd683c011.yaml @@ -3,4 +3,4 @@ description: | This is a long block of text that spans multiple lines. position: somewhere -uid: 085682ed6792499da3ab9aebd683c011 +eid: 085682ed6792499da3ab9aebd683c011 diff --git a/tests/test_collection.py b/tests/test_collection.py index 23186a1..b5266d9 100644 --- a/tests/test_collection.py +++ b/tests/test_collection.py @@ -104,31 +104,31 @@ class testCollection(unittest.TestCase): for m in matches: self.assertIsInstance(m, lesana.Entry) - def test_entry_from_uid(self): + def test_entry_from_eid(self): self.collection = lesana.Collection('tests/data/simple') - entry = self.collection.entry_from_uid( + entry = self.collection.entry_from_eid( '11189ee47ddf4796b718a483b379f976' ) - self.assertEqual(entry.uid, '11189ee47ddf4796b718a483b379f976') + self.assertEqual(entry.eid, '11189ee47ddf4796b718a483b379f976') self.collection.safe = True - entry = self.collection.entry_from_uid( + entry = self.collection.entry_from_eid( '11189ee47ddf4796b718a483b379f976' ) - self.assertEqual(entry.uid, '11189ee47ddf4796b718a483b379f976') + self.assertEqual(entry.eid, '11189ee47ddf4796b718a483b379f976') - def test_entry_from_short_uid(self): + def test_entry_from_short_eid(self): self.collection = lesana.Collection('tests/data/simple') - entries = self.collection.entries_from_short_uid( + entries = self.collection.entries_from_short_eid( '11189ee4' ) self.assertEqual(len(entries), 1) - self.assertEqual(entries[0].uid, '11189ee47ddf4796b718a483b379f976') - entries = self.collection.entries_from_short_uid( + self.assertEqual(entries[0].eid, '11189ee47ddf4796b718a483b379f976') + entries = self.collection.entries_from_short_eid( '11189ee47ddf4796b718a483b379f976' ) self.assertEqual(len(entries), 1) - self.assertEqual(entries[0].uid, '11189ee47ddf4796b718a483b379f976') - entries = self.collection.entries_from_short_uid( + self.assertEqual(entries[0].eid, '11189ee47ddf4796b718a483b379f976') + entries = self.collection.entries_from_short_eid( '12345678' ) self.assertEqual(len(entries), 0) @@ -140,9 +140,9 @@ class testCollection(unittest.TestCase): self.assertEqual(len(cm.output), 1) self.assertIn("non_existing_file", cm.output[0]) - def test_get_entry_missing_uid(self): + def test_get_entry_missing_eid(self): self.collection = lesana.Collection('tests/data/simple') - entry = self.collection.entry_from_uid('this is not an uid') + entry = self.collection.entry_from_eid('this is not an eid') self.assertIsNone(entry) def test_render_collection(self): @@ -170,14 +170,14 @@ class testEntries(unittest.TestCase): with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) entry = lesana.Entry(self.collection, data=data, fname=fname) - self.assertEqual(entry.idterm, 'Q'+data['uid']) + self.assertEqual(entry.idterm, 'Q'+data['eid']) fname = '11189ee47ddf4796b718a483b379f976.yaml' - uid = '11189ee47ddf4796b718a483b379f976' + eid = '11189ee47ddf4796b718a483b379f976' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) entry = lesana.Entry(self.collection, data=data, fname=fname) - self.assertEqual(entry.idterm, 'Q'+uid) - self.assertEqual(entry.short_id, uid[:8]) + self.assertEqual(entry.idterm, 'Q'+eid) + self.assertEqual(entry.short_id, eid[:8]) def test_write_new(self): new_entry = lesana.Entry(self.collection) @@ -194,71 +194,71 @@ class testEntries(unittest.TestCase): self.assertIsInstance(written['name'], str) def test_entry_representation(self): - uid = '11189ee47ddf4796b718a483b379f976' - entry = self.collection.entry_from_uid(uid) + eid = '11189ee47ddf4796b718a483b379f976' + entry = self.collection.entry_from_eid(eid) self.assertEqual( str(entry), - uid + eid ) - label = '{{ uid }}: {{ name }}' + label = '{{ eid }}: {{ name }}' self.collection.settings['entry_label'] = label self.assertEqual( str(entry), - '{uid}: {name}'.format(uid=uid, name='Another item') + '{eid}: {name}'.format(eid=eid, name='Another item') ) - def test_entry_creation_uid_but_no_filename(self): + def test_entry_creation_eid_but_no_filename(self): fname = '11189ee47ddf4796b718a483b379f976.yaml' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) - data['uid'] = '11189ee47ddf4796b718a483b379f976' + data['eid'] = '11189ee47ddf4796b718a483b379f976' entry = lesana.Entry(self.collection, data=data) self.assertEqual(entry.fname, fname) - def test_entry_creation_no_uid_no_filename(self): + def test_entry_creation_no_eid_no_filename(self): fname = '11189ee47ddf4796b718a483b379f976.yaml' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) entry = lesana.Entry(self.collection, data=data) - self.assertIsNotNone(entry.uid) + self.assertIsNotNone(entry.eid) self.assertIsNotNone(entry.fname) - def test_entry_creation_filename_but_no_uid(self): + def test_entry_creation_filename_but_no_eid(self): fname = '11189ee47ddf4796b718a483b379f976.yaml' - uid = '11189ee47ddf4796b718a483b379f976' + eid = '11189ee47ddf4796b718a483b379f976' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) entry = lesana.Entry(self.collection, data=data, fname=fname) - self.assertEqual(entry.uid, uid) + self.assertEqual(entry.eid, eid) - def test_entry_str_filename_and_uid(self): + def test_entry_str_filename_and_eid(self): fname = '11189ee47ddf4796b718a483b379f976.yaml' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) - data['uid'] = '11189ee47ddf4796b718a483b379f976' + data['eid'] = '11189ee47ddf4796b718a483b379f976' entry = lesana.Entry(self.collection, data=data) - self.assertEqual(str(entry), data['uid']) - self.collection.settings['entry_label'] = '{{ uid }}: {{ name }}' - self.assertEqual(str(entry), data['uid'] + ': Another item') + self.assertEqual(str(entry), data['eid']) + self.collection.settings['entry_label'] = '{{ eid }}: {{ name }}' + self.assertEqual(str(entry), data['eid'] + ': Another item') - def test_entry_str_filename_no_uid(self): + def test_entry_str_filename_no_eid(self): fname = '11189ee47ddf4796b718a483b379f976.yaml' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) entry = lesana.Entry(self.collection, data=data) - uid = entry.uid - self.assertEqual(str(entry), uid) - self.collection.settings['entry_label'] = '{{ uid }}: {{ name }}' - self.assertEqual(str(entry), uid + ': Another item') + eid = entry.eid + self.assertEqual(str(entry), eid) + self.collection.settings['entry_label'] = '{{ eid }}: {{ name }}' + self.assertEqual(str(entry), eid + ': Another item') def test_render_entry(self): fname = '11189ee47ddf4796b718a483b379f976.yaml' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.safe_load(fp) entry = lesana.Entry(self.collection, data=data) - uid = entry.uid + eid = entry.eid res = entry.render('tests/data/simple/templates/trivial_template.txt') - self.assertIn(uid, res) + self.assertIn(eid, res) def test_empty_data(self): entry = lesana.Entry(self.collection) @@ -298,7 +298,7 @@ class testComplexCollection(unittest.TestCase): self.assertIsInstance(m, lesana.Entry) def test_boolean_field(self): - entry = self.collection.entry_from_uid( + entry = self.collection.entry_from_eid( '73097121f1874a6ea2f927db7dc4f11e' ) self.assertIsInstance(entry.data['exists'], bool) @@ -412,7 +412,7 @@ class testCollectionCreation(unittest.TestCase): mset = collection._enquire.get_mset(0, 10) self.assertEqual(mset.get_matches_estimated(), 0) - def test_partial_uid_deletion(self): + def test_partial_eid_deletion(self): tmpdir = tempfile.mkdtemp() shutil.copy('tests/data/simple/settings.yaml', tmpdir) shutil.copytree( |