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

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 the modified key as writable in the details 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:

ResourceType

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