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: To count tokens, this tool uses the OpenAI tiktoken tokenizer library and should give you accurate results for most GPT models. For other models (Gemini, Llama, Mistral, etc.) the token count may not be 100% precise but it will be a good approximation. That is because the exact token count depends on the specific tokenizer used by the model, which differs among models.

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

Example metadata output:

| Field                   | Value           |
|-------------------------|-----------------|
| Tokenizer               | openai/tiktoken |
| Token Count             | 4763            |
| Character Count         | 15695           |
---------------  ---------------
Files included:
└── .
    ├── README.md
    ├── build
    │   └── lib
    │       └── promptify
    │           ├── __init__.py
    │           └── main.py
    ├── example_output.md
    ├── output.md
    ├── promptify
    │   └── __init__.py
    └── requirements.txt

Features

  • Aggregate file contents based on include and exclude patterns (glob strings)
  • Automatically ignores virtual environment files
  • Automatically ignores files where an API key was found
  • Option to ignore empty files
  • Output results to the clipboard automatically (May not work on Linux or Windows)
  • Optionally output results to a file

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

  • --include: File patterns to include (default: ["*.py", "*.html", "*.js", "*.css", "*.json", "*.yaml", "*.txt", "*.md"])
  • --exclude: File patterns to exclude (default: ["*.pyc", "*egg-info*", "*tmp*"])
  • --output: File to write the output to (Optional. Output will be automatically written to a file called output.promptify if clipboard copy fails)
  • --ignore-empty: Flag to Ignore empty files (default: False)
  • --no-skip: Force-include files where potential API keys are detected (default: False)
  • --export-profile: Save current filters and options to a named profile
  • --profile: Load filters and options from a saved profile

Examples

  1. Use default settings:

    promptify
    
  2. Include only Python and JavaScript files:

    promptify --include "*.py" "*.js"
    
  3. Include all files but exclude test files and ignore empty files:

    promptify --exclude "*test*" --ignore-empty
    
  4. Include all Python files except any inside a specific directory:

    promptify --include "*.py" --exclude "config/*" 
    
  5. Save current configuration as a profile:

    promptify --include "*.py" "*.js" --exclude "*test*" --export-profile my-js-py-app
    
  6. Apply the configuration from a saved profile:

    promptify --profile my-js-py-config
    

Output

See example_output.md

Dependencies

  • pyperclip
  • tabulate
  • token-count

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.7.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

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

code_promptify-0.7.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for code_promptify-0.7.0.tar.gz
Algorithm Hash digest
SHA256 92a71589c3556e275f8570796504e5aea6a9e26a68838a22a9f00a3528cc9853
MD5 9d744d08bedd35384ec8f45d789da767
BLAKE2b-256 9d057495a11d35567036dd5c129f6909db01454f78d6ed7ff245d6691bf4a9ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: code_promptify-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for code_promptify-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1d945d2c0f9c01cea4b01e40d63a6335f41a7f243425c4be26e2bfd71d2ed22
MD5 8fcddce0aee8d17a6e3ce0c7f3b2cc64
BLAKE2b-256 62ff7d95b29221c80aa4de72aa1cabb4da5d18ec09fbdb838e8a9c0bc6b96560

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