Skip to main content

zgitignore

zgitignore is a small library to check if a file has been excluded by a .zgitignore file (those are compatible with .gitignore / .dockerignore files).

Installation

As simple as it can be via pip:

$ pip install zgitignore

Or direct installation from source:

$ git clone git://github.com/zb3/zgitignore.git
$ cd zgitignore
$ python setup.py install

Usage

import zgitignore

# ZgitIgnore class stores the patterns, optionally takes two parameters: ignore_case and docker
# by default, it is case sensitive to match .gitignore behaviour
# for .dockerignore compatibility, use docker=True
f = zgitignore.ZgitIgnore(['build/', 'dist/', '*egg-info'])

# Patterns ending with / will match folders only:
print('build file ignored?: ', f.is_ignored('build')) # False

# When matching directories, set second parameter to True:
print('build folder ignored?: ', f.is_ignored('build', True)) # True

# It is case sensitive by default:
print('BUILD folder ignored?: ', f.is_ignored('BUILD', True)) # False

# Want it to be case-insensitive? No problem
f = zgitignore.ZgitIgnore(['*pycache*', '*pyc'], True) # second parameter is ignore_case

print('PYCACHE file ignored?', f.is_ignored('PYCACHE')) # True

# You can also add patterns later
ignorefile = zgitignore.ZgitIgnore(ignore_case=True, docker=True) # this is compatible with .dockerignore files

try:
    with open('.gitignore', 'r') as f:
        ignorefile.add_patterns(f.read().splitlines())
except:
    pass

# You can start paths with ./ or not.
# Paths are normalized to match Unix style paths
print('./a/b/c/d/e ignored?', ignorefile.is_ignored('./a/b/c/d/e'))

# But by default, parent directories aren't checked recursively
# To check them, use check_parents=True
f = zgitignore.ZgitIgnore(['build/'])

print('build/test ignored?', f.is_ignored('build/test')) # False
print('build/test ignored when check_parents=True?', f.is_ignored('build/test', check_parents=True)) # True

Format

zgitignore supports format similar to .gitignore file format. Differences are:

  • ** works everywhere

    ``aaa**ooo``

    Will match aaapotato2000/beeeee/llllll/sdsdooo

  • It can embed custom regex via {}. You can use \} to pass } to regex and \\ to pass \ to regex

    aaa{12(34|56|78)oo(aa|bb|dd)ii}888

    Will match aaa1256oobbii888

    aaa{#[0-9a-f]{3,6\}}888

    Will match aaa#00ffff888

Metadata

Release files for zgitignore 1.0.0

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

Source distribution (sdist)

Source distribution for zgitignore 1.0.0
File Size Uploaded
zgitignore-1.0.0.tar.gz 6.0 kB Details

Release files / zgitignore-1.0.0.tar.gz

Download URL zgitignore-1.0.0.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2e4d085114cc2c35191f1a1defee64c2ffa791b6763338c0e10ad57a25d2f0a4
BLAKE2b-256 checksum
How to use checksums
93f41b5402504a63973a42ac224179f0ef5c1169f3c59f4b725ac23339970158
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.7

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.1

1 release file

0.7

1 release file

0.6

1 release file

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