mirror of
https://github.com/ralsina/tartrazine.git
synced 2024-11-12 22:42:23 +00:00
8ff885a3a8
Closes #17 Implements the IsGenerated helper function to filter out generated files using the rules and matchers in: - https://github.com/github/linguist/blob/master/lib/linguist/generated.rb Since the vast majority of matchers have very different logic, it cannot be autogenerated directly from linguist like other logics in enry, so it's translated by hand. There are three different types of matchers in this implementation: - By extension, which mark as generated based only in the extension. These are the fastest matchers, so they're done first. - By file name, which matches patterns against the filename. These are performed in second place. Unlike linguist, we try to use string functions instead of regexps as much as possible. - Finally, the rest of the matchers, which go into the content and try to identify if they're generated or not based on the content. Unlike linguist, we try to only read the content we need and not split it all unless it's necessary and use byte functions instead of regexps as much as possible. Signed-off-by: Miguel Molina <miguel@erizocosmi.co> |
||
---|---|---|
.. | ||
build_enry.py | ||
enry.py | ||
README.md | ||
requirements.txt |
Python bindings for enry
Python bindings through cFFI (API, out-of-line) for calling enry Go functions exposed by CGo wrapper.
Build
$ cd .. && make static
$ python build_enry.py
Will build a static library for Cgo wrapper libenry
, then generate and build enry.c
- a CPython extension that provides actual bindings.
Run
Example for single exposed API function is provided.
$ python enry.py
TODOs
- helpers for sending/receiving Go slices to C
- read
libenry.h
and generateffibuilder.cdef(...)
content - cover the rest of enry API
- add
setup.py
- build/release automation on CI (publish on pypi)
- try ABI mode, to avoid dependency on C compiler on install (+perf test?)