Skip to main content

Use the syntax and semantics of gitignore with custom ignore file names and locations

Project description

ignorelib

Use the syntax and semantics of gitignore with custom ignore file names and locations

git has a comprehensive mechanism for selecting files to ignore inside repositories. ignorelib lets you use the same system, customized to your own needs.

You can read about the semantics of gitignore here: https://git-scm.com/docs/gitignore

This library is a lightly-modified version of the gitignore implementation in dulwich, a pure Python implementation of git.

Installation

python -m pip install ignorelib

Usage

Setup

The primary entrypoint is the class factory method IgnoreFilterManager.build(), with the following inputs:

  • path: the root path (required). All path checks you make are relative to this path.
  • global_ignore_file_paths: an optional list of file paths to attempt to load global ignore patterns from.
    • Relative paths are relative to the root path (for git, this would be .git/info/exclude)
    • User expansion is performed, so paths like (for git) ~/.config/git/ignore work.
    • Files that cannot be loaded are silently ignored, so you don't need to check if they exist or not.
    • Files earlier in the list take precedence, and these files take precendence over the patterns in global_patterns.
  • global_patterns: an optional list of global ignore patterns. These are the things that should always be ignored (for git, this would be .git to exclude the repo directory)
  • ignore_file_name: an optional file name for the per-directory ignore file (for git, this would be .gitignore).
  • ignore_case: an optional boolean for specifying whether to ignore case, defaulting to false.

Use

You check if a given path is ignored with the is_ignored() method of an IgnoreFilterManager object, which takes a (relative) path and returns True if it matches an ignore pattern. It returns False if it is explicitly not ignored (using a pattern starting with !), or None if the file does not match any patterns. Note that this allows you to distinguish between the default state (not ignoring) and actually matching a pattern that prevents it from being ignored.

To iterate over not-ignored files, IgnoreFilterManager.walk() has the same interface as os.walk() but without taking a root path, as this comes from the the IgnoreFilterManager.

After using an IgnoreFilterManager instance to get a number of paths, you can extract the state (i.e., all loaded patterns with their sources) in a JSON-serializable format with the IgnoreFilterManager.to_dict() method.

Example

To replicate the behavior of git, you would do something like:

import os.path

import ignorelib

def get_filter_manager_for_path(path):
  return ignorelib.IgnoreFilterManager(path,
      global_ignore_file_paths=[
          os.path.join('.git', 'info', 'exclude'), # relative to input path, so within the repo
          os.path.expanduser(os.path.join('~', '.config', 'git', 'ignore')) # absolute
      ],
      global_patterns=['.git'],
      ignore_file_name='.gitignore')

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

ignorelib-0.3.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

ignorelib-0.3.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file ignorelib-0.3.0.tar.gz.

File metadata

  • Download URL: ignorelib-0.3.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/4.19.128-microsoft-standard

File hashes

Hashes for ignorelib-0.3.0.tar.gz
Algorithm Hash digest
SHA256 712ae752cdf1717c53c5009169b167f4e23c963e5405f86af1078329923e08fd
MD5 049e5fc377474f4c2fcdda9ffc52891f
BLAKE2b-256 d04a4d76ff7d494ce1299e735e5d3a199d973e73c5bf5f39b927826063ed86cb

See more details on using hashes here.

File details

Details for the file ignorelib-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: ignorelib-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/4.19.128-microsoft-standard

File hashes

Hashes for ignorelib-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2575083ff18534a8a3925a2a531b0d2f9d326efe550dc54e726ab5d6a6598d0c
MD5 4a0dacebb491fc5ab65fd3bc2b2220e9
BLAKE2b-256 0fafb9dd9b4421238e979932f949192aa9dba3689eedbc8a76d95042150a4c28

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