Metadata-Version: 2.4
Name: addmeta
Version: 0.3.1
Summary: Add meta data to netCDF files.
Author-email: Aidan Heerdegen <aidan.heerdegen@anu.edu.au>, Tommy Gatti <tommy.gatti@anu.edu.au>, Davide Marchegiani <davide.marchegiani@anu.edu.au>
Maintainer-email: Aidan Heerdegen <aidan.heerdegen@anu.edu.au>
License-Expression: Apache-2.0
Project-URL: Repository, https://github.com/ACCESS-NRI/addmeta
Keywords: ACCESS-NRI,netcdf,metadata
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: netcdf4
Requires-Dist: pyyaml
Provides-Extra: dev
Requires-Dist: coverage; extra == "dev"
Requires-Dist: codecov; extra == "dev"
Requires-Dist: six; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Dynamic: license-file

[![Build Status](https://travis-ci.org/coecms/addmeta.svg?branch=master)](https://travis-ci.org/coecms/addmeta)
[![codecov.io](https://codecov.io/github/coecms/addmeta/coverage.svg?branch=master)](https://codecov.io/github/coecms/addmeta?branch=master)

# addmeta

Add meta data to netCDF files.

## Metadata

The metadata is stored in attribute files in [YAML](https://yaml.org) format. 
The metadata is in key-value pairs and is a global attribute if defined in a 
`global` section, or applied to a specific named variable in the `variables` 
section. 

If an attribute is listed with a missing value that attribute is deleted from the file.

For example the following is an example of an attribute file:
```yaml
global:
    # Mandatory since it gives a key to all the other attributes
    Conventions: "CF-1.7, ACDD-1.3"
    # The url of the license applied to the data
    license: "http://creativecommons.org/licenses/by-nc-sa/4.0/"
variables:
    yt_ocean:
        _FillValue:
        long_name: "latitude in rotated pole grid"
        units: "degrees"
    geolat_t:
        long_name: "latitude coordinate"
        units: "degrees_north"
        standard_name: "latitude"
```
It will create (or replace) two global attributes: `Conventions` and `license`.
It will also create (or replace) attributes for two variables, `yt_ocean` and
`geolat_t`, and delete the `_FillValue` attribute of `yt_ocean`.

The information is read into a `python` dict. Multiple attribute files can be
specified. If the same attribute is defined more than once, the last attribute
file specified takes precedence. Like cascading style sheets this means default
values can be given and overridden when necessary. 


## Invocation

`addmeta` is a command line program. Invoking with the `-h` flag prints
a summay of how to invoke the program correctly.

    $ addmeta -h
    usage: addmeta [-h] [-m METAFILES] [-l METALIST] [-v] files [files ...]

    Add meta data to one or more netCDF files

    positional arguments:
    files                 netCDF files

    optional arguments:
    -h, --help            show this help message and exit
    -m METAFILES, --metafiles METAFILES
                            One or more meta-data files in YAML format
    -l METALIST, --metalist METALIST
                            File containing a list of meta-data files
    -v, --verbose         Verbose output

Multiple attribute files can be specified by passing more than one file with
the `-m` option. For a large number of files this can be tedious. In that case
use the `-l` option and pass it a text file with the names of attribute files,
one per line.

Multiple meta list files and meta files can be specified on one command line.

