Skip to main content

Extended Pathlib

Project description

Superpathlib

PyPI version PyPI downloads Python version Operating system Coverage

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, modification time, and custom tags
  • Utility methods:
    • rmtree to remove directories recursively
    • copy_to to copy content
    • tempfile to create and use temporary files
    • find for recursive search
    • unpack for 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

examples:

path.json = {key: value}

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
    • tag: can be used for alternative ordering or metadata

examples:

path_new.mtime = path_old.mtime

if path.tag != skip_keyword and 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_properties_to(dest): recursively copy path properties (mtime, tag) to all n-level children of dest
  • tempfile(): create temporary file that can be used as context manager
  • unpack(): extract archive(zip, tar, ..) file to desired folder
  • pop_parent(): remove first parent from path in filesystem
  • from_uri(uri): create path object from uri string

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

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

superpathlib-2.0.13.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

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

superpathlib-2.0.13-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file superpathlib-2.0.13.tar.gz.

File metadata

  • Download URL: superpathlib-2.0.13.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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}

File hashes

Hashes for superpathlib-2.0.13.tar.gz
Algorithm Hash digest
SHA256 dcd85cd749d6f5eb50bd70be0829ab0fd8813a2b4a066910ee1d6c75ccaadf74
MD5 8412ea32996d05828d4e9df9cbba6f11
BLAKE2b-256 d0092c0c5e53d47fb4946fb9c3e42fdaa8ecc96317b8fb895b5915a3a8ac8b7c

See more details on using hashes here.

File details

Details for the file superpathlib-2.0.13-py3-none-any.whl.

File metadata

  • Download URL: superpathlib-2.0.13-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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}

File hashes

Hashes for superpathlib-2.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 edbd8ac2c5079433aff3f2f92d768cbf998a95e4d0b9c732034836edfc09f706
MD5 2b6b7dc25e0ebcf5bf0c7f9ab0df4397
BLAKE2b-256 526d884305347e7d9d12a26449911259dfe89c63c79274eb161820272ca1c4e7

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