tracenest 0.1.1__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 (34) hide show
  1. tracenest-0.1.1/LICENSE +21 -0
  2. tracenest-0.1.1/PKG-INFO +272 -0
  3. tracenest-0.1.1/README.md +213 -0
  4. tracenest-0.1.1/pyproject.toml +104 -0
  5. tracenest-0.1.1/setup.cfg +4 -0
  6. tracenest-0.1.1/tests/test_fastapi_middleware.py +124 -0
  7. tracenest-0.1.1/tests/test_formatter.py +56 -0
  8. tracenest-0.1.1/tests/test_logger.py +139 -0
  9. tracenest-0.1.1/tests/test_retention.py +115 -0
  10. tracenest-0.1.1/tests/test_rotation.py +100 -0
  11. tracenest-0.1.1/tests/test_writer.py +144 -0
  12. tracenest-0.1.1/tracenest/__init__.py +9 -0
  13. tracenest-0.1.1/tracenest/core/__init__.py +0 -0
  14. tracenest-0.1.1/tracenest/core/config.py +211 -0
  15. tracenest-0.1.1/tracenest/core/formatter.py +271 -0
  16. tracenest-0.1.1/tracenest/core/retention.py +205 -0
  17. tracenest-0.1.1/tracenest/core/rotation.py +159 -0
  18. tracenest-0.1.1/tracenest/core/writer.py +180 -0
  19. tracenest-0.1.1/tracenest/fastapi/__init__.py +0 -0
  20. tracenest-0.1.1/tracenest/fastapi/middleware.py +71 -0
  21. tracenest-0.1.1/tracenest/logger.py +262 -0
  22. tracenest-0.1.1/tracenest/ui/__init__.py +0 -0
  23. tracenest-0.1.1/tracenest/ui/router.py +107 -0
  24. tracenest-0.1.1/tracenest/ui/templates/app.js +263 -0
  25. tracenest-0.1.1/tracenest/ui/templates/index.html +102 -0
  26. tracenest-0.1.1/tracenest/ui/templates/styles.css +152 -0
  27. tracenest-0.1.1/tracenest/utils/__init__.py +0 -0
  28. tracenest-0.1.1/tracenest/utils/filesystem.py +0 -0
  29. tracenest-0.1.1/tracenest/utils/time.py +0 -0
  30. tracenest-0.1.1/tracenest.egg-info/PKG-INFO +272 -0
  31. tracenest-0.1.1/tracenest.egg-info/SOURCES.txt +32 -0
  32. tracenest-0.1.1/tracenest.egg-info/dependency_links.txt +1 -0
  33. tracenest-0.1.1/tracenest.egg-info/requires.txt +15 -0
  34. tracenest-0.1.1/tracenest.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 VishwajitVM <vishwajitmall50@gmail.com>
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.
@@ -0,0 +1,272 @@
1
+ Metadata-Version: 2.4
2
+ Name: tracenest
3
+ Version: 0.1.1
4
+ Summary: Developer-first, local-first logging infrastructure for Python applications
5
+ Author-email: VishwajitVM <vishwajitmall50@gmail.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 VishwajitVM <vishwajitmall50@gmail.com>
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/vishwajitvm/tracenest
29
+ Project-URL: Repository, https://github.com/vishwajitvm/tracenest
30
+ Project-URL: Issues, https://github.com/vishwajitvm/tracenest/issues
31
+ Keywords: logging,observability,logs,fastapi,developer-tools,local-first,infrastructure
32
+ Classifier: Development Status :: 3 - Alpha
33
+ Classifier: Intended Audience :: Developers
34
+ Classifier: Topic :: System :: Logging
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Programming Language :: Python :: 3
37
+ Classifier: Programming Language :: Python :: 3 :: Only
38
+ Classifier: Programming Language :: Python :: 3.9
39
+ Classifier: Programming Language :: Python :: 3.10
40
+ Classifier: Programming Language :: Python :: 3.11
41
+ Classifier: Programming Language :: Python :: 3.12
42
+ Classifier: Operating System :: OS Independent
43
+ Requires-Python: >=3.9
44
+ Description-Content-Type: text/markdown
45
+ License-File: LICENSE
46
+ Provides-Extra: fastapi
47
+ Requires-Dist: fastapi>=0.100.0; extra == "fastapi"
48
+ Provides-Extra: dev
49
+ Requires-Dist: pytest>=7.0; extra == "dev"
50
+ Requires-Dist: pytest-cov; extra == "dev"
51
+ Requires-Dist: ruff; extra == "dev"
52
+ Requires-Dist: black; extra == "dev"
53
+ Requires-Dist: mypy; extra == "dev"
54
+ Requires-Dist: uvicorn[standard]; extra == "dev"
55
+ Provides-Extra: docs
56
+ Requires-Dist: mkdocs; extra == "docs"
57
+ Requires-Dist: mkdocs-material; extra == "docs"
58
+ Dynamic: license-file
59
+
60
+ # TraceNest
61
+
62
+ TraceNest is a **developer-first, local-first logging SDK for Python applications** designed to remove the operational burden of log management from developers.
63
+
64
+ You focus on building features.
65
+ TraceNest takes care of logging.
66
+
67
+ ---
68
+
69
+ ## What is TraceNest?
70
+
71
+ TraceNest is not just a logger.
72
+ It is a **logging infrastructure layer** embedded directly into your application.
73
+
74
+ It automatically:
75
+ - Creates and manages log files
76
+ - Rotates logs safely
77
+ - Enforces retention limits
78
+ - Provides a built-in UI to view logs
79
+ - Integrates seamlessly with FastAPI
80
+ - Works out of the box with zero configuration
81
+
82
+ ---
83
+
84
+ ## Why TraceNest Exists
85
+
86
+ Traditional logging requires developers to:
87
+ - Configure log handlers
88
+ - Manage file rotation
89
+ - Clean up old logs
90
+ - Build tools to inspect logs
91
+
92
+ TraceNest eliminates this complexity by handling **the entire log lifecycle automatically**.
93
+
94
+ ---
95
+
96
+ ## Key Features
97
+
98
+ - Zero-configuration setup
99
+ - Automatic `TraceNestLogs/` folder creation
100
+ - Day-wise or single-file logging modes
101
+ - Strict size and retention enforcement
102
+ - Built-in UI served from the application
103
+ - Structured, metadata-rich logs
104
+ - Native FastAPI middleware
105
+ - Safe, non-blocking design
106
+ - Free and easy to integrate
107
+
108
+ ---
109
+
110
+ ## Installation
111
+
112
+ ```bash
113
+ pip install tracenest
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Quick Usage
119
+
120
+ ```python
121
+ from tracenest import logger
122
+
123
+ logger.info("Application started")
124
+ logger.error("Payment failed", order_id=123)
125
+ ```
126
+
127
+ Logs are immediately written to:
128
+
129
+ ```text
130
+ TraceNestLogs/
131
+ ```
132
+
133
+ No configuration required.
134
+
135
+ ---
136
+
137
+ ## Log Storage
138
+
139
+ By default, TraceNest stores logs locally inside the project root:
140
+
141
+ ```text
142
+ TraceNestLogs/
143
+ ├── 2026-01-10.log
144
+ ├── 2026-01-11.log
145
+ └── archive/
146
+ ```
147
+
148
+ ### Default Behavior
149
+
150
+ - One log file per day
151
+ - Maximum 25–30 MB per day
152
+ - Retention up to 60 days
153
+ - Old logs deleted automatically
154
+
155
+ A single-file mode is also available for smaller projects.
156
+
157
+ ---
158
+
159
+ ## Built-In UI
160
+
161
+ When used with FastAPI, TraceNest exposes a local UI automatically:
162
+
163
+ ```text
164
+ http://localhost:8000/tracenest
165
+ ```
166
+
167
+ ### UI Features
168
+
169
+ - Live log streaming
170
+ - Search and filtering
171
+ - Date-based navigation
172
+ - Download logs
173
+ - Clear logs
174
+ - Theme selection
175
+
176
+ ### Available Themes
177
+
178
+ - Light
179
+ - Dark
180
+ - Blue-Dark
181
+
182
+ ---
183
+
184
+ ## FastAPI Integration
185
+
186
+ TraceNest provides native FastAPI middleware for automatic request logging.
187
+
188
+ ```python
189
+ from tracenest.fastapi import TraceNestMiddleware
190
+
191
+ app.add_middleware(TraceNestMiddleware)
192
+ ```
193
+
194
+ Automatically logs:
195
+ - Incoming requests
196
+ - Response status codes
197
+ - Request duration
198
+ - Unhandled exceptions
199
+
200
+ ---
201
+
202
+ ## Safety and Performance
203
+
204
+ TraceNest is designed to be production-safe.
205
+
206
+ - Never blocks application execution
207
+ - Uses buffered I/O
208
+ - Minimal memory footprint
209
+ - Graceful fallback on failure
210
+ - Works inside Docker and containers
211
+
212
+ TraceNest will **never crash your application**.
213
+
214
+ ---
215
+
216
+ ## Documentation
217
+
218
+ Detailed documentation is available in the `docs/` folder:
219
+
220
+ - Introduction & philosophy
221
+ - Quick start
222
+ - Logging guidelines
223
+ - Configuration
224
+ - Storage & retention
225
+ - UI usage
226
+ - FastAPI integration
227
+ - Performance guarantees
228
+ - Version history
229
+
230
+ ---
231
+
232
+ ## Versioning
233
+
234
+ TraceNest follows semantic versioning.
235
+
236
+ ### Current Version: `0.1.0`
237
+
238
+ Includes:
239
+ - Core logging API
240
+ - Automatic folder creation
241
+ - Day-wise and single-file logging
242
+ - Retention enforcement
243
+ - Built-in UI
244
+ - FastAPI middleware
245
+
246
+ ---
247
+
248
+ ## Philosophy
249
+
250
+ TraceNest is built on three principles:
251
+
252
+ 1. Zero friction for developers
253
+ 2. Full transparency of logs
254
+ 3. Production-grade safety by default
255
+
256
+ ---
257
+
258
+ ## Author & Maintainer
259
+
260
+ **VishwajitVM**
261
+
262
+ - 📍 New Delhi, India
263
+ - 🐙 GitHub: https://github.com/vishwajitvm
264
+ - ✉️ Email: vishwajitmall50@gmail.com
265
+
266
+ TraceNest is actively maintained with a strong focus on real-world production use cases, developer experience, and long-term scalability.
267
+
268
+ ---
269
+
270
+ ## License
271
+
272
+ TraceNest SDK is free to use and distributed under an open-source license.
@@ -0,0 +1,213 @@
1
+ # TraceNest
2
+
3
+ TraceNest is a **developer-first, local-first logging SDK for Python applications** designed to remove the operational burden of log management from developers.
4
+
5
+ You focus on building features.
6
+ TraceNest takes care of logging.
7
+
8
+ ---
9
+
10
+ ## What is TraceNest?
11
+
12
+ TraceNest is not just a logger.
13
+ It is a **logging infrastructure layer** embedded directly into your application.
14
+
15
+ It automatically:
16
+ - Creates and manages log files
17
+ - Rotates logs safely
18
+ - Enforces retention limits
19
+ - Provides a built-in UI to view logs
20
+ - Integrates seamlessly with FastAPI
21
+ - Works out of the box with zero configuration
22
+
23
+ ---
24
+
25
+ ## Why TraceNest Exists
26
+
27
+ Traditional logging requires developers to:
28
+ - Configure log handlers
29
+ - Manage file rotation
30
+ - Clean up old logs
31
+ - Build tools to inspect logs
32
+
33
+ TraceNest eliminates this complexity by handling **the entire log lifecycle automatically**.
34
+
35
+ ---
36
+
37
+ ## Key Features
38
+
39
+ - Zero-configuration setup
40
+ - Automatic `TraceNestLogs/` folder creation
41
+ - Day-wise or single-file logging modes
42
+ - Strict size and retention enforcement
43
+ - Built-in UI served from the application
44
+ - Structured, metadata-rich logs
45
+ - Native FastAPI middleware
46
+ - Safe, non-blocking design
47
+ - Free and easy to integrate
48
+
49
+ ---
50
+
51
+ ## Installation
52
+
53
+ ```bash
54
+ pip install tracenest
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Quick Usage
60
+
61
+ ```python
62
+ from tracenest import logger
63
+
64
+ logger.info("Application started")
65
+ logger.error("Payment failed", order_id=123)
66
+ ```
67
+
68
+ Logs are immediately written to:
69
+
70
+ ```text
71
+ TraceNestLogs/
72
+ ```
73
+
74
+ No configuration required.
75
+
76
+ ---
77
+
78
+ ## Log Storage
79
+
80
+ By default, TraceNest stores logs locally inside the project root:
81
+
82
+ ```text
83
+ TraceNestLogs/
84
+ ├── 2026-01-10.log
85
+ ├── 2026-01-11.log
86
+ └── archive/
87
+ ```
88
+
89
+ ### Default Behavior
90
+
91
+ - One log file per day
92
+ - Maximum 25–30 MB per day
93
+ - Retention up to 60 days
94
+ - Old logs deleted automatically
95
+
96
+ A single-file mode is also available for smaller projects.
97
+
98
+ ---
99
+
100
+ ## Built-In UI
101
+
102
+ When used with FastAPI, TraceNest exposes a local UI automatically:
103
+
104
+ ```text
105
+ http://localhost:8000/tracenest
106
+ ```
107
+
108
+ ### UI Features
109
+
110
+ - Live log streaming
111
+ - Search and filtering
112
+ - Date-based navigation
113
+ - Download logs
114
+ - Clear logs
115
+ - Theme selection
116
+
117
+ ### Available Themes
118
+
119
+ - Light
120
+ - Dark
121
+ - Blue-Dark
122
+
123
+ ---
124
+
125
+ ## FastAPI Integration
126
+
127
+ TraceNest provides native FastAPI middleware for automatic request logging.
128
+
129
+ ```python
130
+ from tracenest.fastapi import TraceNestMiddleware
131
+
132
+ app.add_middleware(TraceNestMiddleware)
133
+ ```
134
+
135
+ Automatically logs:
136
+ - Incoming requests
137
+ - Response status codes
138
+ - Request duration
139
+ - Unhandled exceptions
140
+
141
+ ---
142
+
143
+ ## Safety and Performance
144
+
145
+ TraceNest is designed to be production-safe.
146
+
147
+ - Never blocks application execution
148
+ - Uses buffered I/O
149
+ - Minimal memory footprint
150
+ - Graceful fallback on failure
151
+ - Works inside Docker and containers
152
+
153
+ TraceNest will **never crash your application**.
154
+
155
+ ---
156
+
157
+ ## Documentation
158
+
159
+ Detailed documentation is available in the `docs/` folder:
160
+
161
+ - Introduction & philosophy
162
+ - Quick start
163
+ - Logging guidelines
164
+ - Configuration
165
+ - Storage & retention
166
+ - UI usage
167
+ - FastAPI integration
168
+ - Performance guarantees
169
+ - Version history
170
+
171
+ ---
172
+
173
+ ## Versioning
174
+
175
+ TraceNest follows semantic versioning.
176
+
177
+ ### Current Version: `0.1.0`
178
+
179
+ Includes:
180
+ - Core logging API
181
+ - Automatic folder creation
182
+ - Day-wise and single-file logging
183
+ - Retention enforcement
184
+ - Built-in UI
185
+ - FastAPI middleware
186
+
187
+ ---
188
+
189
+ ## Philosophy
190
+
191
+ TraceNest is built on three principles:
192
+
193
+ 1. Zero friction for developers
194
+ 2. Full transparency of logs
195
+ 3. Production-grade safety by default
196
+
197
+ ---
198
+
199
+ ## Author & Maintainer
200
+
201
+ **VishwajitVM**
202
+
203
+ - 📍 New Delhi, India
204
+ - 🐙 GitHub: https://github.com/vishwajitvm
205
+ - ✉️ Email: vishwajitmall50@gmail.com
206
+
207
+ TraceNest is actively maintained with a strong focus on real-world production use cases, developer experience, and long-term scalability.
208
+
209
+ ---
210
+
211
+ ## License
212
+
213
+ TraceNest SDK is free to use and distributed under an open-source license.
@@ -0,0 +1,104 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+
6
+ [project]
7
+ name = "tracenest"
8
+ version = "0.1.1"
9
+ description = "Developer-first, local-first logging infrastructure for Python applications"
10
+ readme = { file = "README.md", content-type = "text/markdown" }
11
+ license = { file = "LICENSE" }
12
+ requires-python = ">=3.9"
13
+
14
+ authors = [
15
+ { name = "VishwajitVM", email = "vishwajitmall50@gmail.com" }
16
+ ]
17
+
18
+ keywords = [
19
+ "logging",
20
+ "observability",
21
+ "logs",
22
+ "fastapi",
23
+ "developer-tools",
24
+ "local-first",
25
+ "infrastructure"
26
+ ]
27
+
28
+ classifiers = [
29
+ "Development Status :: 3 - Alpha",
30
+ "Intended Audience :: Developers",
31
+ "Topic :: System :: Logging",
32
+ "License :: OSI Approved :: MIT License",
33
+ "Programming Language :: Python :: 3",
34
+ "Programming Language :: Python :: 3 :: Only",
35
+ "Programming Language :: Python :: 3.9",
36
+ "Programming Language :: Python :: 3.10",
37
+ "Programming Language :: Python :: 3.11",
38
+ "Programming Language :: Python :: 3.12",
39
+ "Operating System :: OS Independent"
40
+ ]
41
+
42
+
43
+ [project.optional-dependencies]
44
+ fastapi = [
45
+ "fastapi>=0.100.0"
46
+ ]
47
+
48
+ dev = [
49
+ "pytest>=7.0",
50
+ "pytest-cov",
51
+ "ruff",
52
+ "black",
53
+ "mypy",
54
+ "uvicorn[standard]"
55
+ ]
56
+
57
+ docs = [
58
+ "mkdocs",
59
+ "mkdocs-material"
60
+ ]
61
+
62
+
63
+ [project.urls]
64
+ Homepage = "https://github.com/vishwajitvm/tracenest"
65
+ Repository = "https://github.com/vishwajitvm/tracenest"
66
+ Issues = "https://github.com/vishwajitvm/tracenest/issues"
67
+
68
+
69
+ [tool.setuptools]
70
+ include-package-data = true
71
+
72
+
73
+ [tool.setuptools.packages.find]
74
+ where = ["."]
75
+ include = ["tracenest*"]
76
+ exclude = ["tests*", "docs*", "examples*"]
77
+
78
+
79
+ [tool.setuptools.package-data]
80
+ tracenest = [
81
+ "ui/templates/*.html",
82
+ "ui/templates/*.js",
83
+ "ui/templates/*.css"
84
+ ]
85
+
86
+
87
+ [tool.black]
88
+ line-length = 88
89
+ target-version = ["py39"]
90
+
91
+ [tool.ruff]
92
+ line-length = 88
93
+ select = ["E", "F", "I"]
94
+ ignore = ["E501"]
95
+
96
+ [tool.mypy]
97
+ python_version = "3.9"
98
+ strict = true
99
+ ignore_missing_imports = true
100
+
101
+ [tool.pytest.ini_options]
102
+ minversion = "7.0"
103
+ addopts = "-ra -q"
104
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+