Skip to main content

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

Metadata

Release files for python-ack 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-ack 0.0.2
File Size Uploaded
python-ack-0.0.2.tar.gz 9.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-ack 0.0.2
File Interpreter ABI Platform
python_ack-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 18.5 kB

Release files / python-ack-0.0.2.tar.gz

Download URL python-ack-0.0.2.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8272356c5538208aa85c26c5ad1faddb5cf195f96e51b68b1db1fcef5243a284
BLAKE2b-256 checksum
How to use checksums
fc45d6fd8ce1bfa4ee6a3cfb323fac4ed778522d0fc18f7fa1a3dddeb7660519
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / python_ack-0.0.2-py3-none-any.whl

Download URL python_ack-0.0.2-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb97a4fc9b5a0e2119247545a8de06a58848586488f3b2bb8909c91c066126ca
BLAKE2b-256 checksum
How to use checksums
b13ad6f860b25ed78d46fb176f394ccb41304ef2fa107af4e69fbd6d3e809a42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page