-
Notifications
You must be signed in to change notification settings - Fork 1
/
example.txt
125 lines (90 loc) · 5.15 KB
/
example.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
## README.md
- content: # RepoGPT
RepoGPT is a tool designed to summarize the code (*.py) and docs (*.md) files in a repository. It works iterating through directories and generating detailed and structured project summaries - including classes, functions and and the docstrings. It supports .txt or .json output files, ready for your favourite LLM to ingest!
Inspired by the [gpt-repository-loader](https://github.com/mpoon/gpt-repository-loader) and [gptrepo](https://github.com/zackees/gptrepo/tree/main).
![Example](repogpt/docs/example.png)
# Installing
## Clone the Repository:
```tap
git clone https://github.com/MrCabss69/RepoGPT.git
```
## Navigate to the Project Directory
```tap
cd RepoGPT
```
## Install the module
```tap
pip install -e .
```
# Using RepoGPT
Once installed, you can go to the root directory of your project and exec in your terminal:
```tap
repogpt
```
With some customization:
```tap
repogpt --repo_path /path_to_repo --extensions .py .js --start_path src
```
A .txt file will appear in the working directoy, with the summary generated.
## Main Features
- **File Analysis:** RepoGPT performs a deep scan of the files in the repository, collecting crucial information such as line count, classes and their methods, independent functions and associated docstrings.
- **Documentation Improvement:** The tool places special emphasis on the clarity and quality of code documentation, promoting good practices such as the use of clear nomenclatures for variables and detailed documentation strings.
## Detailed Analysis Options
RepoGPT allows you to customize the analysis using the following options:
- `--output`: Defines the file name and extension to output in the analysis. By default, 'example.txt' file are created.
# Structure
```tap.
├── README.md
├── repogpt
│ ├── docs
│ │ ├── DEVELOPING.md
│ │ ├── IDEA.md
│ │ └── TODO.md
│ ├── __init__.py
│ └── tree_build.py
└── setup.py
```
## repogpt
- repogpt/tree_build.py/:
### TreeBuilder
- __init__: Inicializa el TreeBuilder con la ruta del repositorio, extensiones válidas y un path de inicio opcional.
:param repo_path: Ruta absoluta al repositorio.
:param valid_extensions: Lista de extensiones de archivo para incluir en el análisis.
:param start_path: Ruta dentro del repositorio desde donde comenzar el análisis.
- is_excluded: Determina si una ruta dada debe ser excluida del análisis basándose en los patrones de exclusión.
:param path: Ruta del archivo o directorio a verificar.
:return: True si la ruta debe ser excluida, False en caso contrario.
- build_tree: Construye la estructura del árbol del repositorio comenzando desde la ruta de inicio.
:return: Diccionario representando la estructura del repositorio.
- process_directory: Procesa de manera recursiva cada directorio y archivo en el directorio dado, extrayendo la información relevante.
:param directory: Ruta del directorio a procesar.
:return: Diccionario con la información del directorio y sus contenidos.
- extract_file_info: Extrae información de un archivo individual, incluyendo el recuento de líneas y, para archivos .py, clases y funciones.
:param file_path: Ruta al archivo del cual extraer información.
:return: Diccionario con la información extraída del archivo.
- parse_python_content: Analiza el contenido de un archivo Python para extraer clases, funciones y sus docstrings.
:param content: Contenido del archivo Python.
:return: Diccionario con las clases y funciones extraídas del contenido.
- handle_class_node: Extrae información de un nodo de clase del AST, incluyendo métodos y docstrings.
:param node: Nodo AST de la clase.
:return: Diccionario con el nombre de la clase, su docstring y sus métodos.
- handle_function_node: Extrae información de un nodo de función del AST, incluyendo su nombre y docstring.
:param node: Nodo AST de la función.
:return: Diccionario con el nombre de la función y su docstring.
- write_output: Escribe la información del repositorio en un archivo de salida. El formato de salida
se determina por la extensión del archivo: .json para JSON, y cualquier otra cosa para texto plano.
:param repo_info: Diccionario con la información del repositorio.
:param output_file: Ruta del archivo de salida donde se escribirá la información.
- _write_dict: Escribe de manera recursiva la información del repositorio en formato de texto plano.
:param data: Datos a escribir.
:param file: Descriptor de archivo abierto.
:param indent: Nivel actual de indentación.
- repogpt/docs/:
- repogpt/docs/IDEA.md/:
- content: # RepoGPT
Quick generation of project or repository summaries, suitable for consumption by chatgpt, without the need for additional context
OUTPUT STRUCTURE:
1. PROJECT SUMMARY - README.MD / IDEA.MD
2. IMPLEMENTATION SUMMARY - DEVELPING.md, PROJECT STRUCTURE (improved tree command, with number of lines per file),
3. SUMMARY OF EACH FILE: functionality (extract from: header + docstrings if any), and name the classes and functions by class.
## setup.py