Check if a file is ignored by a .zgitignore file, compatible with .gitignore syntax
Project description
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
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e4d085114cc2c35191f1a1defee64c2ffa791b6763338c0e10ad57a25d2f0a4 |
|
MD5 | 71a96f08d55b3900e5792cf7484ad5d8 |
|
BLAKE2b-256 | 93f41b5402504a63973a42ac224179f0ef5c1169f3c59f4b725ac23339970158 |