Skip to main content

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zgitignore-1.0.0.tar.gz (6.0 kB view details)

Uploaded Source

File details

Details for the file zgitignore-1.0.0.tar.gz.

File metadata

  • Download URL: zgitignore-1.0.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for zgitignore-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2e4d085114cc2c35191f1a1defee64c2ffa791b6763338c0e10ad57a25d2f0a4
MD5 71a96f08d55b3900e5792cf7484ad5d8
BLAKE2b-256 93f41b5402504a63973a42ac224179f0ef5c1169f3c59f4b725ac23339970158

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 file

0.8.2

1 file

0.8.1

1 file

0.8.0

1 file

0.7.1

1 file

0.7

1 file

0.6

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page