Source code for aiida.repository.common

# -*- coding: utf-8 -*-
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved.                     #
# This file is part of the AiiDA code.                                    #
#                                                                         #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida-core #
# For further information on the license, see the LICENSE.txt file        #
# For further information please visit http://www.aiida.net               #
###########################################################################
# pylint: disable=redefined-builtin
"""Module with resources common to the repository."""
import enum
import warnings

from aiida.common.warnings import AiidaDeprecationWarning

__all__ = ('File', 'FileType')


[docs]class FileType(enum.Enum): """Enumeration to represent the type of a file object.""" DIRECTORY = 0 FILE = 1
[docs]class File: """Data class representing a file object."""
[docs] def __init__(self, name: str = '', file_type: FileType = FileType.DIRECTORY, type=None): """ .. deprecated:: 1.4.0 The argument `type` has been deprecated and will be removed in `v2.0.0`, use `file_type` instead. """ if type is not None: warnings.warn( 'argument `type` is deprecated and will be removed in `v2.0.0`. Use `file_type` instead.', AiidaDeprecationWarning ) # pylint: disable=no-member""" file_type = type if not isinstance(name, str): raise TypeError('name should be a string.') if not isinstance(file_type, FileType): raise TypeError('file_type should be an instance of `FileType`.') self._name = name self._file_type = file_type
@property def name(self) -> str: """Return the name of the file object.""" return self._name @property def type(self) -> FileType: """Return the file type of the file object. .. deprecated:: 1.4.0 Will be removed in `v2.0.0`, use `file_type` instead. """ warnings.warn('property is deprecated, use `file_type` instead', AiidaDeprecationWarning) # pylint: disable=no-member""" return self.file_type @property def file_type(self) -> FileType: """Return the file type of the file object.""" return self._file_type
[docs] def __iter__(self): """Iterate over the properties.""" warnings.warn( '`File` has changed from named tuple into class and from `v2.0.0` will no longer be iterable', AiidaDeprecationWarning ) yield self.name yield self.file_type
[docs] def __eq__(self, other): return self.file_type == other.file_type and self.name == other.name