fs.info¶
Container for filesystem resource informations.
- class fs.info.Info(raw_info: RawInfo, to_datetime: ToDatetime = <function epoch_to_datetime>)[source]¶
Container for Resource Info.
Resource information is returned by the following methods:
- Parameters:
raw_info (dict) – A dict containing resource info.
to_datetime (callable) – A callable that converts an epoch time to a datetime object. The default uses
epoch_to_datetime
.
- __init__(raw_info: RawInfo, to_datetime: ToDatetime = <function epoch_to_datetime>) None [source]¶
Create a resource info object from a raw info dict.
- property accessed¶
the resource last access time, or
None
.Requires the
"details"
namespace.- Raises:
MissingInfoNamespace – if the
"details"
namespace is not in the Info.- Type:
datetime
- copy(to_datetime: Optional[ToDatetime] = None) Info [source]¶
Create a copy of this resource info object.
- property created¶
the resource creation time, or
None
.Requires the
"details"
namespace.- Raises:
MissingInfoNamespace – if the
"details"
namespace is not in the Info.- Type:
datetime
- get(namespace: Text, key: Text, default: Optional[Any] = None) Optional[Any] [source]¶
Get a raw info value.
- Parameters:
namespace (str) – A namespace identifier.
key (str) – A key within the namespace.
default (object, optional) – A default value to return if either the namespace or the key within the namespace is not found.
Example
>>> info = my_fs.getinfo("foo.py", namespaces=["details"]) >>> info.get('details', 'type') 2
- property gid¶
the group id of the resource, or
None
.Requires the
"access"
namespace.- Raises:
MissingInfoNamespace – if the
"access"
namespace is not in the Info.- Type:
int
- property group¶
the group of the resource owner, or
None
.Requires the
"access"
namespace.- Raises:
MissingInfoNamespace – if the
"access"
namespace is not in the Info.- Type:
str
- has_namespace(namespace: str) bool [source]¶
Check if the resource info contains a given namespace.
- Parameters:
namespace (str) – A namespace identifier.
- Returns:
True
if the namespace was found,False
otherwise.- Return type:
bool
- property is_dir¶
True
if the resource references a directory.- Type:
bool
- property is_file¶
True
if the resource references a file.- Type:
bool
- property is_link¶
True
if the resource is a symlink.- Type:
bool
- is_writeable(namespace: str, key: str) bool [source]¶
Check if a given key in a namespace is writable.
When creating an
Info
object, you can add a_write
key to each raw namespace that lists which keys are writable or not.In general, this means they are compatible with the
setinfo
function of filesystem objects.- Parameters:
namespace (str) – A namespace identifier.
key (str) – A key within the namespace.
- Returns:
True
if the key can be modified,False
otherwise.- Return type:
bool
Example
Create an
Info
object that marks only themodified
key as writable in thedetails
namespace:>>> now = time.time() >>> info = Info({ ... "basic": {"name": "foo", "is_dir": False}, ... "details": { ... "modified": now, ... "created": now, ... "_write": ["modified"], ... } ... }) >>> info.is_writeable("details", "created") False >>> info.is_writeable("details", "modified") True
- make_path(dir_path: str) str [source]¶
Make a path by joining
dir_path
with the resource name.- Parameters:
dir_path (str) – A path to a directory.
- Returns:
A path to the resource.
- Return type:
str
- property metadata_changed¶
the resource metadata change time, or
None
.Requires the
"details"
namespace.- Raises:
MissingInfoNamespace – if the
"details"
namespace is not in the Info.- Type:
datetime
- property modified¶
the resource last modification time, or
None
.Requires the
"details"
namespace.- Raises:
MissingInfoNamespace – if the
"details"
namespace is not in the Info.- Type:
datetime
- property name¶
the resource name.
- Type:
str
- property permissions¶
the permissions of the resource, or
None
.Requires the
"access"
namespace.- Raises:
MissingInfoNamespace – if the
"access"
namespace is not in the Info.- Type:
Permissions
- property size¶
the size of the resource, in bytes.
Requires the
"details"
namespace.- Raises:
MissingInfoNamespace – if the
"details"
namespace is not in the Info.- Type:
int
- property stem¶
the name minus any suffixes.
Example
>>> info = my_fs.getinfo("foo.tar.gz") >>> info.stem 'foo'
- Type:
str
- property suffix¶
the last component of the name (with dot).
In case there is no suffix, an empty string is returned.
Example
>>> info = my_fs.getinfo("foo.py") >>> info.suffix '.py' >>> info2 = my_fs.getinfo("bar") >>> info2.suffix ''
- Type:
str
- property suffixes¶
a list of any suffixes in the name.
Example
>>> info = my_fs.getinfo("foo.tar.gz") >>> info.suffixes ['.tar', '.gz']
- Type:
List
- property target¶
the link target (if resource is a symlink), or
None
.Requires the
"link"
namespace.- Raises:
MissingInfoNamespace – if the
"link"
namespace is not in the Info.- Type:
str
- property type¶
the type of the resource.
Requires the
"details"
namespace.- Raises:
MissingInfoNamespace – if the ‘details’ namespace is not in the Info.
- Type:
- property uid¶
the user id of the resource, or
None
.Requires the
"access"
namespace.- Raises:
MissingInfoNamespace – if the
"access"
namespace is not in the Info.- Type:
int
- property user¶
the owner of the resource, or
None
.Requires the
"access"
namespace.- Raises:
MissingInfoNamespace – if the
"access"
namespace is not in the Info.- Type:
str