Skip to main content

Python-ACK is a code-searching tool, similar to grep but optimized for programmers searching large trees of source code.

Project description

Python-ACK

Python Version License

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

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


Download files

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

Source Distribution

python-ack-0.0.2.tar.gz (9.5 kB view hashes)

Uploaded Source

Built Distribution

python_ack-0.0.2-py3-none-any.whl (9.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page