# HG changeset patch # Parent a1d725ae3712800117f0b99fc21e9b4373063050 # User Jezreel Ng Handle dotted attribute strings correctly in attrgetter. diff --git a/src/org/python/modules/operator.java b/src/org/python/modules/operator.java --- a/src/org/python/modules/operator.java +++ b/src/org/python/modules/operator.java @@ -320,17 +320,20 @@ public class operator extends PyObject i if (name instanceof PyUnicode) { nameStr = ((PyUnicode)name).encode(); } else if (name instanceof PyString) { nameStr = name.asString(); } else { throw Py.TypeError(String.format("attribute name must be string, not '%.200s'", name.getType().fastGetName())); } - return obj.__getattr__(nameStr.intern()); + String[] components = nameStr.split("\\."); + for (String component : components) + obj = obj.__getattr__(component.intern()); + return obj; } } /** * The itemgetter type. */ @ExposedType(name = "operator.itemgetter", isBaseType = false)