VOSITables look for <description> tag in child table endpoint
When table descriptions are requested for a VOSITable, the individual table information is fetched from the child table resource, including the <description> tag. The <description> tag is optional in the child table resource. In at least some cases, the <description> tag is present in the tables endpoint but that information is ignored.
We discovered this in the IRSA TAP server with this code:
import pyvo
service=pyvo.dal.TAPService('https://irsa.ipac.caltech.edu/TAP')
print(service.tables['akari_irc'].name, service.tables['akari_irc'].description)
(warning: the <description> tag is likely to be added to the child resources for this service, so this example may start returning descriptions.)
In the VOSITables._get_table(name) method, the child resource is queried if table.columns and table.foreignkeys do not exist. But table.description is overwritten with None if the child resource does not include <description>.
I propose that if the child resource does not include <description>, then the existing table description from the tables endpoint should be used instead. If there is agreement that this is the desired behavior, I can make a pull request to implement this inside dal.vosi.VOSITables._get_table().
Agreed.
At the same time, though, I would also support an initiative at the IVOA to develop a clarification to the VOSI standard that would say that a "child table" resource SHALL (or at least SHOULD) provide at least as much information on the selected table as is provided in the parent resource. It seems a bit weird for what is basically a "give me more detail on table X" resource to end up sometimes giving less detail.