Skip to main content

Python package containing useful file system operations

Project description

File System IO

Badges
License License: MIT
PyPI PyPI version PyPI - Python Version
Version Build Status
Main GitHub Build main GitHub Build main

File System IO or simply FSIO is a Python package containing useful file system operations.

Table of contents

Installation

Installing the main package is as simple as downloading from PyPI.

pip install 'fsio==$VERSION'

If you also require use of the CLI, then you can install with extras as follows.

pip install 'fsio[cli]==$VERSION'

Getting Started

This package was designed for simplifying some file system operations. Its original design was for detecting file types of a file, but it has been expanded beyond this. The main code lives within the core directory. Here, for example, you will see the file_type class which supports the detect-file-type commands within the CLI. Moreover, we can use this within Python code provided we have the object in BytesIO form. For example, suppose we have a .parquet file without an extension and we want to establish its type, and confirm that it really is of type parquet. To do this, we could do something as follows.

>>> from io import BytesIO
>>> from pathlib import Path
>>>
>>> from fsio.core import FileType
>>>
>>> path_to_file = Path('path/to/suspected/parquet')
>>>
>>> with path_to_file.open('rb') as f:
>>>     body = BytesIO(f.read())
>>>
>>> FileType.detect_file_type(body)
'parquet'

CLI

If you optionally installed the cli subpackage, then you get extra functionality and are able to use most of the functionality from the core package. For example, you can detect the file type of a given file using the command

fsio detect-file-type path/to/file.ext

This will return the type of the file to the stdout, for example parquet. You can get more information about each command by using the --help flag on each command. The CLI was designed using typer, from the creators of FastAPI. A list of the following CLI commands which are available are below.

Commands
fsio detect-file-type FILE Detect the type of FILE given as input
fsio supported-types List the current supportoed file types

Development

To contribute to this project, you can clone the repository and install the development dependencies. This can be done using uv sync --all-extras (which uses the uv.lock file for consistency). There is a pre-commit hook which will run on each commit to ensure that the code is formatted correctly. To install this, we need to run

uv sync --extra test

to install pre-commit and then run pre-commit install in terminal. We can manually run the pre-commit hooks using the command

pre-commit run --all-files

Branching

When creating a new branch, please use one of the following:

  • feature/* for new features (branch from and PR to develop);
  • bugfix/* for bug fixes (non-critical) (branch from and PR to develop);
  • hotfix/* for hotfixes (branch from and PR to main, syncing to develop); and
  • release/* for releases (branch from develop with PR to main, syncing to develop).

The main branch is the stable deployment, and release branches are used for preparing a new release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fsio-1.3.7.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fsio-1.3.7-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file fsio-1.3.7.tar.gz.

File metadata

  • Download URL: fsio-1.3.7.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.6

File hashes

Hashes for fsio-1.3.7.tar.gz
Algorithm Hash digest
SHA256 14354d99962d5c77df795620a7bb1df8307df9037227734fed82a138a4560ef5
MD5 c50723af31fa923fe9b96c3c15ffad58
BLAKE2b-256 e150af4bda525f02ce9953b566b2c7d3dda06fa92ec1084e139dc65174a37645

See more details on using hashes here.

File details

Details for the file fsio-1.3.7-py3-none-any.whl.

File metadata

  • Download URL: fsio-1.3.7-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.6

File hashes

Hashes for fsio-1.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 be812c168f856498999e38613e36cc17707ed8b2df1c21be8ebf41ae25ed5a03
MD5 5cbaf7590a909de6769a10b891146917
BLAKE2b-256 dc4b619265137479a142ea75c0b21059cebe1a08a7ec9cd675a8a3e4edd77c95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page