indexly 1.0.8__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 (139) hide show
  1. indexly-1.0.8/.gitignore +66 -0
  2. indexly-1.0.8/LICENSE.txt +21 -0
  3. indexly-1.0.8/PKG-INFO +199 -0
  4. indexly-1.0.8/indexly/__init__.py +3 -0
  5. indexly-1.0.8/indexly/__main__.py +6 -0
  6. indexly-1.0.8/indexly/analysis_orchestrator.py +800 -0
  7. indexly-1.0.8/indexly/analysis_result.py +16 -0
  8. indexly-1.0.8/indexly/analyze_db.py +336 -0
  9. indexly-1.0.8/indexly/analyze_json.py +386 -0
  10. indexly-1.0.8/indexly/analyze_utils.py +456 -0
  11. indexly-1.0.8/indexly/analyze_xml.py +153 -0
  12. indexly-1.0.8/indexly/assets/csv/sample_data.csv +6 -0
  13. indexly-1.0.8/indexly/assets/fonts/DejaVuSans-Bold.pkl +0 -0
  14. indexly-1.0.8/indexly/assets/fonts/DejaVuSans-Bold.ttf +0 -0
  15. indexly-1.0.8/indexly/assets/fonts/DejaVuSans-Oblique.pkl +0 -0
  16. indexly-1.0.8/indexly/assets/fonts/DejaVuSans-Oblique.ttf +0 -0
  17. indexly-1.0.8/indexly/assets/fonts/DejaVuSans.pkl +0 -0
  18. indexly-1.0.8/indexly/assets/fonts/DejaVuSans.ttf +0 -0
  19. indexly-1.0.8/indexly/backup/__init__.py +1 -0
  20. indexly-1.0.8/indexly/backup/auto.py +173 -0
  21. indexly-1.0.8/indexly/backup/cli.py +91 -0
  22. indexly-1.0.8/indexly/backup/cli_restore.py +10 -0
  23. indexly-1.0.8/indexly/backup/compress.py +21 -0
  24. indexly-1.0.8/indexly/backup/decrypt.py +34 -0
  25. indexly-1.0.8/indexly/backup/encrypt.py +33 -0
  26. indexly-1.0.8/indexly/backup/executor.py +245 -0
  27. indexly-1.0.8/indexly/backup/extract.py +35 -0
  28. indexly-1.0.8/indexly/backup/logging_utils.py +121 -0
  29. indexly-1.0.8/indexly/backup/manifest.py +177 -0
  30. indexly-1.0.8/indexly/backup/metadata.py +20 -0
  31. indexly-1.0.8/indexly/backup/metadata_restore.py +20 -0
  32. indexly-1.0.8/indexly/backup/paths.py +18 -0
  33. indexly-1.0.8/indexly/backup/registry.py +44 -0
  34. indexly-1.0.8/indexly/backup/restore.py +216 -0
  35. indexly-1.0.8/indexly/backup/rotation.py +60 -0
  36. indexly-1.0.8/indexly/backup/verify.py +20 -0
  37. indexly-1.0.8/indexly/cache_utils.py +134 -0
  38. indexly-1.0.8/indexly/changelog.json +212 -0
  39. indexly-1.0.8/indexly/clean_csv.py +268 -0
  40. indexly-1.0.8/indexly/cleaning/auto_clean.py +411 -0
  41. indexly-1.0.8/indexly/cli_utils.py +1432 -0
  42. indexly-1.0.8/indexly/compare/__init__.py +10 -0
  43. indexly-1.0.8/indexly/compare/cli_compare.py +137 -0
  44. indexly-1.0.8/indexly/compare/compare_engine.py +63 -0
  45. indexly-1.0.8/indexly/compare/constants.py +36 -0
  46. indexly-1.0.8/indexly/compare/detector.py +27 -0
  47. indexly-1.0.8/indexly/compare/extract_adapter.py +45 -0
  48. indexly-1.0.8/indexly/compare/file_compare.py +80 -0
  49. indexly-1.0.8/indexly/compare/folder_compare.py +66 -0
  50. indexly-1.0.8/indexly/compare/hash_utils.py +18 -0
  51. indexly-1.0.8/indexly/compare/models.py +37 -0
  52. indexly-1.0.8/indexly/compare/render.py +135 -0
  53. indexly-1.0.8/indexly/compare/resolver.py +24 -0
  54. indexly-1.0.8/indexly/compare/similarity.py +29 -0
  55. indexly-1.0.8/indexly/config.py +119 -0
  56. indexly-1.0.8/indexly/csv_analyzer.py +706 -0
  57. indexly-1.0.8/indexly/csv_pipeline.py +469 -0
  58. indexly-1.0.8/indexly/datetime_utils.py +86 -0
  59. indexly-1.0.8/indexly/db_detect.py +16 -0
  60. indexly-1.0.8/indexly/db_inspector.py +41 -0
  61. indexly-1.0.8/indexly/db_pipeline.py +166 -0
  62. indexly-1.0.8/indexly/db_schema_utils.py +158 -0
  63. indexly-1.0.8/indexly/db_summary_indexly.py +306 -0
  64. indexly-1.0.8/indexly/db_update.py +342 -0
  65. indexly-1.0.8/indexly/db_utils.py +302 -0
  66. indexly-1.0.8/indexly/debug.py +69 -0
  67. indexly-1.0.8/indexly/debug_tbl.py +324 -0
  68. indexly-1.0.8/indexly/docs/README.md +140 -0
  69. indexly-1.0.8/indexly/docs/cheatsheet.md +170 -0
  70. indexly-1.0.8/indexly/docs/dev.md +82 -0
  71. indexly-1.0.8/indexly/docs/migration_utility.md +77 -0
  72. indexly-1.0.8/indexly/docs/tagging.md +150 -0
  73. indexly-1.0.8/indexly/doctor.py +489 -0
  74. indexly-1.0.8/indexly/excel_pipeline.py +225 -0
  75. indexly-1.0.8/indexly/export_utils.py +398 -0
  76. indexly-1.0.8/indexly/extract_utils.py +637 -0
  77. indexly-1.0.8/indexly/filetype_utils.py +150 -0
  78. indexly-1.0.8/indexly/fts_core.py +167 -0
  79. indexly-1.0.8/indexly/ignore/__init__.py +5 -0
  80. indexly-1.0.8/indexly/ignore/ignore_rules.py +55 -0
  81. indexly-1.0.8/indexly/ignore_defaults/__init__.py +7 -0
  82. indexly-1.0.8/indexly/ignore_defaults/loader.py +101 -0
  83. indexly-1.0.8/indexly/ignore_defaults/presets/aggressive.txt +62 -0
  84. indexly-1.0.8/indexly/ignore_defaults/presets/minimal.txt +4 -0
  85. indexly-1.0.8/indexly/ignore_defaults/presets/standard.txt +62 -0
  86. indexly-1.0.8/indexly/ignore_defaults/presets.py +58 -0
  87. indexly-1.0.8/indexly/ignore_defaults/validator.py +29 -0
  88. indexly-1.0.8/indexly/indexly.py +1063 -0
  89. indexly-1.0.8/indexly/indexly_detector.py +333 -0
  90. indexly-1.0.8/indexly/json_cache_normalizer.py +247 -0
  91. indexly-1.0.8/indexly/json_pipeline.py +378 -0
  92. indexly-1.0.8/indexly/license_utils.py +98 -0
  93. indexly-1.0.8/indexly/log_utils.py +848 -0
  94. indexly-1.0.8/indexly/mermaid_diagram.py +71 -0
  95. indexly-1.0.8/indexly/migrate_db.py +144 -0
  96. indexly-1.0.8/indexly/migration_manager.py +273 -0
  97. indexly-1.0.8/indexly/mtw_extractor.py +184 -0
  98. indexly-1.0.8/indexly/organize/__init__.py +6 -0
  99. indexly-1.0.8/indexly/organize/cli_wrapper.py +100 -0
  100. indexly-1.0.8/indexly/organize/lister.py +101 -0
  101. indexly-1.0.8/indexly/organize/log_schema.py +72 -0
  102. indexly-1.0.8/indexly/organize/organizer.py +159 -0
  103. indexly-1.0.8/indexly/organize/organizer_exec.py +451 -0
  104. indexly-1.0.8/indexly/organize/placement_planner.py +56 -0
  105. indexly-1.0.8/indexly/organize/profile_structures.py +98 -0
  106. indexly-1.0.8/indexly/organize/profiles/__init__.py +14 -0
  107. indexly-1.0.8/indexly/organize/profiles/base_rules.py +7 -0
  108. indexly-1.0.8/indexly/organize/profiles/data_rules.py +40 -0
  109. indexly-1.0.8/indexly/organize/profiles/education_rules.py +14 -0
  110. indexly-1.0.8/indexly/organize/profiles/health_rules.py +83 -0
  111. indexly-1.0.8/indexly/organize/profiles/it_rules.py +21 -0
  112. indexly-1.0.8/indexly/organize/profiles/media_rules.py +16 -0
  113. indexly-1.0.8/indexly/organize/utils.py +74 -0
  114. indexly-1.0.8/indexly/output_utils.py +61 -0
  115. indexly-1.0.8/indexly/parquet_pipeline.py +155 -0
  116. indexly-1.0.8/indexly/path_utils.py +61 -0
  117. indexly-1.0.8/indexly/persist.py +12 -0
  118. indexly-1.0.8/indexly/profiler_utils.py +205 -0
  119. indexly-1.0.8/indexly/profiles.py +82 -0
  120. indexly-1.0.8/indexly/read_indexly_json.py +249 -0
  121. indexly-1.0.8/indexly/relation_detector.py +172 -0
  122. indexly-1.0.8/indexly/rename_utils.py +296 -0
  123. indexly-1.0.8/indexly/ripple.py +69 -0
  124. indexly-1.0.8/indexly/search_core.py +573 -0
  125. indexly-1.0.8/indexly/semantic_index.py +175 -0
  126. indexly-1.0.8/indexly/table_profiler.py +102 -0
  127. indexly-1.0.8/indexly/test_bin_dist.py +113 -0
  128. indexly-1.0.8/indexly/test_near_distance.py +98 -0
  129. indexly-1.0.8/indexly/timeseries_utils.py +346 -0
  130. indexly-1.0.8/indexly/universal_loader.py +1058 -0
  131. indexly-1.0.8/indexly/update_utils.py +81 -0
  132. indexly-1.0.8/indexly/utils.py +229 -0
  133. indexly-1.0.8/indexly/visualize_csv.py +803 -0
  134. indexly-1.0.8/indexly/visualize_json.py +244 -0
  135. indexly-1.0.8/indexly/visualize_timeseries.py +363 -0
  136. indexly-1.0.8/indexly/watcher.py +188 -0
  137. indexly-1.0.8/indexly/xml_pipeline.py +304 -0
  138. indexly-1.0.8/indexly/yaml_pipeline.py +198 -0
  139. indexly-1.0.8/pyproject.toml +148 -0
@@ -0,0 +1,66 @@
1
+ # ----------------
2
+ # Python
3
+ # ----------------
4
+ __pycache__/
5
+ *.py[cod]
6
+ *.egg-info/
7
+ *.egg
8
+ dist/
9
+ build/
10
+ .venv/
11
+ venv/
12
+ .env
13
+ *.sqlite3
14
+
15
+ # ----------------
16
+ # Hugo
17
+ # ----------------
18
+ # Ignore everything in docs by default
19
+ docs/*
20
+
21
+ # But keep these important files/folders tracked:
22
+ !docs/archetypes/
23
+ !docs/assets/
24
+ !docs/config/
25
+ !docs/content/
26
+ !docs/data/
27
+ !docs/layouts/
28
+ !docs/static/
29
+ !docs/themes/
30
+ !docs/go.mod
31
+ !docs/go.sum
32
+ # keep vendored Hugo modules for stable builds
33
+ !docs/_vendor/
34
+
35
+ # Ignore generated + cache files
36
+ docs/public/
37
+ docs/resources/
38
+ docs/.hugo_build.lock
39
+
40
+ # ----------------
41
+ # Node / Frontend
42
+ # ----------------
43
+ docs/node_modules/
44
+ docs/package-lock.json
45
+
46
+ # ----------------
47
+ # OS / Editors
48
+ # ----------------
49
+ .DS_Store
50
+ .idea/
51
+ .vscode/
52
+ *.swp
53
+ *.code-workspace
54
+ search_cache.json
55
+
56
+ # ----------------
57
+ # Indexly runtime
58
+ # ----------------
59
+ src/indexly/fts_index.db
60
+ src/indexly/profiles.json
61
+
62
+ # ----------------
63
+ # Logs
64
+ # ----------------
65
+ *.log
66
+ src/indexly/log/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 N.K. Franklin-Gent
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
indexly-1.0.8/PKG-INFO ADDED
@@ -0,0 +1,199 @@
1
+ Metadata-Version: 2.4
2
+ Name: indexly
3
+ Version: 1.0.8
4
+ Summary: A local file indexing and search tool with FTS5, regex, and CSV analysis support.
5
+ Project-URL: Homepage, https://projectindexly.com
6
+ Project-URL: Documentation, https://projectindexly.com
7
+ Project-URL: Source, https://github.com/kimsgent/project-indexly
8
+ Project-URL: Issues, https://github.com/kimsgent/project-indexly/issues
9
+ Author: N. K Franklin-Gent
10
+ Author-email: OpenAI ChatGPT <support@openai.com>
11
+ License: MIT
12
+ License-File: LICENSE.txt
13
+ Keywords: asyncio,csv,fts5,indexing,regex,search
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Database
24
+ Classifier: Topic :: Text Processing :: Indexing
25
+ Classifier: Topic :: Utilities
26
+ Requires-Python: >=3.8
27
+ Requires-Dist: beautifulsoup4<5.0,>=4.12
28
+ Requires-Dist: colorama<1.0,>=0.4
29
+ Requires-Dist: ebooklib<1.0,>=0.18
30
+ Requires-Dist: eml-parser<2.0,>=1.0
31
+ Requires-Dist: extract-msg<1.0,>=0.25
32
+ Requires-Dist: fpdf2<3.0,>=2.8
33
+ Requires-Dist: nltk<4.0,>=3.8
34
+ Requires-Dist: odfpy<2.0,>=1.4
35
+ Requires-Dist: openpyxl<4.0,>=3.1
36
+ Requires-Dist: pandas<3.0,>=2.1
37
+ Requires-Dist: pillow<12.0,>=10.0
38
+ Requires-Dist: plotext<6.0,>=5.2
39
+ Requires-Dist: plotly<6.0,>=5.22
40
+ Requires-Dist: pymupdf<2.0,>=1.23
41
+ Requires-Dist: pypdf2<4.0,>=3.0
42
+ Requires-Dist: pytesseract<0.4,>=0.3.13
43
+ Requires-Dist: python-docx<2.0,>=1.2
44
+ Requires-Dist: python-pptx<1.0,>=0.6
45
+ Requires-Dist: pyyaml<7.0,>=6.0
46
+ Requires-Dist: rapidfuzz<4.0,>=2.16
47
+ Requires-Dist: reportlab<5.0,>=4.0
48
+ Requires-Dist: requests<3.0,>=2.31
49
+ Requires-Dist: rich<14.0,>=13.7
50
+ Requires-Dist: watchdog<5.0,>=3.0
51
+ Requires-Dist: xmltodict<1.0,>=0.13
52
+ Provides-Extra: analysis
53
+ Requires-Dist: matplotlib<3.10,>=3.8; (python_version < '3.13') and extra == 'analysis'
54
+ Requires-Dist: plotly<6.0,>=5.22; extra == 'analysis'
55
+ Requires-Dist: scipy<1.14,>=1.12; (python_version < '3.13') and extra == 'analysis'
56
+ Requires-Dist: statsmodels<0.15,>=0.14; extra == 'analysis'
57
+ Provides-Extra: exiftool
58
+ Description-Content-Type: text/markdown
59
+
60
+ # Indexly
61
+
62
+ **Indexly** is a local file indexing and search tool for Windows, Linux, and macOS. It supports **FTS5 full-text search**, **regex search**, **fuzzy search**, and advanced metadata extraction for documents, images, CSV, JSON, and XML. Designed for speed, modularity, and extensibility.
63
+
64
+ ---
65
+
66
+ ## Features
67
+
68
+ ### ๐Ÿ” Search & Query
69
+
70
+ * **SQLite FTS5** with logical operators (`AND`, `OR`, `NOT`, `NEAR`, `"quotes"`, `*`, `()`).
71
+ * **Regex search** with snippet context.
72
+ * **Fuzzy search** with adjustable threshold.
73
+
74
+ ### ๐Ÿ“ Indexing & Structure
75
+
76
+ * Async file indexing with **change detection** (SHA-256 hashing).
77
+ * Real-time folder watching (`watch` command).
78
+ * Tagging system: `--tags`, `--add-tag`, `--remove-tag`.
79
+
80
+ ### ๐Ÿง  File Analysis (New)
81
+
82
+ * **Unified file analysis pipeline** (`analyze-file`)
83
+ * **JSON analysis** with treeview, preview, summary statistics (`analyze-json`)
84
+ * **XML analysis** with treeview, preview, metadata extraction
85
+ * **Tree view** for hierarchical formats (`tree` command)
86
+
87
+ ### ๐Ÿ“Š CSV Analysis
88
+
89
+ * Delimiter detection
90
+ * Structural validation
91
+ * Summary statistics: mean, median, std, IQR, percentiles, row/column info
92
+ * Export to TXT or Markdown
93
+
94
+ ### ๐Ÿ“„ Filetype Support
95
+
96
+ `.txt`, `.md`, `.pdf`, `.docx`, `.xlsx`, `.pptx`,
97
+ `.odt`, `.epub`, `.csv`, `.json`, `.xml`,
98
+ `.jpg`, `.png`, `.gif`, `.tiff`, `.bmp`
99
+
100
+ ### ๐Ÿงพ Metadata Extraction
101
+
102
+ * **Documents** โ†’ title, author, subject, created/modified timestamps
103
+ * **Images** โ†’ EXIF timestamp, camera, dimensions, color mode
104
+ * **JSON / XML** โ†’ top-level keys, structure summary
105
+
106
+ ### ๐Ÿ“ค Export Tools
107
+
108
+ * Export search/analyze results as: **TXT, MD, PDF, JSON**
109
+
110
+ ### ๐ŸŒ€ UX / Performance
111
+
112
+ * Optional ripple animation for long operations
113
+ * Modular architecture for easy extension
114
+
115
+ ---
116
+
117
+ ## Installation
118
+
119
+ ```bash
120
+ pip install indexly
121
+ ```
122
+
123
+ Or using your local wheel:
124
+
125
+ ```bash
126
+ pip install path/to/indexly-*.whl
127
+ ```
128
+
129
+ ---
130
+
131
+ ## CLI Usage
132
+
133
+ ```bash
134
+ indexly <command> [options]
135
+ ```
136
+
137
+ ### Core Commands
138
+
139
+ | Command | Description |
140
+ | -------- | ------------------------ |
141
+ | `index` | Index files in a folder |
142
+ | `search` | Perform FTS5 search |
143
+ | `regex` | Regex search |
144
+ | `fuzzy` | Fuzzy search mode |
145
+ | `watch` | Watch folder for changes |
146
+ | `stats` | Show database statistics |
147
+
148
+ ### Analysis Commands (New)
149
+
150
+ | Command | Description |
151
+ | -------------- | -------------------------------------- |
152
+ | `analyze-file` | Run the unified file analysis pipeline |
153
+ | `analyze-json` | Analyze JSON with tree + summary |
154
+ | `--treeview` | Show tree view for JSON or XML |
155
+ | `analyze-csv` | CSV analysis pipeline |
156
+
157
+ ### Examples
158
+
159
+ ```bash
160
+ # Index a folder
161
+ indexly index "C:\Docs" --filetype .pdf --tags Work
162
+
163
+ # FTS5 search
164
+ indexly search "invoice AND March"
165
+
166
+ # Regex search
167
+ indexly regex "(error|failed)" --filetype .log
168
+
169
+ # Add tags
170
+ indexly tag add --files notes.txt --tags project meeting
171
+
172
+ # Analyze any file
173
+ indexly analyze-file reports/summary.xlsx
174
+
175
+ # JSON analysis
176
+ indexly analyze-json data/config.json
177
+
178
+ # XML tree view
179
+ indexly analyze-file data/layout.xml --treeview
180
+
181
+ # CSV analysis
182
+ indexly analyze-csv data/sales.csv --format md --export-path report.md
183
+ ```
184
+
185
+ ---
186
+
187
+ ## Development
188
+
189
+ * Python โ‰ฅ 3.8
190
+ * Dependencies managed through `pyproject.toml`
191
+ * Modular codebase:
192
+ `analysis_orchestrator.py`, `csv_analyzer.py`, `search_core.py`,
193
+ `filetype_utils.py`, `export_utils.py`, `watcher.py`, `universal_loader.py`, etc.
194
+
195
+ ---
196
+
197
+ ## License
198
+
199
+ MIT License ยฉ 2026 N.K. Franklin-Gent
@@ -0,0 +1,3 @@
1
+ __version__ = "1.0.8"
2
+ __author__ = "N. K. Franklin-Gent"
3
+ __license__ = "MIT"
@@ -0,0 +1,6 @@
1
+ # src/indexly/__main__.py
2
+
3
+ from indexly.indexly import main # relative import
4
+
5
+ if __name__ == "__main__":
6
+ main()