Skip to content

Commit c56e564

Browse files
Cleanup model classes
1 parent e9ddfcb commit c56e564

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

labelbox/orm/model.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ def __repr__(self):
204204

205205

206206
class Entity:
207-
""" An entity that contains fields and relationships. """
207+
""" An entity that contains fields and relationships. Base class
208+
for DbObject (which is base class for concrete schema classes). """
208209

209210
# Every Entity has an "id" and a "deleted" field
210211
# Name the "id" field "uid" in Python to avoid conflict with keyword.
@@ -225,13 +226,18 @@ def _attributes_of_type(cls, attr_type):
225226

226227
@classmethod
227228
def fields(cls):
228-
""" Yields all the Fields declared in a concrete subclass. """
229+
""" Returns a generateor that yields all the Fields declared in a
230+
concrete subclass.
231+
"""
229232
for attr in cls._attributes_of_type(Field):
230233
if attr != Entity.deleted:
231234
yield attr
232235

233236
@classmethod
234237
def relationships(cls):
238+
""" Returns a generateor that yields all the Relationships declared in
239+
a concrete subclass.
240+
"""
235241
return cls._attributes_of_type(Relationship)
236242

237243
@classmethod
@@ -274,13 +280,6 @@ def type_name(cls):
274280
"""
275281
return cls.__name__.split(".")[-1]
276282

277-
@classmethod
278-
def subclasses(cls):
279-
""" Generates all the subclasses (also not immediate) of this class. """
280-
for subclass in cls.__subclasses__():
281-
yield subclass
282-
for subsub in subclass.subclasses():
283-
yield subsub
284283

285284
@classmethod
286285
def named(cls, name):
@@ -294,7 +293,13 @@ def named(cls, name):
294293
Raises:
295294
LabelboxError: if there is no such class.
296295
"""
297-
for t in Entity.subclasses():
296+
def subclasses(cls):
297+
for subclass in cls.__subclasses__():
298+
yield subclass
299+
for subsub in subclasses(subclass):
300+
yield subsub
301+
302+
for t in subclasses(Entity):
298303
if t.type_name() == name:
299304
return t
300305
raise LabelboxError("Failed to find Entity for name: %s" % name)

0 commit comments

Comments
 (0)