Skip to main content

Extended Pathlib

Project description

Superpathlib

Superpathlib offers Path objects with functionality extended from pathlib to maximize your productivity with a minimal amount of code.

Usage

from plib 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
  • 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

examples:

with Path.tempfile() as tmp:
    do_work(logfile=tmp)
    log = tmp.text
process(log)

condition = lambda p: (p / '.git').exists()
for git_path in root.find(condition):
    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=[])

6) Inherit from Path to define your own additional functionality:

example:

from plib import Path as BasePath

class Path(BasePath):
    def count_children(self):
        return sum(1 for _ in self.iterdir())

This only works if you inherit from plib and not from the builtin pathlib

Installation

pip install superpathlib

Install the packages corresponding with the properties you want to use

  • e.g. PyYaml for yaml property
  • Packages listed in requirements.txt

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-1.0.3.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

superpathlib-1.0.3-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: superpathlib-1.0.3.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for superpathlib-1.0.3.tar.gz
Algorithm Hash digest
SHA256 7bf2cef6d624994b7e6666d8e5b960536192a177e7ed89ebfb82a68acba56fab
MD5 e9e7b05cf603b4a60cdd8627d3cda705
BLAKE2b-256 2da222f1525af90e46045b4c35184f25ca0bea0f6397cd95f6b0d1e8fa60db91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for superpathlib-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8c8c09daaafd7d1591185eaa364a55c9a4af8fea123e4b072fd8176d7521258c
MD5 f089b5c14b91b59ff50d8608eda99cf2
BLAKE2b-256 761853b2d9946121e5238315a2b5d53a6c2a4cb0410a7eec8daae6b1edefe42b

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