# Python wreport package

## Module contents

wreport provides access to weather data in BUFR and CREX formats.

This is the Python interface to it

class wreport.Var

  Var holds a measured value, which can be integer, float or string, and a `Varinfo` with all available information (description, unit, precision, …) related to it.

  Var objects can be created from a `Varinfo` object, and an optional value. Omitting the value creates an unset variable.

  Examples:

      table = wreport.Vartable.get_bufr(master_table_version_number=24)
      v = wreport.Var(table["B12101"], 32.5)
      # v.info returns detailed informations about the variable in a Varinfo object.
      print("%s: %s %s %s" % (v.code, str(v), v.info.unit, v.info.desc))

  Constructor: Var(varinfo: Union[wreport.Varinfo, wreport.Var], value: Union[str, int, float] = None)

  Parameters:

    - varinfo – `Varinfo` or `Var` to use to create the variable

    - value – value for the variable

  If the variable is a scaled decimal, getting and setting its value using integers or strings will use the raw unscaled representation of its value. This provides a way to work with the exact underlying representation of values, without dealing with the potential limitations of floating point representations.

  code

    variable code

  enq() → str | float | int

    get the value of the variable, as int, float or str according the variable definition

  enqa(code: str) → wreport.Var | None

    get the variable for the attribute with the given code, or None if not found

  enqc() → str

    get the value of the variable, as a str

    If the variable is a scaled decimal value, this returns its unscaled integer representation. This provides a way to work with the exact underlying representation of values, without dealing with the potential limitations of floating point representations.

  enqd() → float

    get the value of the variable, as a float

  enqi() → int

    get the value of the variable, as an int

    If the variable is a scaled decimal value, this returns its unscaled integer representation. This provides a way to work with the exact underlying representation of values, without dealing with the potential limitations of floating point representations.

  format(default: str=) → str

    return a string with the formatted value of the variable

  get(default: Any = None) → str | float | long | Any

    get the value of the variable, as int, float or str according the variable definition. If the variable is unset, `default` is returned

  get_attrs() → List[wreport.Var]

    get the attributes of this variable

  info

    Varinfo for this variable

  isset

    true if the value is set

  seta(var: wreport.Var)

    set an attribute in the variable

  unseta(code: str)

    unset the given attribute from the variable

class wreport.Varinfo

  Varinfo object holds all possible information about a variable, such as its measurement unit, description and number of significant digits.

  Varinfo objects cannot be instantiated directly, and are created by querying `Vartable` objects.

  bit_len

    number of bits used to encode the value in BUFR

  bit_ref

    reference value added after scaling, for BUFR decoding

  code

    variable code

  desc

    description

  len

    number of significant digits

  scale

    scale of the value as a power of 10

  type

    return a string describing the type of the variable (string, binary, integer, decimal)

  unit

    measurement unit

class wreport.Vartable

  Collection of Varinfo objects indexed by WMO BUFR/CREX table B code.

  A Vartable is instantiated by one of the `get_bufr()`, `get_crex()`, `load_bufr()`, `load_crex()` class methods:

      table = wreport.Vartable.get_bufr(master_table_version_number=23)
      print(table["B12101"].desc)

  classmethod get_bufr(basename: str = None, originating_centre: int = 0, originating_subcentre: int = 0, master_table_number: int = 0, master_table_version_number: int = None, master_table_version_number_local: int = 0) → wreport.Vartable

    Look up a table B file using the information given, then load BUFR information from it.

    You need to provide either basename or master_table_version_number.

    Parameters:

      - basename – load the table with the given name in `/usr/share/wreport/`

      - originating_centre – originating centre for the table data

      - originating_subcentre – originating subcentre for the table data

      - master_table_number – master table number for the table data

      - master_table_version_number – master table version number for the table data

      - master_table_version_number_local – local master table version number for the table data

  classmethod get_crex(basename: str = None, edition_number=2, originating_centre: int = 0, originating_subcentre: int = 0, master_table_number: int = 0, master_table_version_number: int = None, master_table_version_number_bufr: int = None, master_table_version_number_local: int = 0) → wreport.Vartable

    Look up a table B file using the information given, then load CREX information from it.

    You need to provide either basename or master_table_version_number or master_table_version_number_bufr.

    Parameters:

      - basename – load the table with the given name in `/usr/share/wreport/`

      - edition_number – edition number for the table data

      - originating_centre – originating centre for the table data

      - originating_subcentre – originating subcentre for the table data

      - master_table_number – master table number for the table data

      - master_table_version_number – master table version number for the table data

      - master_table_version_number_bufr – BUFR master table version number for the table data

      - master_table_version_number_local – local master table version number for the table data

  classmethod load_bufr(pathname: str) → wreport.Vartable

    Load BUFR information from a Table B file and return it as a wreport.Vartable.

    Parameters:

      pathname – pathname of the file to load

  classmethod load_crex(pathname: str) → wreport.Vartable

    Load CREX information from a Table B file and return it as a wreport.Vartable.

    Parameters:

      pathname – pathname of the file to load

  pathname

    name of the table

wreport.convert_units(from_unit: str, to_unit: str, value: float) → float

  convert a value from a unit to another, as understood by wreport