# Quill: README Generator
Quill is a command-line tool that uses LLMs to generate comprehensive `README.md` files for your projects. The README you're reading right now was generated using Quill!
## Technologies Used
* **Python:** The primary programming language.
* **Google Gemini:** The large language model used for README generation.
* **Repopack:** For efficient codebase packaging.
* **Rich:** For enhanced console output and progress display.
* **Python-dotenv:** For loading environment variables from a `.env` file.
## Prerequisites
* **Python 3.9 or higher:** Ensure you have a compatible Python version installed.
* **Google Cloud Platform Project and Gemini API Key:** You need a GCP project and an active Gemini API key. Instructions on how to obtain one are available on the Google Cloud Platform documentation. See the Configuration section below for details on how to set this up.
* **pip:** Python's package installer.
## Installation
### Standard Installation
You can install Quill directly from PyPI:
```bash
pip install quill
```
### Development Installation
If you want to contribute or modify the code:
1. **Clone the repository:**
```bash
git clone https://github.com/usedispatch/Quill.git
cd Quill
```
2. **Create a virtual environment (recommended):**
```bash
python3 -m venv venv
source venv/bin/activate # On Linux/macOS
venv\Scripts\activate # On Windows
```
3. **Install in development mode:**
```bash
pip install -e .
```
## Configuration
Before using Quill, you need to set your Google Gemini API key. Create a `.env` file in your project directory and add your API key:
```
GEMINI_API_KEY=your_gemini_api_key
```
You can also optionally configure these environment variables for customization:
* `GEMINI_MODEL`: The Gemini model to use (default: `gemini-pro`).
* `DEFAULT_OUTPUT`: The default name for the Repopack output file (default: `repopack-output.txt`).
* `DEFAULT_README`: The default name for the generated README file (default: `README.md`).
* `GENERATION_TEMPERATURE`: Controls the randomness of the LLM's output (default: 0.7). A higher value (closer to 1.0) will result in more creative and unpredictable outputs; a lower value (closer to 0.0) will make the output more deterministic.
* `MAX_OUTPUT_TOKENS`: Limits the maximum number of tokens in the generated README (default: 8192).
## Usage
Quill is used via the command line. The basic usage is:
```bash
quill <directory> [-o <output_file>] [-r <readme_file>] [-k] [--temp-dir <temp_dir>] [--verbose]
```
* `<directory>`: The path to the directory containing your project's codebase (defaults to the current directory).
* `-o <output_file>`: Specifies the name of the Repopack output file (optional).
* `-r <readme_file>`: Specifies the name of the generated README file (optional).
* `-k`: Keeps the Repopack output file after generating the README (optional).
* `--temp-dir <temp_dir>`: Specifies a custom temporary directory (optional).
* `--verbose`: Enables verbose logging (optional).
**Example:**
To generate a README for the current directory, saving the Repopack output as `my_repo.txt` and the README as `MY_README.md`, run:
```bash
quill -o my_repo.txt -r MY_README.md
```
## Project Structure
```
Quill/
├── src/
│ └── quill/
│ ├── logger/
│ │ ├── __init__.py
│ │ └── logger.py
│ ├── __init__.py
│ ├── __main__.py
│ ├── cli.py
│ ├── config.py
│ ├── generator.py
│ └── utils.py
├── tests/
│ └── conftest.py
├── LICENSE
├── pyproject.toml
├── requirements-dev.txt
├── requirements.txt
└── setup.py
```
* `src/`: Contains the source code for the Quill application.
* `tests/`: Contains unit tests for the project.
* `LICENSE`: The project's license file.
* `pyproject.toml`: Project metadata and build system configuration.
* `requirements.txt`: Project dependencies.
* `requirements-dev.txt`: Development dependencies.
* `setup.py`: Setup script for installing the package.
## Contributing Guidelines
(This section would be populated based on any contributing guidelines found within the codebase, but none were provided in the input.)
## License Information
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Error Messages
* **`ValueError: GEMINI_API_KEY not found in environment variables`:** This error occurs if the `GEMINI_API_KEY` environment variable is not set. Make sure you have configured your Gemini API key as described in the Configuration section.
* **`RuntimeError: Repopack CLI not found...`:** This indicates that Repopack is not installed. Install it using `pip install repopack`.
* **`RuntimeError: Repopack command failed...`:** This means there was an error running the Repopack command. Check the verbose logs for more details.
* **`RuntimeError: Failed to generate README...`:** This indicates a failure in the LLM generation process. Check the verbose logs for potential errors and retry. There could be issues with your Gemini API Key or network connectivity.
* **`FileNotFoundError: Directory not found...` or `FileNotFoundError: File not found...`:** Check if the specified directory or file exists.
Raw data
{
"_id": null,
"home_page": "https://github.com/usedispatch/Quill",
"name": "quill",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.9",
"maintainer_email": null,
"keywords": "readme, documentation, generator, AI, Gemini",
"author": "Robert",
"author_email": "robert@arweave.org",
"download_url": "https://files.pythonhosted.org/packages/46/9e/d1fbb57f5be40297bc88873b89f8ca10956e843808a3a63ab096dd324aa6/quill-1.0.0.tar.gz",
"platform": null,
"description": "# Quill: README Generator\n\nQuill is a command-line tool that uses LLMs to generate comprehensive `README.md` files for your projects. The README you're reading right now was generated using Quill!\n\n## Technologies Used\n\n* **Python:** The primary programming language.\n* **Google Gemini:** The large language model used for README generation.\n* **Repopack:** For efficient codebase packaging.\n* **Rich:** For enhanced console output and progress display.\n* **Python-dotenv:** For loading environment variables from a `.env` file.\n\n## Prerequisites\n\n* **Python 3.9 or higher:** Ensure you have a compatible Python version installed.\n* **Google Cloud Platform Project and Gemini API Key:** You need a GCP project and an active Gemini API key. Instructions on how to obtain one are available on the Google Cloud Platform documentation. See the Configuration section below for details on how to set this up.\n* **pip:** Python's package installer.\n\n## Installation\n\n### Standard Installation\n\nYou can install Quill directly from PyPI:\n\n```bash\npip install quill\n```\n\n### Development Installation\n\nIf you want to contribute or modify the code:\n\n1. **Clone the repository:**\n ```bash\n git clone https://github.com/usedispatch/Quill.git\n cd Quill\n ```\n\n2. **Create a virtual environment (recommended):**\n ```bash\n python3 -m venv venv\n source venv/bin/activate # On Linux/macOS\n venv\\Scripts\\activate # On Windows\n ```\n\n3. **Install in development mode:**\n ```bash\n pip install -e .\n ```\n\n## Configuration\n\nBefore using Quill, you need to set your Google Gemini API key. Create a `.env` file in your project directory and add your API key:\n\n```\nGEMINI_API_KEY=your_gemini_api_key\n```\n\nYou can also optionally configure these environment variables for customization:\n\n* `GEMINI_MODEL`: The Gemini model to use (default: `gemini-pro`).\n* `DEFAULT_OUTPUT`: The default name for the Repopack output file (default: `repopack-output.txt`).\n* `DEFAULT_README`: The default name for the generated README file (default: `README.md`).\n* `GENERATION_TEMPERATURE`: Controls the randomness of the LLM's output (default: 0.7). A higher value (closer to 1.0) will result in more creative and unpredictable outputs; a lower value (closer to 0.0) will make the output more deterministic.\n* `MAX_OUTPUT_TOKENS`: Limits the maximum number of tokens in the generated README (default: 8192).\n\n## Usage\n\nQuill is used via the command line. The basic usage is:\n\n```bash\nquill <directory> [-o <output_file>] [-r <readme_file>] [-k] [--temp-dir <temp_dir>] [--verbose]\n```\n\n* `<directory>`: The path to the directory containing your project's codebase (defaults to the current directory).\n* `-o <output_file>`: Specifies the name of the Repopack output file (optional).\n* `-r <readme_file>`: Specifies the name of the generated README file (optional).\n* `-k`: Keeps the Repopack output file after generating the README (optional).\n* `--temp-dir <temp_dir>`: Specifies a custom temporary directory (optional).\n* `--verbose`: Enables verbose logging (optional).\n\n**Example:**\n\nTo generate a README for the current directory, saving the Repopack output as `my_repo.txt` and the README as `MY_README.md`, run:\n\n```bash\nquill -o my_repo.txt -r MY_README.md\n```\n\n## Project Structure\n\n```\nQuill/\n\u251c\u2500\u2500 src/\n\u2502 \u2514\u2500\u2500 quill/\n\u2502 \u251c\u2500\u2500 logger/\n\u2502 \u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u2502 \u2514\u2500\u2500 logger.py\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 __main__.py\n\u2502 \u251c\u2500\u2500 cli.py\n\u2502 \u251c\u2500\u2500 config.py\n\u2502 \u251c\u2500\u2500 generator.py\n\u2502 \u2514\u2500\u2500 utils.py\n\u251c\u2500\u2500 tests/\n\u2502 \u2514\u2500\u2500 conftest.py\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 pyproject.toml\n\u251c\u2500\u2500 requirements-dev.txt\n\u251c\u2500\u2500 requirements.txt\n\u2514\u2500\u2500 setup.py\n```\n\n* `src/`: Contains the source code for the Quill application.\n* `tests/`: Contains unit tests for the project.\n* `LICENSE`: The project's license file.\n* `pyproject.toml`: Project metadata and build system configuration.\n* `requirements.txt`: Project dependencies.\n* `requirements-dev.txt`: Development dependencies.\n* `setup.py`: Setup script for installing the package.\n\n## Contributing Guidelines\n\n(This section would be populated based on any contributing guidelines found within the codebase, but none were provided in the input.)\n\n## License Information\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Error Messages\n\n* **`ValueError: GEMINI_API_KEY not found in environment variables`:** This error occurs if the `GEMINI_API_KEY` environment variable is not set. Make sure you have configured your Gemini API key as described in the Configuration section.\n* **`RuntimeError: Repopack CLI not found...`:** This indicates that Repopack is not installed. Install it using `pip install repopack`.\n* **`RuntimeError: Repopack command failed...`:** This means there was an error running the Repopack command. Check the verbose logs for more details.\n* **`RuntimeError: Failed to generate README...`:** This indicates a failure in the LLM generation process. Check the verbose logs for potential errors and retry. There could be issues with your Gemini API Key or network connectivity.\n* **`FileNotFoundError: Directory not found...` or `FileNotFoundError: File not found...`:** Check if the specified directory or file exists.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Generate comprehensive README files for your project via LLM",
"version": "1.0.0",
"project_urls": {
"Documentation": "https://github.com/usedispatch/Quill#readme",
"Homepage": "https://github.com/usedispatch/Quill",
"Repository": "https://github.com/usedispatch/Quill"
},
"split_keywords": [
"readme",
" documentation",
" generator",
" ai",
" gemini"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b6bea499375a81567bdb00b887ecc0b28adaa4ca424b7a29741cb0bc6588c3ae",
"md5": "2d8c42144e9cddb13b26380355e177d1",
"sha256": "410beb71c39539e755991c0e1f599a963872a360a7271d86a7e03bb0b7865bec"
},
"downloads": -1,
"filename": "quill-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2d8c42144e9cddb13b26380355e177d1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.9",
"size": 10979,
"upload_time": "2024-12-09T20:42:28",
"upload_time_iso_8601": "2024-12-09T20:42:28.716618Z",
"url": "https://files.pythonhosted.org/packages/b6/be/a499375a81567bdb00b887ecc0b28adaa4ca424b7a29741cb0bc6588c3ae/quill-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "469ed1fbb57f5be40297bc88873b89f8ca10956e843808a3a63ab096dd324aa6",
"md5": "09d5d61c1c07e28fde8ad3ad2155553c",
"sha256": "b42a913fd7ff2d90ce5b1401bf1e97578e40363fc57753380041caf8ce85a8ea"
},
"downloads": -1,
"filename": "quill-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "09d5d61c1c07e28fde8ad3ad2155553c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.9",
"size": 10523,
"upload_time": "2024-12-09T20:42:30",
"upload_time_iso_8601": "2024-12-09T20:42:30.807201Z",
"url": "https://files.pythonhosted.org/packages/46/9e/d1fbb57f5be40297bc88873b89f8ca10956e843808a3a63ab096dd324aa6/quill-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-09 20:42:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "usedispatch",
"github_project": "Quill",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "google-generativeai",
"specs": [
[
">=",
"0.2.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "rich",
"specs": [
[
">=",
"13.7.0"
]
]
},
{
"name": "repopack",
"specs": [
[
">=",
"0.1.4"
]
]
}
],
"lcname": "quill"
}