Skip to main content

A lightweight Python library for selecting files using gitignore-style include and exclude patterns.

Project description

Documentation Status https://github.com/MacHu-GWU/pathpick-project/actions/workflows/main.yml/badge.svg https://codecov.io/gh/MacHu-GWU/pathpick-project/branch/main/graph/badge.svg https://img.shields.io/pypi/v/pathpick.svg https://img.shields.io/pypi/l/pathpick.svg https://img.shields.io/pypi/pyversions/pathpick.svg https://img.shields.io/badge/Release_History!--None.svg?style=social https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
https://img.shields.io/badge/Link-Document-blue.svg https://img.shields.io/badge/Link-API-blue.svg https://img.shields.io/badge/Link-Install-blue.svg https://img.shields.io/badge/Link-GitHub-blue.svg https://img.shields.io/badge/Link-Submit_Issue-blue.svg https://img.shields.io/badge/Link-Request_Feature-blue.svg https://img.shields.io/badge/Link-Download-blue.svg

Welcome to pathpick Documentation

https://pathpick.readthedocs.io/en/latest/_static/pathpick-logo.png

pathpick is a Python library that makes it easy to filter files and directories using familiar glob-style patterns inspired by .gitignore. It supports both include and exclude rules, giving you fine-grained control over which paths are selected. Under the hood, it uses the powerful pathspec library and supports Git’s WildMatchPattern syntax.

A path is included if it matches any of the include patterns and does not match any of the exclude patterns. If include patterns are empty, then include everything by default. If exclude patterns are empty, the we don’t exclude anything. This logic is ideal for projects that involve scanning files, building file manifests, cleaning directories, or deploying selected content.

Usage Examples

First, read this document to get basic understanding about the include / exclude pattern syntax.

  1. Include all Python files

from pathpick.api import PathPick

pick = PathPick.new(include=["**/*.py"], exclude=[])

pick.is_match("main.py")                # True
pick.is_match("utils/helper.py")        # True
pick.is_match("README.md")              # False
  1. Include all files, but exclude logs and temporary files

pick = PathPick.new(
    include=["**/*"],
    exclude=["**/*.log", "**/*.tmp"]
)

pick.is_match("report.csv")             # True
pick.is_match("debug.log")              # False
pick.is_match("backup/data.tmp")        # False
  1. Include files in specific folders

pick = PathPick.new(
    include=["src/**/*.py", "docs/**/*.md"],
    exclude=[]
)

pick.is_match("src/main.py")            # True
pick.is_match("docs/intro.md")          # True
pick.is_match("test/test_main.py")      # False
  1. Exclude test files even if they match the include pattern

pick = PathPick.new(
    include=["**/*.py"],
    exclude=["**/test_*.py", "**/tests/*"]
)

pick.is_match("src/module.py")          # True
pick.is_match("tests/test_module.py")   # False
pick.is_match("src/test_utils.py")      # False

Install

pathpick is released on PyPI, so all you need is to:

$ pip install pathpick

To upgrade to latest version:

$ pip install --upgrade pathpick

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

pathpick-0.1.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

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

pathpick-0.1.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file pathpick-0.1.1.tar.gz.

File metadata

  • Download URL: pathpick-0.1.1.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for pathpick-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ce617cb2bb8135208dc1df8c4fa82fcccdf11ec08130d9b8e92cf41dc63dfb6b
MD5 7da9e87b13d007c83bf44c63cf837224
BLAKE2b-256 cb110fbefa16653eb33af0952f60912b4305f5560e231fe1f36ea4ea846909cd

See more details on using hashes here.

File details

Details for the file pathpick-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pathpick-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for pathpick-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b1ef3437658d950da836d1aa5a672a27f0abc2f0e35c0c34e4d99f08f8c8f8fc
MD5 a52b061f94c1e4cd98e9c001e009c092
BLAKE2b-256 80b6acf87873fb43c327d887e6299a2e3344d31523805d7ad5e7c94601a4581e

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