Thread: Some comments on PL/Python documentation
The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/17/plpython-data.html Description: Hello, In my opinion, some phrases on this page are not quite correct. 44.2.4. Composite Types You say: '...Object (any object providing method __getattr__)...' Actually, the object class provides the __getattribute__() method but not the __getattr__() method. See https://docs.python.org/3/reference/datamodel.html#object.__getattr__ 44.2.5. Set-Returning Functions 1. You say: '...Sequence type (tuple, list, set)...' Being an unordered collection, sets do not record element position or order of insertion. Accordingly, sets do not support indexing, slicing, or other sequence-like behavior. See https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset 2. You say: '...Iterator (any object providing __iter__ and next methods)...' Actually, the iterator objects must support the __next__() method. See https://docs.python.org/3/glossary.html#term-iterator Regards, Bogdan Grigorenko
On 29.12.24 01:48, PG Doc comments form wrote: > Page: https://www.postgresql.org/docs/17/plpython-data.html > Description: > > Hello, > In my opinion, some phrases on this page are not quite correct. > > 44.2.4. Composite Types > You say: '...Object (any object providing method __getattr__)...' > Actually, the object class provides the __getattribute__() method but not > the __getattr__() method. > See https://docs.python.org/3/reference/datamodel.html#object.__getattr__ Yes, this looks slightly inaccurate. I'm not sure __getattribute__ is fully correct either, because types can also implement other ways of returning attributes, especially if they are implemented in C. Is there a neutral and accurate way to describe this? > 44.2.5. Set-Returning Functions > 1. You say: '...Sequence type (tuple, list, set)...' > Being an unordered collection, sets do not record element position or order > of insertion. Accordingly, sets do not support indexing, slicing, or other > sequence-like behavior. > See > https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset I think this is correct as it is. Python sets can be iterated over, so this works. Note that earlier in the page under composite types it says "but not a set because it is not indexable", so this distinction was taken into consideration. > 2. You say: '...Iterator (any object providing __iter__ and next > methods)...' > Actually, the iterator objects must support the __next__() method. > See https://docs.python.org/3/glossary.html#term-iterator Yes, this was recently fixed already and will appear in the next patch release.
On 08.01.25 09:45, Peter Eisentraut wrote: >> 44.2.5. Set-Returning Functions >> 1. You say: '...Sequence type (tuple, list, set)...' >> Being an unordered collection, sets do not record element position or >> order >> of insertion. Accordingly, sets do not support indexing, slicing, or >> other >> sequence-like behavior. >> See >> https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset > > I think this is correct as it is. Python sets can be iterated over, so > this works. Note that earlier in the page under composite types it says > "but not a set because it is not indexable", so this distinction was > taken into consideration. I have added a test for returning Python sets from SETOF functions. It makes sense to test this if the documentation claims it.