Superpathlib
Maximize your productivity with minimal code!
Superpathlib is an enhanced version of Python's standard pathlib, designed to make file operations more intuitive and extend functionality without compromising performance. It builds on pathlib by introducing additional properties, methods, and shortcuts that simplify common file manipulations and reduce boilerplate code.
For custom operations, the package supports subclassing, which has been added to the standard library in python3.12.
Key features:
- Read and write content in various formats such as text, bytes, YAML, JSON, and even NumPy arrays
- Access and modify file metadata like file size and modification time
- Utility methods:
rmtreeto remove directories recursivelycopy_toto copy contenttempfileto create and use temporary filesfindfor recursive searchunpack_if_archivefor unpacking archives
Usage
from superpathlib import Path
path = Path(filename)
1) Use properties to read & write path content in different formats
- text
- byte_content
- lines
- yaml
- json
- numpy
read-only:
- cached_yaml: yaml content, cached as json next to the file
gpg-encrypted on disk:
- encrypted: prefix any of the above to read & write plaintext (e.g.
path.encrypted.json)
examples:
path.json = {key: value}
path.encrypted.json = {key: secret}
for line in path.lines:
if interesting(line):
process(line)
2) Use instance properties to get/set file metadata:
- get:
- size: filesize
- is_root: whether the owner of the file is a root user
- has_children: whether a path has children
- number_of_children: number of children in a folder
- filetype: content type of a file
- content_hash: a hash of the complete substructure found in a folder
- get & set:
- mtime: modified time
examples:
path_new.mtime = path_old.mtime
if path.filetype == "video":
process(path)
3) Use class properties to access commonly used folders:
- docs
- assets
- ..
example:
names_path = Path.assets / 'names'
names = names_path.lines
4) Use additional functionality
- find(): recursively find all paths under a root that match a condition (extra options available for performance optimization)
- rmtree(): remove directory recursively
- copy_to(dest): copy content to dest
- copy_mtime_to(dest): recursively copy modified time to all n-level children of dest
- tempfile(): create temporary file that can be used as context manager
- unpack_if_archive(): extract an archive(zip, tar, ..) file to desired folder, recursively
- pop_parent(): remove first parent from path in filesystem
examples:
with Path.tempfile() as tmp:
do_work(logfile=tmp)
log = tmp.text
process(log)
is_git_root = lambda p: (p / '.git').exists()
for git_path in root.find(is_git_root):
process_git(git_path)
5) Enhance existing functionality
- Automatically create parents when writing files, creating new files, renaming files, ..
- Return default values when path does not exist (e.g. size = 0, lines=[])
- Support replacing folders instead files only if specified
6) Inherit from superpathlib Path to define your own additional functionality:
example:
import superpathlib
class Path(superpathlib.Path):
def count_children(self):
return sum(1 for _ in self.iterdir())
The standard pathlib library supports this for Python versions starting from python3.12.
Installation
pip install superpathlib
or
pip install superpathlib[full]
to include additional dependencies like PyYAML for handling YAML files
or
Manually install the packages corresponding with the features you want to use:
- Packages listed in pyproject.toml
Metadata
Release files for superpathlib 2.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| superpathlib-2.1.1.tar.gz | 16.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| superpathlib-2.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.3 kB
Release files / superpathlib-2.1.1.tar.gz
| Download URL | superpathlib-2.1.1.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2e650ce6b4a2bfe14c506bf1c49bbc30592063c7af112091bb44bfa4fad418cb
|
|
BLAKE2b-256 checksum How to use checksums |
3222d53acbbf47f2333d5473d65244f77666dc3155c67847fe62d59c8e7c6b88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / superpathlib-2.1.1-py3-none-any.whl
| Download URL | superpathlib-2.1.1-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4fa1567c4309972749275e915a40974b0573443e8929855795d6f1cadb82d9df
|
|
BLAKE2b-256 checksum How to use checksums |
b61f98d1d77b6452e876b54a45683e155b7bb94eae348fe3b8c8988754fa9e03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|