# LLM Project Summarizer
[](https://github.com/MuhammadYossry/llm-project-summarizer/actions/workflows/ci.yml)
[](https://badge.fury.io/py/llm-project-summarizer)
[](https://pypi.org/project/llm-project-summarizer)
[](https://opensource.org/licenses/MIT)
LLM Project Summarizer is a specialized command-line tool that transforms Python and Go codebases into concise, structured summaries optimized for Large Language Models. When working with LLMs like ChatGPT or Claude, sending entire codebases is often impractical due to context limitations. This tool solves that problem by generating intelligent summaries that capture the essential architecture, relationships, and patterns in your code while excluding implementation details.
The tool understands language-specific patterns – in Go, it recognizes packages, interfaces, and implementations; in Python, it comprehends modules, class hierarchies, and type annotations. The output is formatted in Markdown with Mermaid diagrams, making it ideal for LLM consumption and human readability.
## Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Usage](#usage)
- [Configuration](#configuration)
- [How It Works](#how-it-works)
- [Examples](#examples)
- [Contributing](#contributing)
- [Testing](#testing)
- [License](#license)
## Features
✨ **Smart Code Analysis**
- Understands Python and Go code patterns
- Extracts classes, functions, interfaces and their relationships
- Identifies key architectural patterns
📊 **Rich Visualization**
- Generates Mermaid diagrams showing dependency relationships
- Creates hierarchical package/module summaries
- Shows inheritance and implementation relationships
🔧 **Flexible Configuration**
- Exclude patterns and directories
- Customize output format and detail level
- YAML configuration support
## Installation
### Option 1: Install from PyPI
```bash
pip install llm-project-summarizer
```
### Option 2: Install from GitHub
```bash
pip install git+https://github.com/MuhammadYossry/llm-project-summarizer.git
```
### Option 3: Development Installation
```bash
# Clone the repository
git clone https://github.com/MuhammadYossry/llm-project-summarizer
cd llm-project-summarizer
# Install with poetry (recommended for development)
poetry install
# Or install with pip in editable mode
pip install -e .
```
## Usage
### Basic Usage
```bash
# Using pip installed version
llm-project-summarizer /path/to/project
# Custom output file
llm-project-summarizer /path/to/project -o custom_summary.md
# Exclude patterns
llm-project-summarizer /path/to/project --exclude "vendor/*" --exclude "*.test.go"
```
### Using Poetry
```bash
# Install and run using poetry
poetry install
poetry run llm-project-summarizer/path/to/project
# Run with options
poetry run llm-project-summarizer /path/to/project -o summary.md --exclude "vendor/*"
```
### With Configuration File
Create `.summarizer.yaml`:
```yaml
exclude:
- "vendor/*"
- "**/*_test.go"
- "**/__pycache__"
output: "project_summary.md"
```
Use the config:
```bash
llm-project-summarizer /path/to/project --config .summarizer.yaml
```
### Command Line Options
```bash
llm-project-summarizer--help
Options:
--output, -o PATH Output file path [default: project_summary.md]
--exclude, -e TEXT Exclusion patterns (can be used multiple times)
--config, -c PATH Path to config file
--help Show this message and exit
```
## How It Works
The tool employs language-specific parsers to analyze source code. For Go, it uses pattern matching to identify packages, interfaces, and implementations. For Python, it utilizes the Abstract Syntax Tree (AST) to extract classes, functions, and their relationships. The parsed information is then organized into a hierarchical structure optimized for LLM understanding.
## Examples
for example running the tool against this Python project project
`llm-project-summarizer llm-project-summarizer -o summary.md`
will output into `summary.md`
```
# Project Summary
## Project Architecture
This is a Python project with the following structure:
### Package Structure
#### llm_project_summarizer/__init__.py
#### llm_project_summarizer/cli.py
Symbols:
function: def load_config(config_path)
Load configuration from YAML file
function: @...
@...
@...
@...
@...
def main(project_path, output, exclude, config)
Analyze and summarize a code project for LLM consumption.
#### llm_project_summarizer/parsers/base.py
Symbols:
class: @dataclass
class CodeSymbol
Represents a code symbol (function, class, interface, etc.)
class: @dataclass
class FileSymbols
Contains all symbols found in a single file
class: class LanguageParser(ABC)
Abstract base class for language-specific parsers
function: def _sanitize_docstring(self, docstring)
Cleans up a docstring for consistent formatting
function: @abstractmethod
def can_parse(self, filename)
Determines if this parser can handle the given file
function: @abstractmethod
def parse_file(self, filepath)
Parses a file and returns its symbols
#### llm_project_summarizer/parsers/go.py
Symbols:
class: class GoParser(LanguageParser)
Parses Go source files to extract symbols and relationships
function: def _extract_docstring(self, content, start_pos)
Extract Go-style documentation comments
function: def _extract_functions(self, content)
Extract function declarations from Go source
function: def _extract_imports(self, content)
Extract all imports from Go source
function: def _extract_interfaces(self, content)
Extract interface declarations from Go source
function: def _extract_package(self, content)
Extract the package name from Go source
function: def _extract_types(self, content)
Extract type declarations from Go source
function: def can_parse(self, filename)
function: def parse_file(self, filepath)
#### llm_project_summarizer/parsers/python.py
Symbols:
class: class PythonParser(LanguageParser)
Parses Python source files using the ast module
function: def _extract_imports(self, tree)
Extract all imports from an AST
function: def _format_arguments(self, args)
Format function arguments as a string
function: def _format_decorators(self, decorators)
Format decorators as strings
function: def _format_expression(self, node)
Format an AST expression node as a string
function: def _process_async_function(self, node)
Process an async function definition
function: def _process_class(self, node)
Process a class definition
function: def _process_function(self, node)
Process a function definition
function: def can_parse(self, filename)
function: def parse_file(self, filepath)
#### llm_project_summarizer/summarizer.py
Symbols:
class: class ProjectSummarizer
Main class for summarizing a project's structure
function: def __init__(self)
function: def summarize_project(self, project_path, exclusions)
Summarize all supported files in the project
function: def write_summary(self, project_path, results, output_file)
Write the project summary to a file
#### tests/__init__.py
#### tests/conftest.py
Symbols:
function: @pytest.fixture
def sample_go_file(tmp_path)
Create a sample Go file for testing
function: @pytest.fixture
def sample_project(tmp_path)
Create a sample project structure
function: @pytest.fixture
def sample_python_file(tmp_path)
Create a sample Python file for testing
#### tests/test_cli.py
Symbols:
function: def test_cli_basic_usage(sample_project)
function: def test_cli_custom_output(sample_project, tmp_path)
function: def test_cli_handles_config_file(sample_project, tmp_path)
function: def test_cli_invalid_project_path()
function: def test_cli_with_exclusions(sample_project)
#### tests/test_parsers.py
Symbols:
function: def test_go_parser_can_parse()
function: def test_go_parser_extracts_functions(sample_go_file)
function: def test_go_parser_extracts_imports(sample_go_file)
function: def test_go_parser_extracts_interfaces(sample_go_file)
function: def test_go_parser_extracts_package(sample_go_file)
function: def test_go_parser_extracts_structs(sample_go_file)
function: def test_python_parser_can_parse()
function: def test_python_parser_extracts_classes(sample_python_file)
function: def test_python_parser_extracts_functions(sample_python_file)
function: def test_python_parser_extracts_imports(sample_python_file)
function: def test_python_parser_handles_invalid_file(tmp_path)
#### tests/test_summarizer.py
Symbols:
function: def test_summarizer_generates_mermaid_diagram(sample_project, tmp_path)
function: def test_summarizer_handles_empty_project(tmp_path)
function: def test_summarizer_processes_project(sample_project)
function: def test_summarizer_respects_exclusions(sample_project)
function: def test_summarizer_writes_summary(sample_project, tmp_path)
```
And the mermaid dependices graph
```mermaid
graph TD
llm_project_summarizer-->click
llm_project_summarizer-->logging
llm_project_summarizer-->yaml
llm_project_summarizer-->pathlib.Path
llm_project_summarizer-->typing.Optional
llm_project_summarizer-->summarizer.ProjectSummarizer
llm_project_summarizer-->os
llm_project_summarizer-->logging
llm_project_summarizer-->typing.Dict
llm_project_summarizer-->typing.List
llm_project_summarizer-->typing.Optional
llm_project_summarizer-->parsers.base.FileSymbols
llm_project_summarizer-->parsers.go.GoParser
llm_project_summarizer-->parsers.python.PythonParser
parsers-->ast
parsers-->logging
parsers-->typing.List
parsers-->typing.Set
parsers-->typing.Optional
parsers-->typing.Any
parsers-->base.LanguageParser
parsers-->base.FileSymbols
parsers-->base.CodeSymbol
parsers-->re
parsers-->typing.List
parsers-->typing.Optional
parsers-->typing.Match
parsers-->base.LanguageParser
parsers-->base.FileSymbols
parsers-->base.CodeSymbol
parsers-->abc.ABC
parsers-->abc.abstractmethod
parsers-->dataclasses.dataclass
parsers-->dataclasses.field
parsers-->typing.List
parsers-->typing.Optional
parsers-->typing.Set
tests-->os
tests-->pytest
tests-->pathlib.Path
tests-->pytest
tests-->llm_project_summarizer.parsers.go.GoParser
tests-->llm_project_summarizer.parsers.python.PythonParser
tests-->llm_project_summarizer.parsers.base.CodeSymbol
tests-->llm_project_summarizer.parsers.base.FileSymbols
tests-->os
tests-->pytest
tests-->pathlib.Path
tests-->llm_project_summarizer.summarizer.ProjectSummarizer
tests-->pytest
tests-->click.testing.CliRunner
tests-->llm_project_summarizer.cli.main
```
Running it against a Go project
`llm-project-summarizer pdf-form-service -o summary.md`
will result into output
```
# Project Summary
## Project Architecture
This is a Go project with the following structure:
### Package Structure
#### internal/file_utils/file_utils.go
Package: file_utils
Symbols:
function: func CreateFile(filePath string) (*os.File, error)
createFile creates a file at the given path and returns a file pointer.
function: func GenerateUniqueFileName(baseName string)
generateUniqueFileName generates a unique filename for the output file.
function: func OpenFile(filePath string) (*os.File, error)
openFile opens the file at the given path and returns a file pointer.
#### internal/file_utils/minio_utils.go
Package: file_utils
Symbols:
function: func InitAndTestMinio()
function: func UploadFileToBucket(filePath string)
function: func getEnv(key, fallback string)
Utils
#### main.go
Package: main
Symbols:
type: type ExportFormResponse struct
ExportFormResponse represents the response body for the export-form endpoint.
type: type FillFormRequest struct
FillFormRequest represents the request body for the fill-form endpoint.
type: type FillFormResponse struct
FillFormResponse represents the response body for the fill-form endpoint.
function: func exportFormHandler(w http.ResponseWriter, r *http.Request)
exportFormHandler handles the Get request to the /export-form endpoint.
function: func fillFormHandler(w http.ResponseWriter, r *http.Request)
fillFormHandler handles the POST request to the /fill-form endpoint.
function: func main()
function: func validateFileName(fileName string) (string, error)
validateFileName checks if the given filename is allowed.
#### main_test.go
Package: main
Symbols:
function: func TestFillFormHandler(t *testing.T)
TestFillFormHandler tests the fillFormHandler endpoint.
```
With the mermaid dependices graph
```mermaid
graph TD
main-->fmt
main-->log
main-->strings
main-->bytes
main-->net/http
main-->encoding/json
main-->github.com/pdfcpu/pdfcpu/pkg/api
main-->github.com/pdfcpu/pdfcpu/pkg/pdfcpu/model
main-->pdf-form-service/internal/file_utils
main-->encoding/json
main-->io/ioutil
main-->net/http
main-->net/http/httptest
main-->os
main-->strings
main-->testing
file_utils-->fmt
file_utils-->os
file_utils-->time
file_utils-->fmt
file_utils-->os
file_utils-->time
file_utils-->context
file_utils-->log
file_utils-->path/filepath
file_utils-->net/url
file_utils-->github.com/minio/minio-go/v7
file_utils-->github.com/minio/minio-go/v7/pkg/credentials
templates-->json
```
## Contributing
We welcome contributions. To get started:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for any new functionality
5. Submit a pull request
## Testing
Run the test suite using Poetry:
```bash
# Run all tests
poetry run pytest
# Run tests with coverage report
poetry run pytest --cov=llm_project_summarizer tests/ --cov-report=term-missing
# Run specific test files
poetry run pytest tests/test_parsers.py
```
## License
This project is licensed under the MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/MuhamadYossry/llm-project-summarizer",
"name": "llm-project-summarizer",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.9",
"maintainer_email": null,
"keywords": "llm",
"author": "Yossry",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/f0/ad/ba21c08d2da45e01557788feba082733ea9f57df244fe0f189f947af8575/llm_project_summarizer-0.0.4.tar.gz",
"platform": null,
"description": "# LLM Project Summarizer\n[](https://github.com/MuhammadYossry/llm-project-summarizer/actions/workflows/ci.yml)\n[](https://badge.fury.io/py/llm-project-summarizer)\n[](https://pypi.org/project/llm-project-summarizer)\n[](https://opensource.org/licenses/MIT)\n\nLLM Project Summarizer is a specialized command-line tool that transforms Python and Go codebases into concise, structured summaries optimized for Large Language Models. When working with LLMs like ChatGPT or Claude, sending entire codebases is often impractical due to context limitations. This tool solves that problem by generating intelligent summaries that capture the essential architecture, relationships, and patterns in your code while excluding implementation details.\n\nThe tool understands language-specific patterns \u2013 in Go, it recognizes packages, interfaces, and implementations; in Python, it comprehends modules, class hierarchies, and type annotations. The output is formatted in Markdown with Mermaid diagrams, making it ideal for LLM consumption and human readability.\n\n## Table of Contents\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Configuration](#configuration)\n- [How It Works](#how-it-works)\n- [Examples](#examples)\n- [Contributing](#contributing)\n- [Testing](#testing)\n- [License](#license)\n\n## Features\n\n\u2728 **Smart Code Analysis**\n- Understands Python and Go code patterns\n- Extracts classes, functions, interfaces and their relationships\n- Identifies key architectural patterns\n\n\ud83d\udcca **Rich Visualization**\n- Generates Mermaid diagrams showing dependency relationships\n- Creates hierarchical package/module summaries\n- Shows inheritance and implementation relationships\n\n\ud83d\udd27 **Flexible Configuration**\n- Exclude patterns and directories\n- Customize output format and detail level\n- YAML configuration support\n\n\n## Installation\n\n### Option 1: Install from PyPI\n```bash\npip install llm-project-summarizer\n```\n\n### Option 2: Install from GitHub\n```bash\npip install git+https://github.com/MuhammadYossry/llm-project-summarizer.git\n```\n\n### Option 3: Development Installation\n```bash\n# Clone the repository\ngit clone https://github.com/MuhammadYossry/llm-project-summarizer\ncd llm-project-summarizer\n\n# Install with poetry (recommended for development)\npoetry install\n\n# Or install with pip in editable mode\npip install -e .\n```\n\n\n## Usage\n\n### Basic Usage\n```bash\n# Using pip installed version\nllm-project-summarizer /path/to/project\n\n# Custom output file\nllm-project-summarizer /path/to/project -o custom_summary.md\n\n# Exclude patterns\nllm-project-summarizer /path/to/project --exclude \"vendor/*\" --exclude \"*.test.go\"\n```\n\n### Using Poetry\n```bash\n# Install and run using poetry\npoetry install\npoetry run llm-project-summarizer/path/to/project\n\n# Run with options\npoetry run llm-project-summarizer /path/to/project -o summary.md --exclude \"vendor/*\"\n```\n\n### With Configuration File\nCreate `.summarizer.yaml`:\n```yaml\nexclude:\n - \"vendor/*\"\n - \"**/*_test.go\"\n - \"**/__pycache__\"\noutput: \"project_summary.md\"\n```\n\nUse the config:\n```bash\nllm-project-summarizer /path/to/project --config .summarizer.yaml\n```\n\n### Command Line Options\n```bash\nllm-project-summarizer--help\n\nOptions:\n --output, -o PATH Output file path [default: project_summary.md]\n --exclude, -e TEXT Exclusion patterns (can be used multiple times)\n --config, -c PATH Path to config file\n --help Show this message and exit\n```\n## How It Works\n\nThe tool employs language-specific parsers to analyze source code. For Go, it uses pattern matching to identify packages, interfaces, and implementations. For Python, it utilizes the Abstract Syntax Tree (AST) to extract classes, functions, and their relationships. The parsed information is then organized into a hierarchical structure optimized for LLM understanding.\n\n## Examples\nfor example running the tool against this Python project project\n`llm-project-summarizer llm-project-summarizer -o summary.md`\nwill output into `summary.md`\n```\n# Project Summary\n\n## Project Architecture\nThis is a Python project with the following structure:\n\n### Package Structure\n\n#### llm_project_summarizer/__init__.py\n\n#### llm_project_summarizer/cli.py\n\nSymbols:\n\n function: def load_config(config_path)\n Load configuration from YAML file\n\n function: @...\n@...\n@...\n@...\n@...\ndef main(project_path, output, exclude, config)\n Analyze and summarize a code project for LLM consumption.\n\n#### llm_project_summarizer/parsers/base.py\n\nSymbols:\n\n class: @dataclass\nclass CodeSymbol\n Represents a code symbol (function, class, interface, etc.)\n\n class: @dataclass\nclass FileSymbols\n Contains all symbols found in a single file\n\n class: class LanguageParser(ABC)\n Abstract base class for language-specific parsers\n\n function: def _sanitize_docstring(self, docstring)\n Cleans up a docstring for consistent formatting\n\n function: @abstractmethod\ndef can_parse(self, filename)\n Determines if this parser can handle the given file\n\n function: @abstractmethod\ndef parse_file(self, filepath)\n Parses a file and returns its symbols\n\n#### llm_project_summarizer/parsers/go.py\n\nSymbols:\n\n class: class GoParser(LanguageParser)\n Parses Go source files to extract symbols and relationships\n\n function: def _extract_docstring(self, content, start_pos)\n Extract Go-style documentation comments\n\n function: def _extract_functions(self, content)\n Extract function declarations from Go source\n\n function: def _extract_imports(self, content)\n Extract all imports from Go source\n\n function: def _extract_interfaces(self, content)\n Extract interface declarations from Go source\n\n function: def _extract_package(self, content)\n Extract the package name from Go source\n\n function: def _extract_types(self, content)\n Extract type declarations from Go source\n\n function: def can_parse(self, filename)\n\n function: def parse_file(self, filepath)\n\n#### llm_project_summarizer/parsers/python.py\n\nSymbols:\n\n class: class PythonParser(LanguageParser)\n Parses Python source files using the ast module\n\n function: def _extract_imports(self, tree)\n Extract all imports from an AST\n\n function: def _format_arguments(self, args)\n Format function arguments as a string\n\n function: def _format_decorators(self, decorators)\n Format decorators as strings\n\n function: def _format_expression(self, node)\n Format an AST expression node as a string\n\n function: def _process_async_function(self, node)\n Process an async function definition\n\n function: def _process_class(self, node)\n Process a class definition\n\n function: def _process_function(self, node)\n Process a function definition\n\n function: def can_parse(self, filename)\n\n function: def parse_file(self, filepath)\n\n#### llm_project_summarizer/summarizer.py\n\nSymbols:\n\n class: class ProjectSummarizer\n Main class for summarizing a project's structure\n\n function: def __init__(self)\n\n function: def summarize_project(self, project_path, exclusions)\n Summarize all supported files in the project\n\n function: def write_summary(self, project_path, results, output_file)\n Write the project summary to a file\n\n#### tests/__init__.py\n\n#### tests/conftest.py\n\nSymbols:\n\n function: @pytest.fixture\ndef sample_go_file(tmp_path)\n Create a sample Go file for testing\n\n function: @pytest.fixture\ndef sample_project(tmp_path)\n Create a sample project structure\n\n function: @pytest.fixture\ndef sample_python_file(tmp_path)\n Create a sample Python file for testing\n\n#### tests/test_cli.py\n\nSymbols:\n\n function: def test_cli_basic_usage(sample_project)\n\n function: def test_cli_custom_output(sample_project, tmp_path)\n\n function: def test_cli_handles_config_file(sample_project, tmp_path)\n\n function: def test_cli_invalid_project_path()\n\n function: def test_cli_with_exclusions(sample_project)\n\n#### tests/test_parsers.py\n\nSymbols:\n\n function: def test_go_parser_can_parse()\n\n function: def test_go_parser_extracts_functions(sample_go_file)\n\n function: def test_go_parser_extracts_imports(sample_go_file)\n\n function: def test_go_parser_extracts_interfaces(sample_go_file)\n\n function: def test_go_parser_extracts_package(sample_go_file)\n\n function: def test_go_parser_extracts_structs(sample_go_file)\n\n function: def test_python_parser_can_parse()\n\n function: def test_python_parser_extracts_classes(sample_python_file)\n\n function: def test_python_parser_extracts_functions(sample_python_file)\n\n function: def test_python_parser_extracts_imports(sample_python_file)\n\n function: def test_python_parser_handles_invalid_file(tmp_path)\n\n#### tests/test_summarizer.py\n\nSymbols:\n\n function: def test_summarizer_generates_mermaid_diagram(sample_project, tmp_path)\n\n function: def test_summarizer_handles_empty_project(tmp_path)\n\n function: def test_summarizer_processes_project(sample_project)\n\n function: def test_summarizer_respects_exclusions(sample_project)\n\n function: def test_summarizer_writes_summary(sample_project, tmp_path)\n```\nAnd the mermaid dependices graph\n```mermaid\ngraph TD\n llm_project_summarizer-->click\n llm_project_summarizer-->logging\n llm_project_summarizer-->yaml\n llm_project_summarizer-->pathlib.Path\n llm_project_summarizer-->typing.Optional\n llm_project_summarizer-->summarizer.ProjectSummarizer\n llm_project_summarizer-->os\n llm_project_summarizer-->logging\n llm_project_summarizer-->typing.Dict\n llm_project_summarizer-->typing.List\n llm_project_summarizer-->typing.Optional\n llm_project_summarizer-->parsers.base.FileSymbols\n llm_project_summarizer-->parsers.go.GoParser\n llm_project_summarizer-->parsers.python.PythonParser\n parsers-->ast\n parsers-->logging\n parsers-->typing.List\n parsers-->typing.Set\n parsers-->typing.Optional\n parsers-->typing.Any\n parsers-->base.LanguageParser\n parsers-->base.FileSymbols\n parsers-->base.CodeSymbol\n parsers-->re\n parsers-->typing.List\n parsers-->typing.Optional\n parsers-->typing.Match\n parsers-->base.LanguageParser\n parsers-->base.FileSymbols\n parsers-->base.CodeSymbol\n parsers-->abc.ABC\n parsers-->abc.abstractmethod\n parsers-->dataclasses.dataclass\n parsers-->dataclasses.field\n parsers-->typing.List\n parsers-->typing.Optional\n parsers-->typing.Set\n tests-->os\n tests-->pytest\n tests-->pathlib.Path\n tests-->pytest\n tests-->llm_project_summarizer.parsers.go.GoParser\n tests-->llm_project_summarizer.parsers.python.PythonParser\n tests-->llm_project_summarizer.parsers.base.CodeSymbol\n tests-->llm_project_summarizer.parsers.base.FileSymbols\n tests-->os\n tests-->pytest\n tests-->pathlib.Path\n tests-->llm_project_summarizer.summarizer.ProjectSummarizer\n tests-->pytest\n tests-->click.testing.CliRunner\n tests-->llm_project_summarizer.cli.main\n```\nRunning it against a Go project\n`llm-project-summarizer pdf-form-service -o summary.md`\nwill result into output\n```\n# Project Summary\n\n## Project Architecture\nThis is a Go project with the following structure:\n\n### Package Structure\n\n#### internal/file_utils/file_utils.go\nPackage: file_utils\n\nSymbols:\n\n function: func CreateFile(filePath string) (*os.File, error)\n createFile creates a file at the given path and returns a file pointer.\n\n function: func GenerateUniqueFileName(baseName string)\n generateUniqueFileName generates a unique filename for the output file.\n\n function: func OpenFile(filePath string) (*os.File, error)\n openFile opens the file at the given path and returns a file pointer.\n\n#### internal/file_utils/minio_utils.go\nPackage: file_utils\n\nSymbols:\n\n function: func InitAndTestMinio()\n\n function: func UploadFileToBucket(filePath string)\n\n function: func getEnv(key, fallback string)\n Utils\n\n#### main.go\nPackage: main\n\nSymbols:\n\n type: type ExportFormResponse struct\n ExportFormResponse represents the response body for the export-form endpoint.\n\n type: type FillFormRequest struct\n FillFormRequest represents the request body for the fill-form endpoint.\n\n type: type FillFormResponse struct\n FillFormResponse represents the response body for the fill-form endpoint.\n\n function: func exportFormHandler(w http.ResponseWriter, r *http.Request)\n exportFormHandler handles the Get request to the /export-form endpoint.\n\n function: func fillFormHandler(w http.ResponseWriter, r *http.Request)\n fillFormHandler handles the POST request to the /fill-form endpoint.\n\n function: func main()\n\n function: func validateFileName(fileName string) (string, error)\n validateFileName checks if the given filename is allowed.\n\n#### main_test.go\nPackage: main\n\nSymbols:\n\n function: func TestFillFormHandler(t *testing.T)\n TestFillFormHandler tests the fillFormHandler endpoint.\n```\nWith the mermaid dependices graph\n```mermaid\ngraph TD\n main-->fmt\n main-->log\n main-->strings\n main-->bytes\n main-->net/http\n main-->encoding/json\n main-->github.com/pdfcpu/pdfcpu/pkg/api\n main-->github.com/pdfcpu/pdfcpu/pkg/pdfcpu/model\n main-->pdf-form-service/internal/file_utils\n main-->encoding/json\n main-->io/ioutil\n main-->net/http\n main-->net/http/httptest\n main-->os\n main-->strings\n main-->testing\n file_utils-->fmt\n file_utils-->os\n file_utils-->time\n file_utils-->fmt\n file_utils-->os\n file_utils-->time\n file_utils-->context\n file_utils-->log\n file_utils-->path/filepath\n file_utils-->net/url\n file_utils-->github.com/minio/minio-go/v7\n file_utils-->github.com/minio/minio-go/v7/pkg/credentials\n templates-->json\n```\n\n\n## Contributing\n\nWe welcome contributions. To get started:\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for any new functionality\n5. Submit a pull request\n\n## Testing\n\nRun the test suite using Poetry:\n\n```bash\n# Run all tests\npoetry run pytest\n\n# Run tests with coverage report\npoetry run pytest --cov=llm_project_summarizer tests/ --cov-report=term-missing\n\n# Run specific test files\npoetry run pytest tests/test_parsers.py\n```\n\n## License\n\nThis project is licensed under the MIT License\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Generate LLM-friendly summaries of Python and Go codebases",
"version": "0.0.4",
"project_urls": {
"Homepage": "https://github.com/MuhamadYossry/llm-project-summarizer",
"Repository": "https://github.com/MuhamadYossry/llm-project-summarizer"
},
"split_keywords": [
"llm"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b879169b5bc03f7f11caef6701aa1be6361748e63ef8132b13c08597be148c0a",
"md5": "f395a67187e891fe0be6ba21b7c4e55c",
"sha256": "598887278ab4a8931791ba928a3c56622bec86b9b0b25cebd54d1bfe12022ec1"
},
"downloads": -1,
"filename": "llm_project_summarizer-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f395a67187e891fe0be6ba21b7c4e55c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.9",
"size": 13601,
"upload_time": "2024-12-24T11:29:07",
"upload_time_iso_8601": "2024-12-24T11:29:07.964328Z",
"url": "https://files.pythonhosted.org/packages/b8/79/169b5bc03f7f11caef6701aa1be6361748e63ef8132b13c08597be148c0a/llm_project_summarizer-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0adba21c08d2da45e01557788feba082733ea9f57df244fe0f189f947af8575",
"md5": "b903de0aacccda35a5cd0513d8286e0f",
"sha256": "7a01b54593ad961055b247b1421644894ecb600d5e38878c9bb4b4844a58cef1"
},
"downloads": -1,
"filename": "llm_project_summarizer-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "b903de0aacccda35a5cd0513d8286e0f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.9",
"size": 14221,
"upload_time": "2024-12-24T11:29:09",
"upload_time_iso_8601": "2024-12-24T11:29:09.285473Z",
"url": "https://files.pythonhosted.org/packages/f0/ad/ba21c08d2da45e01557788feba082733ea9f57df244fe0f189f947af8575/llm_project_summarizer-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-24 11:29:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MuhamadYossry",
"github_project": "llm-project-summarizer",
"github_not_found": true,
"lcname": "llm-project-summarizer"
}