Skip to main content

Extended Pathlib

Project description

Superpathlib

PyPI version Python version Operating system Coverage

Maximize your productivity using minimal code!

Superpathlib enhances file operations, making them more intuitive and easy to implement. This library extends Python's standard library pathlib module, offering an expansive range of added features without compromising performance.

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())

This only works if you inherit from superpathlib Path, not pathlib Path

Installation

pip install superpathlib

or

pip install superpathlib[full]

Install the packages corresponding with the properties you want to use:

  • e.g. PyYaml for yaml property
  • 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.2.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

superpathlib-2.0.2-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: superpathlib-2.0.2.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for superpathlib-2.0.2.tar.gz
Algorithm Hash digest
SHA256 3d9a5e9df137f60d24fa9c90ac648431079829037d0f814f582a64387a693c47
MD5 7db6b39765f651d3cebee4429fe6486e
BLAKE2b-256 ece7dcff1c150985e65e4d747f47a20728c09db5b960dc2238c30c00902802ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: superpathlib-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for superpathlib-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4e1494c4019a2f3f5a2f99cc50900bf7eb86b96b4a29b1ddc945d52afbf9a8f7
MD5 b3fe6dff74326704283732430a6ef3c5
BLAKE2b-256 98a81e5cf848b02435ab2b96da340cdbb4545a4cbb07ca57c0d1d55367b51acb

See more details on using hashes here.

Supported by

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