Skip to main content
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

Metadata

Release files for pathpick 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pathpick 0.1.1
File Size Uploaded
pathpick-0.1.1.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pathpick 0.1.1
File Interpreter ABI Platform
pathpick-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.9 kB

Release files / pathpick-0.1.1.tar.gz

Download URL pathpick-0.1.1.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ce617cb2bb8135208dc1df8c4fa82fcccdf11ec08130d9b8e92cf41dc63dfb6b
BLAKE2b-256 checksum
How to use checksums
cb110fbefa16653eb33af0952f60912b4305f5560e231fe1f36ea4ea846909cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.8

Release files / pathpick-0.1.1-py3-none-any.whl

Download URL pathpick-0.1.1-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1ef3437658d950da836d1aa5a672a27f0abc2f0e35c0c34e4d99f08f8c8f8fc
BLAKE2b-256 checksum
How to use checksums
80b6acf87873fb43c327d887e6299a2e3344d31523805d7ad5e7c94601a4581e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page