Python-ACK is a code-searching tool, similar to grep but optimized for programmers searching large trees of source code.
Project description
Python-ACK
ACK is a code-searching tool, similar to grep but optimized for programmers searching large trees of source code.
Features
- Multi-process search
- Exclude specific paths and patterns
- ANSI color-coded output
- Search in symlinks (Python >= 2.6 only)
- Execution statistics
Usage as script
Options
- --num-processes, -n: Number of processes to use (default: 4).
- --exclude-path, -x: Exclude paths matching EXCLUDE_PATH_PATTERN.
- --follow-links, -f: Follow symlinks (Python >= 2.6 only).
- --exclude-search, -s: Exclude results matching EXCLUDE_PATTERN.
- --no-colors, -c: Don't print ANSI colors like ACK tool.
- --statistics, -t: On final print execution statistics.
Example
Search:
python -m python_ack "apple" /path/to/search
Help:
python -m python_ack --help
usage: python-ack [-h] [--num-processes NUM_PROCESSES] [--exclude-path EXCLUDE_PATH_PATTERN] [--follow-links] [--exclude-search EXCLUDE_PATTERN]
[--no-colors] [--statistics]
PATTERN [DIRECTORY]
Python-ACK is a code-searching tool, similar to grep but optimized for programmers searching large trees of source code.
positional arguments:
PATTERN Pattern to search for.
DIRECTORY A directory to search.
options:
-h, --help show this help message and exit
--num-processes NUM_PROCESSES, -n NUM_PROCESSES
Number of processes to use.
--exclude-path EXCLUDE_PATH_PATTERN, -x EXCLUDE_PATH_PATTERN
Exclude paths matching EXCLUDE_PATH_PATTERN.
--follow-links, -f Follow symlinks (Python >= 2.6 only).
--exclude-search EXCLUDE_PATTERN, -s EXCLUDE_PATTERN
Exclude results matching EXCLUDE_PATTERN.
--no-colors, -c Don't print ANSI colors like ACK tool.
--statistics, -t On final print excecution statistics.
Ack Class Attributes
The ack class in Python-ACK has several attributes that allow you to customize the behavior of the search tool. Here's a brief description of each attribute:
- path: The path to the directory where the search will be performed.
- regexp: The regular expression pattern to search for in files.
- num_processes: Number of processes to use for the multi-process search (default: 4).
- exclude_paths_regexp: A list of regular expressions to exclude paths from the search.
- follow_links: Boolean flag indicating whether to follow symbolic links (Python >= 2.6 only).
- exclude_regexp: A list of regular expressions to exclude results matching specific patterns in files.
- use_ansi_colors: Boolean flag indicating whether to use ANSI colors in the output.
- search_function: Custom search function to be used for searching in files.
- return_as_dict: Boolean flag indicating whether to return the result as a dictionary.
Example Usage:
from python_ack.ack import ack
def main():
folder = "/path/to/search"
instance = ack(
path=folder,
regexp="apple",
exclude_regexp=["solor"],
num_processes=10,
exclude_paths_regexp=["exclude_*"],
follow_links=False,
use_ansi_colors=False
)
instance.process_folders()
instance.print_result()
duration = instance.get_duration()
if duration is not None:
print(f"\nComplete in {duration}ms.")
if __name__ == "__main__":
main()
Local dev
In root folder run pip install -e .
cd /tests
python test.py
Local cli run
python -m python_ack
Acknowledgements
- Author: Anton Sychev
- Email: anton@sychev.xyz
License
This project is licensed under the MIT License - see the LICENSE file for details.
Make sure to replace "/path/to/search" with your actual path. You can also customize the badges, add more sections, and provide more details based on your project's needs.
Publish to Pypi
Local:
python -m pip install build twine
python3 -m build
twine check dist/*
twine upload dist/*
Live: No need do nothing GitHub have Workflow action its publish auto
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python-ack-0.0.2.tar.gz.
File metadata
- Download URL: python-ack-0.0.2.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8272356c5538208aa85c26c5ad1faddb5cf195f96e51b68b1db1fcef5243a284
|
|
| MD5 |
eaa6b03148d7ea7bd3d25140f1b8dbca
|
|
| BLAKE2b-256 |
fc45d6fd8ce1bfa4ee6a3cfb323fac4ed778522d0fc18f7fa1a3dddeb7660519
|
File details
Details for the file python_ack-0.0.2-py3-none-any.whl.
File metadata
- Download URL: python_ack-0.0.2-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb97a4fc9b5a0e2119247545a8de06a58848586488f3b2bb8909c91c066126ca
|
|
| MD5 |
e41a1e2d9dfe1fe4973d8f3f3dbf5e36
|
|
| BLAKE2b-256 |
b13ad6f860b25ed78d46fb176f394ccb41304ef2fa107af4e69fbd6d3e809a42
|