How are you?
My dear mentors and I have decided to have the MRT (Machine Readable Table) format writing first. The same CDS code as been used now will be used, just the template of the written table will be in the MRT format.
Points to be noted regarding this and the immediate things that have been and will done are as follows:
- Leave out writing all the optional CDS ReadMe fields as of now. These can be dealt with individual PRs later.
- Some tests fail because start_line = None doesn't work. It has been introduced once again within CdsData.write function in addition to been defined in the main Cds class. The test failure occurs because CdsData now inherits from FixedWidthData which itself inherits basic.BasicReader instead of BaseReader. I should make sure that all tests pass properly.
- Have a template for MRT tables and write them first. Title, Authors, Date, Caption and Notes sections, i.e. all sections except the Byte-By-Byte and the Data itself, will be left blank in the template, with warning for the user to put them in manually afterwards.
- Documentation for the CDS/MRT format writer.
- At present issue a warning note for tables with two or more mix-in columns (SkyCoord cols primarily). If ways to correctly work out such situations is thought of, add that feature in a separate PR.
- Work with a copy of the original table, so that the copy is modified and not the original table, when component coordinate columns are written. The modified copy of the table is written to a file, while the user retains access to the columns of the original table.
- Need to have features to recognise non Spherical coordinates, like the Cartesian coordinates, and either skip them or write them as Single column string values. Add test for such other coordinates. Also for cases when coordinates are in a SkyCoord object but the frame is not Spherical.
- Have two other templates, one for CDS in which the user fills values of optional fields manually later and another in which filling optional fields can be done from within Astropy, via a cdsdict. In separate PRs. Here too write only the required fields in the ReadMe first, like Abstract.
- Have features for Time columns later within the original PR or much later.
- Simplify how column format is obtained for float columns. The current manner of string formatting is too complicated. col.width value can be directly used in some cases. The Outputter class will also know the column format since it writes out the table.
- Other minor/major edits and modifications as suggested by others.