Release v0.1.1 (What’s new?).

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

Table of Content

About the Author

(\ (\
( -.-)o
o_(")(")

Sanhe Hu is a seasoned software engineer with a deep passion for Python development since 2010. As an author and maintainer of 150+ open-source Python projects, with over 15 million monthly downloads, I bring a wealth of experience to the table. As a Senior Solution Architect and Subject Matter Expert in AI, Data, Amazon Web Services, Cloud Engineering, DevOps, I thrive on helping clients with platform design, enterprise architecture, and strategic roadmaps.

Talk is cheap, show me the code:

API Document