<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_cmor_fname_meta(fname):
 """Processes a CMOR style file name. Section 3.3 of the `Data Reference Syntax`_ details: filename = <variable name>_<mip_table>_<model>_<experiment>_ <ensemble_member>[_<temporal_subset>][_<geographical_info>].nc Temporal subsets are detailed in section 2.4: Time instants or periods will be represented by a construction of the form “N1-N2”, where N1 and N2 are of the form ‘yyyy[MM[dd[hh[mm[ss]]]]][-suffix]’, where ‘yyyy’, ‘MM’, ‘dd’, ‘hh’ ‘mm’ and ‘ss’ are integer year, month, day, hour, minute, and second, respectively, and the precision with which time is expressed must unambiguously resolve the interval between timesamples contained in the file or virtual file Geographic subsets are also detailed in section 2.4: The DRS specification for this indicator is a string of the form g-XXXX[-YYYY]. The “g-” indicates that some spatial selection or processing has been done (i.e., selection of a sub-global region and possibly spatial averaging). Arguments: fname (str):
 A file name conforming to DRS spec. Returns: dict: Metadata as extracted from the filename. .. _Data Reference Syntax: http://cmip-pcmdi.llnl.gov/cmip5/docs/cmip5_data_reference_syntax.pdf """

    if '/' in fname:
        fname = os.path.split(fname)[1]
    fname = os.path.splitext(fname)[0]
    meta = fname.split('_')

    res = {}

    try:
        for key in CMIP5_FNAME_REQUIRED_ATTS:
            res[key] = meta.pop(0)
    except IndexError:
        raise PathError(fname)

    # Determine presence and order of optional metadata
    if len(meta) > 2:
        raise PathError(fname)

    is_geo = lambda x: x[0] == 'g'

    for key in meta:
        if is_geo(key):
            res['geographical_info'] = key
        else:
            res['temporal_subset'] = key

    return res