------------------
This production version of the pvl library consists of significant
API and functionality changes from the 0.x version that has been
in use for 5 years (a credit to Trevor Olson's skills). The
documentation has been significantly upgraded, and various granular
changes over the 10 alpha versions of 1.0.0 over the last 8 months
are detailed in their entries below. However, here is a high-level
overview of what changed from the 0.x version:
Added
+++++
* ``pvl.load()`` and ``pvl.dump()`` take all of the arguments that they could take
before (string containing a filename, byte streams, etc.), but now also accept any
``os.PathLike`` object, or even an already-opened file object.
* ``pvl.loadu()`` function will load PVL text from URLs.
* Utility programs `pvl_validate` and `pvl_translate` were added, please see
the "Utility Programs" section of the documentation for more information.
* The library can now parse and encode PVL Values with Units expressions
with third-party quantity objects like `astropy.units.Quantity` and `pint.Quantity`.
Please see the "Quantities: Values and Units" section of the documentation.
* Implemented a new PVLMultiDict (optional, needs 3rd party multidict library) which
which has more pythonic behaviors than the existing OrderedMultiDict. Experiment
with getting it returned by the loaders by altering your import statement to
``import pvl.new as pvl`` and then using the loaders as usual to get the new object
returned to you.
Changed
+++++++
* Only guaranteed to work with Python 3.6 and above.
* Rigorously implemented the three dialects of PVL text: PVL itself,
ODL, and the PDS3 Label Standard. There is a fourth de-facto
dialect, that of ISIS cube labels that is also handled. Please see
the "Standards & Specifications" section of the documentation.
* There is now a default dialect for the dump functions: the PDS3 Label Standard.
This is different and more strict than before, but other output dialects are
possible. Please see the "Writing out PVL text" section in the documentation
for more information, and how to enable an output similar to the 0.x output.
* There are now ``pvl.collections`` and ``pvl.exceptions`` modules. There was previously
an internal ``pvl._collections`` module, and the exception classes were scattered through
the other modules.
Fixed
+++++
* All ``datetime.time`` and ``datetime.datetime`` objects returned from the loaders
are now timezone "aware." Previously some were and some were not.
* Functionality to correctly parse dash (-) continuation lines in ISIS output is
now supported.
* The library now properly parses quoted strings that include backslashes.
Deprecated
++++++++++
* The `pvl.collections.Units` object is deprecated in favor of
the new ``pvl.collections.Quantity`` object (really a name-only change, no functionality
difference).