Skip to main content

A CLI utility for aggregating file contents

Project description

Code Promptify

Code-Promptify is a command-line utility for aggregating code repository contents into a single string based on include and exclude patterns. It also provides metadata information, such as token count and billable characters. It is designed to help you prepare prompts for large language models (LLMs). The output is written to a file and also copied to your clipboard automatically.

Note: Currently metadata is only provided based on using Gemini 1.5 Pro or Gemini 1.5 Flash models. That is because token count depends on the specific tokenizer used by the model, which differents among models, though not significantly. If you're using a different model, you can still obtain the token count using either model's tokenizer and you will get a decent approximation.

See example_output.md for what the output looks like for this repo when running with default settings.

Example metadata output:

Field Value
Model gemini-1.5-flash
Token Count 16746
Billable Character Count 43197

Features

  • Aggregate file contents based on include and exclude patterns (glob strings)
  • Automatically ignores virtual environment files
  • Option to ignore empty files
  • Count tokens using Google's Vertex AI GenerativeModel
  • Output results to a file and clipboard

Installation using PIP

To install promptify, simply run:

pip install code-promptify

Installation from Source

To install Promptify, follow these steps:

  1. Clone the repository:

    git clone https://github.com/vmehmeri/promptify.git
    cd promptify
    
  2. Install the package and its dependencies:

    pip install -e . -r requirements.txt
    

Usage

After installation, you can run Promptify using the following command:

promptify [args]

Arguments

  • --model: Generative model to use for token counting (default: "gemini-1.5-flash")
  • --include: File patterns to include (default: ["*.py", "*.html", "*.js", "*.css", "*.json", "*.yaml", "*.txt", "*.md"])
  • --exclude: File patterns to exclude (default: ["*.pyc", "*egg-info*", "*tmp*"])
  • --ignore-empty: Flag to Ignore empty files (default: False)

Examples

  1. Use default settings:

    promptify
    
  2. Include only Python and JavaScript files:

    promptify --include "*.py" "*.js"
    
  3. Exclude test files and ignore empty files:

    promptify --exclude "*test*" --ignore-empty
    
  4. Use a different model for token counting:

    promptify --model "gemini-1.5-pro"
    

Output

See example_output.md

Dependencies

  • pyperclip
  • tabulate
  • google-cloud-aiplatform (for accurate token counting for Gemini models)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

code_promptify-0.1.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

code_promptify-0.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file code_promptify-0.1.tar.gz.

File metadata

  • Download URL: code_promptify-0.1.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for code_promptify-0.1.tar.gz
Algorithm Hash digest
SHA256 53334a2bccd39d8fe2d0f3886df6deed5dbdb318f39cebb628c6b65b85a3b842
MD5 286bb5e2302292778373639a07fd8370
BLAKE2b-256 d43c1438f59ded85b1c216f24218ee29275ef900c267ec019040569fa1b3128c

See more details on using hashes here.

File details

Details for the file code_promptify-0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for code_promptify-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1caedba7e9436ed1a7185433a64ac57804d727afdababee16c96fcf3ee956afa
MD5 4b5c90ff286481fc3f06fc0b57ec24a1
BLAKE2b-256 f19a4774e01c3c48551acb2f8e347db148dc7c6f79b0a198287f4b6d15f4b815

See more details on using hashes here.

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