Source code for epygram.containers

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) Météo France (2014-)
# This software is governed by the CeCILL-C license under French law.
# http://www.cecill.info
"""
Contains the containers for a Resource.
"""

from __future__ import print_function, absolute_import, unicode_literals, division

import os

from footprints import FootprintBase

from epygram.util import RecursiveObject


[docs]class File(RecursiveObject, FootprintBase): """Generic class implementing a File.""" _collector = ('container', 'file') _footprint = dict( attr=dict( filename=dict( type=str, alias=('f',), info='Relative or absolute pathname.') ) ) def __init__(self, *args, **kwargs): """Constructor. See its footprint for arguments.""" # super to footprints constructor super(File, self).__init__(*args, **kwargs) # initialise absolute pathname self._abspath = os.path.abspath(self.filename) @property def basename(self): """Returns the basename of the file.""" return os.path.basename(self._abspath) @property def abspath(self): """Returns the absolute path of the file.""" return self._abspath @property def absdir(self): """Returns the absolute path of the directory of the file.""" return self._abspath[:-len(self.basename)]