Hi Skip, On 23 septembre 09:07, Skip Montanaro wrote: > Having demonstrated my confusion about early breaks from loops, I will > proceed to demonstrate my confusion about containers.
:) > I have a queue-like class in which I implement __len__ but not > __getitem__. Pylint complains: > > timeddata.py:79: [R0924(incomplete-protocol), TimedDataQueue] Badly > implemented Container, implements __len__ but not __getitem__ > > I can see where that would be a valid complaint for an array-like > container, but not all containers should support indexing even if they > have a measurable length. Python sets are one example: > > >>> s = set(range(10)) > >>> len(s) > 10 > >>> s[0] > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: 'set' object does not support indexing > > Queue-like containers seem similar. While I would allow access to the > element at one end or the other (depending if I want queue-like or > stack-like behavior), I think it would violate the definition of those > types to allow indexing. > > Should pylint really be this strict? Or am I expected to implement > everything necessary for an array-like containiner and just raise > exceptions in those methods the user really shouldn't access? No I'ld say you're right. While it sounded a good idea when proposed, you're not the first one being confused by this message, so I tend to think this check should be either removed or kept for well defined and all-or-nothing protocols (the only one coming to my mind being the context manager __enter__ / __exit__, but there may be others). I would be glad to have others'opinion though. -- Sylvain Thénault, LOGILAB, Paris (01.45.32.03.12) - Toulouse (05.62.17.16.42) Formations Python, Debian, Méth. Agiles: http://www.logilab.fr/formations Développement logiciel sur mesure: http://www.logilab.fr/services CubicWeb, the semantic web framework: http://www.cubicweb.org _______________________________________________ code-quality mailing list code-quality@python.org https://mail.python.org/mailman/listinfo/code-quality