summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.txt13
-rw-r--r--lesana/collection.py40
-rw-r--r--lesana/command.py30
-rw-r--r--lesana/data/settings.yaml2
-rw-r--r--tests/data/complex/settings.yaml2
-rw-r--r--tests/data/simple/items/085682ed-6792-499d-a3ab-9aebd683c011.yaml2
-rw-r--r--tests/test_collection.py86
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(