convoviz 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. convoviz-0.3.2/PKG-INFO +145 -0
  2. convoviz-0.3.2/README.md +120 -0
  3. convoviz-0.3.2/convoviz/__init__.py +34 -0
  4. convoviz-0.3.2/convoviz/__main__.py +6 -0
  5. convoviz-0.3.2/convoviz/analysis/__init__.py +22 -0
  6. convoviz-0.3.2/convoviz/analysis/graphs.py +875 -0
  7. convoviz-0.3.2/convoviz/analysis/wordcloud.py +196 -0
  8. convoviz-0.3.2/convoviz/assets/colormaps.txt +15 -0
  9. convoviz-0.3.2/convoviz/assets/fonts/AmaticSC-Regular.ttf +0 -0
  10. convoviz-0.3.2/convoviz/assets/fonts/ArchitectsDaughter-Regular.ttf +0 -0
  11. convoviz-0.3.2/convoviz/assets/fonts/BebasNeue-Regular.ttf +0 -0
  12. convoviz-0.3.2/convoviz/assets/fonts/Borel-Regular.ttf +0 -0
  13. convoviz-0.3.2/convoviz/assets/fonts/Courgette-Regular.ttf +0 -0
  14. convoviz-0.3.2/convoviz/assets/fonts/CroissantOne-Regular.ttf +0 -0
  15. convoviz-0.3.2/convoviz/assets/fonts/Handjet-Regular.ttf +0 -0
  16. convoviz-0.3.2/convoviz/assets/fonts/IndieFlower-Regular.ttf +0 -0
  17. convoviz-0.3.2/convoviz/assets/fonts/Kalam-Regular.ttf +0 -0
  18. convoviz-0.3.2/convoviz/assets/fonts/Lobster-Regular.ttf +0 -0
  19. convoviz-0.3.2/convoviz/assets/fonts/MartianMono-Regular.ttf +0 -0
  20. convoviz-0.3.2/convoviz/assets/fonts/MartianMono-Thin.ttf +0 -0
  21. convoviz-0.3.2/convoviz/assets/fonts/Montserrat-Regular.ttf +0 -0
  22. convoviz-0.3.2/convoviz/assets/fonts/Mooli-Regular.ttf +0 -0
  23. convoviz-0.3.2/convoviz/assets/fonts/Pacifico-Regular.ttf +0 -0
  24. convoviz-0.3.2/convoviz/assets/fonts/PlayfairDisplay-Regular.ttf +0 -0
  25. convoviz-0.3.2/convoviz/assets/fonts/Raleway-Regular.ttf +0 -0
  26. convoviz-0.3.2/convoviz/assets/fonts/RobotoMono-Regular.ttf +0 -0
  27. convoviz-0.3.2/convoviz/assets/fonts/RobotoMono-Thin.ttf +0 -0
  28. convoviz-0.3.2/convoviz/assets/fonts/RobotoSlab-Regular.ttf +0 -0
  29. convoviz-0.3.2/convoviz/assets/fonts/RobotoSlab-Thin.ttf +0 -0
  30. convoviz-0.3.2/convoviz/assets/fonts/Ruwudu-Regular.ttf +0 -0
  31. convoviz-0.3.2/convoviz/assets/fonts/Sacramento-Regular.ttf +0 -0
  32. convoviz-0.3.2/convoviz/assets/fonts/SedgwickAveDisplay-Regular.ttf +0 -0
  33. convoviz-0.3.2/convoviz/assets/fonts/ShadowsIntoLight-Regular.ttf +0 -0
  34. convoviz-0.3.2/convoviz/assets/fonts/TitilliumWeb-Regular.ttf +0 -0
  35. convoviz-0.3.2/convoviz/assets/fonts/Yellowtail-Regular.ttf +0 -0
  36. convoviz-0.3.2/convoviz/assets/fonts/YsabeauOffice-Regular.ttf +0 -0
  37. convoviz-0.3.2/convoviz/assets/fonts/YsabeauSC-Regular.ttf +0 -0
  38. convoviz-0.3.2/convoviz/assets/fonts/YsabeauSC-Thin.ttf +0 -0
  39. convoviz-0.3.2/convoviz/assets/fonts/Zeyada-Regular.ttf +0 -0
  40. convoviz-0.3.2/convoviz/assets/stopwords.txt +1 -0
  41. convoviz-0.3.2/convoviz/cli.py +125 -0
  42. convoviz-0.3.2/convoviz/config.py +120 -0
  43. convoviz-0.3.2/convoviz/exceptions.py +47 -0
  44. convoviz-0.3.2/convoviz/interactive.py +255 -0
  45. convoviz-0.3.2/convoviz/io/__init__.py +21 -0
  46. convoviz-0.3.2/convoviz/io/assets.py +98 -0
  47. convoviz-0.3.2/convoviz/io/loaders.py +186 -0
  48. convoviz-0.3.2/convoviz/io/writers.py +225 -0
  49. convoviz-0.3.2/convoviz/models/__init__.py +24 -0
  50. convoviz-0.3.2/convoviz/models/collection.py +115 -0
  51. convoviz-0.3.2/convoviz/models/conversation.py +158 -0
  52. convoviz-0.3.2/convoviz/models/message.py +218 -0
  53. convoviz-0.3.2/convoviz/models/node.py +66 -0
  54. convoviz-0.3.2/convoviz/pipeline.py +176 -0
  55. convoviz-0.3.2/convoviz/py.typed +0 -0
  56. convoviz-0.3.2/convoviz/renderers/__init__.py +10 -0
  57. convoviz-0.3.2/convoviz/renderers/markdown.py +269 -0
  58. convoviz-0.3.2/convoviz/renderers/yaml.py +119 -0
  59. convoviz-0.3.2/convoviz/utils.py +155 -0
  60. convoviz-0.3.2/pyproject.toml +105 -0
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.4
2
+ Name: convoviz
3
+ Version: 0.3.2
4
+ Summary: Get analytics and visualizations on your ChatGPT data!
5
+ Keywords: markdown,chatgpt,openai,visualization,analytics,json,export,data-analysis,obsidian
6
+ Author: Mohamed Cheikh Sidiya
7
+ Author-email: Mohamed Cheikh Sidiya <mohamedcheikhsidiya77@gmail.com>
8
+ License-Expression: MIT
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Requires-Dist: orjson>=3.11.5
13
+ Requires-Dist: pydantic>=2.12.5
14
+ Requires-Dist: pydantic-settings>=2.7.0
15
+ Requires-Dist: questionary>=2.1.1
16
+ Requires-Dist: rich>=14.2.0
17
+ Requires-Dist: tqdm>=4.67.1
18
+ Requires-Dist: typer>=0.21.0
19
+ Requires-Dist: nltk>=3.9.2 ; extra == 'viz'
20
+ Requires-Dist: wordcloud>=1.9.5 ; extra == 'viz'
21
+ Requires-Python: >=3.12
22
+ Project-URL: Repository, https://github.com/mohamed-chs/chatgpt-history-export-to-md
23
+ Provides-Extra: viz
24
+ Description-Content-Type: text/markdown
25
+
26
+ # Convoviz ๐Ÿ“Š: Visualize your entire ChatGPT data
27
+
28
+ Convert your ChatGPT history into well-formatted Markdown files. Visualize your data with word clouds ๐Ÿ”กโ˜๏ธ and usage graphs ๐Ÿ“ˆ.
29
+
30
+ ![GitHub last commit](https://img.shields.io/github/last-commit/mohamed-chs/chatgpt-history-export-to-md)
31
+ ![GitHub issues](https://img.shields.io/github/issues/mohamed-chs/chatgpt-history-export-to-md)
32
+
33
+ ## Features
34
+
35
+ - **YAML Headers**: Optional and included by default.
36
+ - **Inline Images**: Media attachments rendered directly in Markdown.
37
+ - **Data Visualizations**: Word clouds, graphs, and more.
38
+
39
+ See examples [here](demo).
40
+
41
+ ## How to Use ๐Ÿ“–
42
+
43
+ ### 1. Export Your ChatGPT Data ๐Ÿ—‚
44
+
45
+ - Sign in at [chatgpt.com](https://chatgpt.com).
46
+ - Navigate: Profile Name (bottom left) -> **Settings** -> **Data controls** -> **Export** -> **Confirm export**.
47
+ - Await email from OpenAI and download the `.zip` file.
48
+
49
+ ### 2. Install the tool ๐Ÿ› 
50
+
51
+ First, install [uv](https://github.com/astral-sh/uv) (if you don't have it):
52
+
53
+ MacOS / Linux:
54
+
55
+ ```bash
56
+ curl -LsSf https://astral.sh/uv/install.sh | sh
57
+ ```
58
+
59
+ Windows (PowerShell):
60
+
61
+ ```powershell
62
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
63
+ ```
64
+
65
+ Then install convoviz:
66
+
67
+ ```bash
68
+ uv tool install "convoviz[viz]"
69
+ ```
70
+
71
+ The `[viz]` extra includes graphs and word clouds. Skip it for a faster markdown-only install.
72
+
73
+ ### 3. Run the tool ๐Ÿƒโ€โ™‚๏ธ
74
+
75
+ Simply run the command and follow the prompts:
76
+
77
+ ```bash
78
+ convoviz
79
+ ```
80
+
81
+ #### Command Line Arguments
82
+
83
+ You can provide arguments directly to skip the prompts:
84
+
85
+ ```bash
86
+ convoviz --input path/to/your/export.zip --output path/to/output/folder
87
+ ```
88
+
89
+ ##### Selective Output
90
+
91
+ By default, all outputs are generated. Use `--outputs` to pick specific ones:
92
+
93
+ ```bash
94
+ convoviz --input export.zip --outputs markdown --outputs graphs
95
+ ```
96
+
97
+ Options: `markdown`, `graphs`, `wordclouds`. In interactive mode, you'll be prompted.
98
+
99
+ ##### Other Notes
100
+
101
+ - `--zip` / `-z` is kept as an alias for `--input` for convenience.
102
+ - You can force non-interactive mode with `--no-interactive`.
103
+ - Use `--flat` to put all Markdown files in a single folder instead of organizing by date.
104
+
105
+ For more options, run:
106
+
107
+ ```bash
108
+ convoviz --help
109
+ ```
110
+
111
+ ### 4. Check the Output ๐ŸŽ‰
112
+
113
+ And that's it! After running the script, head over to the output folder to see your neatly formatted Markdown files and visualizations.
114
+
115
+ ![wordcloud example](demo/wordcloud-example.png)
116
+
117
+ ## Share Your Feedback! ๐Ÿ’Œ
118
+
119
+ I hope you find this tool useful. I'm continuously looking to improve on this, but I need your help for that.
120
+
121
+ Whether you're a tech wizard or you're new to all this, I'd love to hear about your journey with the tool. Found a quirk? Have a suggestion? Or just want to send some good vibes? I'm all ears! (see [issues](https://github.com/mohamed-chs/chatgpt-history-export-to-md/issues))
122
+
123
+ And if you've had a great experience, consider giving the project a star โญ. It keeps me motivated and helps others discover it!
124
+
125
+ ## Notes
126
+
127
+ This is just a small thing I coded to help me see my convos in beautiful markdown. It was originally built with [Obsidian](https://obsidian.md/) (my go-to note-taking app) in mind, but the default output is standard Markdown.
128
+
129
+ I wasn't a fan of the clunky, and sometimes paid, browser extensions.
130
+
131
+ It was also a great opportunity to learn more about Python and type annotations. I had mypy, pyright, and ruff all on strict mode, 'twas fun.
132
+
133
+ It should(?) also work as library, so you can import and use the models and functions. I need to add more documentation for that tho. Feel free to reach out if you need help.
134
+
135
+ ### Offline / reproducible runs
136
+
137
+ Word clouds use NLTK stopwords. If you're offline and NLTK data isn't installed yet, pre-download it:
138
+
139
+ ```bash
140
+ python -c "import nltk; nltk.download('stopwords')"
141
+ ```
142
+
143
+ ### Bookmarklet
144
+
145
+ There's also a JavaScript bookmarklet flow under `js/` (experimental) for exporting additional conversation data outside the official ZIP export.
@@ -0,0 +1,120 @@
1
+ # Convoviz ๐Ÿ“Š: Visualize your entire ChatGPT data
2
+
3
+ Convert your ChatGPT history into well-formatted Markdown files. Visualize your data with word clouds ๐Ÿ”กโ˜๏ธ and usage graphs ๐Ÿ“ˆ.
4
+
5
+ ![GitHub last commit](https://img.shields.io/github/last-commit/mohamed-chs/chatgpt-history-export-to-md)
6
+ ![GitHub issues](https://img.shields.io/github/issues/mohamed-chs/chatgpt-history-export-to-md)
7
+
8
+ ## Features
9
+
10
+ - **YAML Headers**: Optional and included by default.
11
+ - **Inline Images**: Media attachments rendered directly in Markdown.
12
+ - **Data Visualizations**: Word clouds, graphs, and more.
13
+
14
+ See examples [here](demo).
15
+
16
+ ## How to Use ๐Ÿ“–
17
+
18
+ ### 1. Export Your ChatGPT Data ๐Ÿ—‚
19
+
20
+ - Sign in at [chatgpt.com](https://chatgpt.com).
21
+ - Navigate: Profile Name (bottom left) -> **Settings** -> **Data controls** -> **Export** -> **Confirm export**.
22
+ - Await email from OpenAI and download the `.zip` file.
23
+
24
+ ### 2. Install the tool ๐Ÿ› 
25
+
26
+ First, install [uv](https://github.com/astral-sh/uv) (if you don't have it):
27
+
28
+ MacOS / Linux:
29
+
30
+ ```bash
31
+ curl -LsSf https://astral.sh/uv/install.sh | sh
32
+ ```
33
+
34
+ Windows (PowerShell):
35
+
36
+ ```powershell
37
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
38
+ ```
39
+
40
+ Then install convoviz:
41
+
42
+ ```bash
43
+ uv tool install "convoviz[viz]"
44
+ ```
45
+
46
+ The `[viz]` extra includes graphs and word clouds. Skip it for a faster markdown-only install.
47
+
48
+ ### 3. Run the tool ๐Ÿƒโ€โ™‚๏ธ
49
+
50
+ Simply run the command and follow the prompts:
51
+
52
+ ```bash
53
+ convoviz
54
+ ```
55
+
56
+ #### Command Line Arguments
57
+
58
+ You can provide arguments directly to skip the prompts:
59
+
60
+ ```bash
61
+ convoviz --input path/to/your/export.zip --output path/to/output/folder
62
+ ```
63
+
64
+ ##### Selective Output
65
+
66
+ By default, all outputs are generated. Use `--outputs` to pick specific ones:
67
+
68
+ ```bash
69
+ convoviz --input export.zip --outputs markdown --outputs graphs
70
+ ```
71
+
72
+ Options: `markdown`, `graphs`, `wordclouds`. In interactive mode, you'll be prompted.
73
+
74
+ ##### Other Notes
75
+
76
+ - `--zip` / `-z` is kept as an alias for `--input` for convenience.
77
+ - You can force non-interactive mode with `--no-interactive`.
78
+ - Use `--flat` to put all Markdown files in a single folder instead of organizing by date.
79
+
80
+ For more options, run:
81
+
82
+ ```bash
83
+ convoviz --help
84
+ ```
85
+
86
+ ### 4. Check the Output ๐ŸŽ‰
87
+
88
+ And that's it! After running the script, head over to the output folder to see your neatly formatted Markdown files and visualizations.
89
+
90
+ ![wordcloud example](demo/wordcloud-example.png)
91
+
92
+ ## Share Your Feedback! ๐Ÿ’Œ
93
+
94
+ I hope you find this tool useful. I'm continuously looking to improve on this, but I need your help for that.
95
+
96
+ Whether you're a tech wizard or you're new to all this, I'd love to hear about your journey with the tool. Found a quirk? Have a suggestion? Or just want to send some good vibes? I'm all ears! (see [issues](https://github.com/mohamed-chs/chatgpt-history-export-to-md/issues))
97
+
98
+ And if you've had a great experience, consider giving the project a star โญ. It keeps me motivated and helps others discover it!
99
+
100
+ ## Notes
101
+
102
+ This is just a small thing I coded to help me see my convos in beautiful markdown. It was originally built with [Obsidian](https://obsidian.md/) (my go-to note-taking app) in mind, but the default output is standard Markdown.
103
+
104
+ I wasn't a fan of the clunky, and sometimes paid, browser extensions.
105
+
106
+ It was also a great opportunity to learn more about Python and type annotations. I had mypy, pyright, and ruff all on strict mode, 'twas fun.
107
+
108
+ It should(?) also work as library, so you can import and use the models and functions. I need to add more documentation for that tho. Feel free to reach out if you need help.
109
+
110
+ ### Offline / reproducible runs
111
+
112
+ Word clouds use NLTK stopwords. If you're offline and NLTK data isn't installed yet, pre-download it:
113
+
114
+ ```bash
115
+ python -c "import nltk; nltk.download('stopwords')"
116
+ ```
117
+
118
+ ### Bookmarklet
119
+
120
+ There's also a JavaScript bookmarklet flow under `js/` (experimental) for exporting additional conversation data outside the official ZIP export.
@@ -0,0 +1,34 @@
1
+ """Convoviz - ChatGPT data visualization and export tool."""
2
+
3
+ from convoviz import config, io, models, renderers, utils
4
+ from convoviz.config import ConvovizConfig, get_default_config
5
+ from convoviz.models import Conversation, ConversationCollection, Message, Node
6
+ from convoviz.pipeline import run_pipeline
7
+
8
+ __all__ = [
9
+ # Submodules
10
+ "analysis",
11
+ "config",
12
+ "io",
13
+ "models",
14
+ "renderers",
15
+ "utils",
16
+ # Main classes
17
+ "Conversation",
18
+ "ConversationCollection",
19
+ "ConvovizConfig",
20
+ "Message",
21
+ "Node",
22
+ # Functions
23
+ "get_default_config",
24
+ "run_pipeline",
25
+ ]
26
+
27
+
28
+ def __getattr__(name: str):
29
+ """Lazy import for optional submodules like analysis."""
30
+ if name == "analysis":
31
+ from convoviz import analysis
32
+
33
+ return analysis
34
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -0,0 +1,6 @@
1
+ """Allow running convoviz as a module: python -m convoviz"""
2
+
3
+ from convoviz.cli import main_entry
4
+
5
+ if __name__ == "__main__":
6
+ main_entry()
@@ -0,0 +1,22 @@
1
+ """Data analysis and visualization for convoviz.
2
+
3
+ Requires the [viz] extra: uv tool install "convoviz[viz]"
4
+ """
5
+
6
+ __all__ = [
7
+ "generate_week_barplot",
8
+ "generate_wordcloud",
9
+ ]
10
+
11
+
12
+ def __getattr__(name: str):
13
+ """Lazy import for visualization functions requiring optional dependencies."""
14
+ if name == "generate_week_barplot":
15
+ from convoviz.analysis.graphs import generate_week_barplot
16
+
17
+ return generate_week_barplot
18
+ if name == "generate_wordcloud":
19
+ from convoviz.analysis.wordcloud import generate_wordcloud
20
+
21
+ return generate_wordcloud
22
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")