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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

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

Hashes for python-ack-0.0.2.tar.gz
Algorithm Hash digest
SHA256 8272356c5538208aa85c26c5ad1faddb5cf195f96e51b68b1db1fcef5243a284
MD5 eaa6b03148d7ea7bd3d25140f1b8dbca
BLAKE2b-256 fc45d6fd8ce1bfa4ee6a3cfb323fac4ed778522d0fc18f7fa1a3dddeb7660519

See more details on using hashes here.

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

Hashes for python_ack-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fb97a4fc9b5a0e2119247545a8de06a58848586488f3b2bb8909c91c066126ca
MD5 e41a1e2d9dfe1fe4973d8f3f3dbf5e36
BLAKE2b-256 b13ad6f860b25ed78d46fb176f394ccb41304ef2fa107af4e69fbd6d3e809a42

See more details on using hashes here.

Supported by

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