provide-foundation 0.0.0.dev0__py3-none-any.whl → 0.0.0.dev2__py3-none-any.whl
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.
- provide/foundation/__init__.py +41 -23
- provide/foundation/archive/__init__.py +23 -0
- provide/foundation/archive/base.py +70 -0
- provide/foundation/archive/bzip2.py +157 -0
- provide/foundation/archive/gzip.py +159 -0
- provide/foundation/archive/operations.py +334 -0
- provide/foundation/archive/tar.py +164 -0
- provide/foundation/archive/zip.py +203 -0
- provide/foundation/cli/__init__.py +2 -2
- provide/foundation/cli/commands/deps.py +13 -7
- provide/foundation/cli/commands/logs/__init__.py +1 -1
- provide/foundation/cli/commands/logs/query.py +1 -1
- provide/foundation/cli/commands/logs/send.py +1 -1
- provide/foundation/cli/commands/logs/tail.py +1 -1
- provide/foundation/cli/decorators.py +11 -10
- provide/foundation/cli/main.py +1 -1
- provide/foundation/cli/testing.py +2 -35
- provide/foundation/cli/utils.py +21 -17
- provide/foundation/config/__init__.py +35 -2
- provide/foundation/config/base.py +2 -2
- provide/foundation/config/converters.py +479 -0
- provide/foundation/config/defaults.py +67 -0
- provide/foundation/config/env.py +4 -19
- provide/foundation/config/loader.py +9 -3
- provide/foundation/config/sync.py +19 -4
- provide/foundation/console/input.py +5 -5
- provide/foundation/console/output.py +35 -13
- provide/foundation/context/__init__.py +8 -4
- provide/foundation/context/core.py +85 -109
- provide/foundation/core.py +1 -2
- provide/foundation/crypto/__init__.py +2 -0
- provide/foundation/crypto/certificates/__init__.py +34 -0
- provide/foundation/crypto/certificates/base.py +173 -0
- provide/foundation/crypto/certificates/certificate.py +290 -0
- provide/foundation/crypto/certificates/factory.py +213 -0
- provide/foundation/crypto/certificates/generator.py +138 -0
- provide/foundation/crypto/certificates/loader.py +130 -0
- provide/foundation/crypto/certificates/operations.py +198 -0
- provide/foundation/crypto/certificates/trust.py +107 -0
- provide/foundation/errors/__init__.py +2 -3
- provide/foundation/errors/decorators.py +0 -231
- provide/foundation/errors/types.py +0 -97
- provide/foundation/eventsets/__init__.py +0 -0
- provide/foundation/eventsets/display.py +84 -0
- provide/foundation/eventsets/registry.py +160 -0
- provide/foundation/eventsets/resolver.py +192 -0
- provide/foundation/eventsets/sets/das.py +128 -0
- provide/foundation/eventsets/sets/database.py +125 -0
- provide/foundation/eventsets/sets/http.py +153 -0
- provide/foundation/eventsets/sets/llm.py +139 -0
- provide/foundation/eventsets/sets/task_queue.py +107 -0
- provide/foundation/eventsets/types.py +70 -0
- provide/foundation/file/directory.py +13 -22
- provide/foundation/file/lock.py +3 -1
- provide/foundation/hub/components.py +77 -515
- provide/foundation/hub/config.py +151 -0
- provide/foundation/hub/discovery.py +62 -0
- provide/foundation/hub/handlers.py +81 -0
- provide/foundation/hub/lifecycle.py +194 -0
- provide/foundation/hub/manager.py +4 -4
- provide/foundation/hub/processors.py +44 -0
- provide/foundation/integrations/__init__.py +11 -0
- provide/foundation/{observability → integrations}/openobserve/__init__.py +10 -7
- provide/foundation/{observability → integrations}/openobserve/auth.py +1 -1
- provide/foundation/{observability → integrations}/openobserve/client.py +12 -12
- provide/foundation/{observability → integrations}/openobserve/commands.py +3 -3
- provide/foundation/integrations/openobserve/config.py +37 -0
- provide/foundation/{observability → integrations}/openobserve/formatters.py +1 -1
- provide/foundation/{observability → integrations}/openobserve/otlp.py +1 -1
- provide/foundation/{observability → integrations}/openobserve/search.py +2 -2
- provide/foundation/{observability → integrations}/openobserve/streaming.py +4 -4
- provide/foundation/logger/__init__.py +3 -10
- provide/foundation/logger/config/logging.py +68 -298
- provide/foundation/logger/config/telemetry.py +41 -121
- provide/foundation/logger/core.py +0 -2
- provide/foundation/logger/custom_processors.py +1 -0
- provide/foundation/logger/factories.py +11 -2
- provide/foundation/logger/processors/main.py +20 -84
- provide/foundation/logger/setup/__init__.py +5 -1
- provide/foundation/logger/setup/coordinator.py +76 -24
- provide/foundation/logger/setup/processors.py +2 -9
- provide/foundation/logger/trace.py +27 -0
- provide/foundation/metrics/otel.py +10 -10
- provide/foundation/observability/__init__.py +2 -2
- provide/foundation/process/__init__.py +9 -0
- provide/foundation/process/exit.py +47 -0
- provide/foundation/process/lifecycle.py +115 -59
- provide/foundation/resilience/__init__.py +35 -0
- provide/foundation/resilience/circuit.py +164 -0
- provide/foundation/resilience/decorators.py +220 -0
- provide/foundation/resilience/fallback.py +193 -0
- provide/foundation/resilience/retry.py +325 -0
- provide/foundation/streams/config.py +79 -0
- provide/foundation/streams/console.py +7 -8
- provide/foundation/streams/core.py +6 -3
- provide/foundation/streams/file.py +12 -2
- provide/foundation/testing/__init__.py +84 -2
- provide/foundation/testing/archive/__init__.py +24 -0
- provide/foundation/testing/archive/fixtures.py +217 -0
- provide/foundation/testing/cli.py +30 -17
- provide/foundation/testing/common/__init__.py +32 -0
- provide/foundation/testing/common/fixtures.py +236 -0
- provide/foundation/testing/file/__init__.py +40 -0
- provide/foundation/testing/file/content_fixtures.py +316 -0
- provide/foundation/testing/file/directory_fixtures.py +107 -0
- provide/foundation/testing/file/fixtures.py +52 -0
- provide/foundation/testing/file/special_fixtures.py +153 -0
- provide/foundation/testing/logger.py +117 -11
- provide/foundation/testing/mocking/__init__.py +46 -0
- provide/foundation/testing/mocking/fixtures.py +331 -0
- provide/foundation/testing/process/__init__.py +48 -0
- provide/foundation/testing/process/async_fixtures.py +405 -0
- provide/foundation/testing/process/fixtures.py +56 -0
- provide/foundation/testing/process/subprocess_fixtures.py +209 -0
- provide/foundation/testing/threading/__init__.py +38 -0
- provide/foundation/testing/threading/basic_fixtures.py +101 -0
- provide/foundation/testing/threading/data_fixtures.py +99 -0
- provide/foundation/testing/threading/execution_fixtures.py +263 -0
- provide/foundation/testing/threading/fixtures.py +54 -0
- provide/foundation/testing/threading/sync_fixtures.py +97 -0
- provide/foundation/testing/time/__init__.py +32 -0
- provide/foundation/testing/time/fixtures.py +409 -0
- provide/foundation/testing/transport/__init__.py +30 -0
- provide/foundation/testing/transport/fixtures.py +280 -0
- provide/foundation/tools/__init__.py +58 -0
- provide/foundation/tools/base.py +348 -0
- provide/foundation/tools/cache.py +268 -0
- provide/foundation/tools/downloader.py +224 -0
- provide/foundation/tools/installer.py +254 -0
- provide/foundation/tools/registry.py +223 -0
- provide/foundation/tools/resolver.py +321 -0
- provide/foundation/tools/verifier.py +186 -0
- provide/foundation/tracer/otel.py +7 -11
- provide/foundation/tracer/spans.py +2 -2
- provide/foundation/transport/__init__.py +155 -0
- provide/foundation/transport/base.py +171 -0
- provide/foundation/transport/client.py +266 -0
- provide/foundation/transport/config.py +140 -0
- provide/foundation/transport/errors.py +79 -0
- provide/foundation/transport/http.py +232 -0
- provide/foundation/transport/middleware.py +360 -0
- provide/foundation/transport/registry.py +167 -0
- provide/foundation/transport/types.py +45 -0
- provide/foundation/utils/deps.py +14 -12
- provide/foundation/utils/parsing.py +49 -4
- {provide_foundation-0.0.0.dev0.dist-info → provide_foundation-0.0.0.dev2.dist-info}/METADATA +5 -28
- provide_foundation-0.0.0.dev2.dist-info/RECORD +225 -0
- provide/foundation/cli/commands/logs/generate_old.py +0 -569
- provide/foundation/crypto/certificates.py +0 -896
- provide/foundation/logger/emoji/__init__.py +0 -44
- provide/foundation/logger/emoji/matrix.py +0 -209
- provide/foundation/logger/emoji/sets.py +0 -458
- provide/foundation/logger/emoji/types.py +0 -56
- provide/foundation/logger/setup/emoji_resolver.py +0 -64
- provide_foundation-0.0.0.dev0.dist-info/RECORD +0 -149
- /provide/foundation/{observability → integrations}/openobserve/exceptions.py +0 -0
- /provide/foundation/{observability → integrations}/openobserve/models.py +0 -0
- {provide_foundation-0.0.0.dev0.dist-info → provide_foundation-0.0.0.dev2.dist-info}/WHEEL +0 -0
- {provide_foundation-0.0.0.dev0.dist-info → provide_foundation-0.0.0.dev2.dist-info}/entry_points.txt +0 -0
- {provide_foundation-0.0.0.dev0.dist-info → provide_foundation-0.0.0.dev2.dist-info}/licenses/LICENSE +0 -0
- {provide_foundation-0.0.0.dev0.dist-info → provide_foundation-0.0.0.dev2.dist-info}/top_level.txt +0 -0
@@ -1,44 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Emoji configuration and mapping for Foundation logger.
|
3
|
-
|
4
|
-
This module provides emoji sets and mappings for visual enhancement
|
5
|
-
of structured logs in various domains (HTTP, LLM, Database, etc.).
|
6
|
-
"""
|
7
|
-
|
8
|
-
from provide.foundation.logger.emoji.matrix import (
|
9
|
-
PRIMARY_EMOJI,
|
10
|
-
SECONDARY_EMOJI,
|
11
|
-
TERTIARY_EMOJI,
|
12
|
-
show_emoji_matrix,
|
13
|
-
)
|
14
|
-
from provide.foundation.logger.emoji.sets import (
|
15
|
-
DATABASE_EMOJI_SET,
|
16
|
-
HTTP_EMOJI_SET,
|
17
|
-
LEGACY_DAS_EMOJI_SETS,
|
18
|
-
LEGACY_DAS_FIELD_DEFINITIONS,
|
19
|
-
LLM_EMOJI_SET,
|
20
|
-
)
|
21
|
-
from provide.foundation.logger.emoji.types import (
|
22
|
-
EmojiSet,
|
23
|
-
EmojiSetConfig,
|
24
|
-
FieldToEmojiMapping,
|
25
|
-
)
|
26
|
-
|
27
|
-
__all__ = [
|
28
|
-
# Core emoji dictionaries
|
29
|
-
"PRIMARY_EMOJI",
|
30
|
-
"SECONDARY_EMOJI",
|
31
|
-
"TERTIARY_EMOJI",
|
32
|
-
# Emoji sets
|
33
|
-
"DATABASE_EMOJI_SET",
|
34
|
-
"HTTP_EMOJI_SET",
|
35
|
-
"LLM_EMOJI_SET",
|
36
|
-
"LEGACY_DAS_EMOJI_SETS",
|
37
|
-
"LEGACY_DAS_FIELD_DEFINITIONS",
|
38
|
-
# Types
|
39
|
-
"EmojiSet",
|
40
|
-
"EmojiSetConfig",
|
41
|
-
"FieldToEmojiMapping",
|
42
|
-
# Utilities
|
43
|
-
"show_emoji_matrix",
|
44
|
-
]
|
@@ -1,209 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# emoji_matrix.py
|
3
|
-
#
|
4
|
-
"""
|
5
|
-
Foundation Telemetry Emoji Matrix and Display Utilities.
|
6
|
-
Defines the core DAS emoji mappings and provides utilities to display
|
7
|
-
active emoji configurations (DAS or emoji set-based).
|
8
|
-
"""
|
9
|
-
|
10
|
-
from provide.foundation.logger import (
|
11
|
-
base as foundation_logger_base, # For accessing the global logger instance
|
12
|
-
)
|
13
|
-
|
14
|
-
# Import types for resolved config structure
|
15
|
-
from provide.foundation.logger.emoji.types import EmojiSet, FieldToEmojiMapping
|
16
|
-
|
17
|
-
PRIMARY_EMOJI: dict[str, str] = {
|
18
|
-
"system": "⚙️",
|
19
|
-
"server": "🛎️",
|
20
|
-
"client": "🙋",
|
21
|
-
"network": "🌐",
|
22
|
-
"security": "🔐",
|
23
|
-
"config": "🔩",
|
24
|
-
"database": "🗄️",
|
25
|
-
"cache": "💾",
|
26
|
-
"task": "🔄",
|
27
|
-
"plugin": "🔌",
|
28
|
-
"telemetry": "🛰️",
|
29
|
-
"di": "💉",
|
30
|
-
"protocol": "📡",
|
31
|
-
"file": "📄",
|
32
|
-
"user": "👤",
|
33
|
-
"test": "🧪",
|
34
|
-
"utils": "🧰",
|
35
|
-
"core": "🌟",
|
36
|
-
"auth": "🔑",
|
37
|
-
"entity": "🦎",
|
38
|
-
"report": "📈",
|
39
|
-
"payment": "💳",
|
40
|
-
"default": "❓",
|
41
|
-
}
|
42
|
-
|
43
|
-
SECONDARY_EMOJI: dict[str, str] = {
|
44
|
-
"init": "🌱",
|
45
|
-
"start": "🚀",
|
46
|
-
"stop": "🛑",
|
47
|
-
"connect": "🔗",
|
48
|
-
"disconnect": "💔",
|
49
|
-
"listen": "👂",
|
50
|
-
"send": "📤",
|
51
|
-
"receive": "📥",
|
52
|
-
"read": "📖",
|
53
|
-
"write": "📝",
|
54
|
-
"process": "⚙️",
|
55
|
-
"validate": "🛡️",
|
56
|
-
"execute": "▶️",
|
57
|
-
"query": "🔍",
|
58
|
-
"update": "🔄",
|
59
|
-
"delete": "🗑️",
|
60
|
-
"login": "➡️",
|
61
|
-
"logout": "⬅️",
|
62
|
-
"auth": "🔑",
|
63
|
-
"error": "🔥",
|
64
|
-
"encrypt": "🛡️",
|
65
|
-
"decrypt": "🔓",
|
66
|
-
"parse": "🧩",
|
67
|
-
"transmit": "📡",
|
68
|
-
"build": "🏗️",
|
69
|
-
"schedule": "📅",
|
70
|
-
"emit": "📢",
|
71
|
-
"load": "💡",
|
72
|
-
"observe": "🧐",
|
73
|
-
"request": "🗣️",
|
74
|
-
"interrupt": "🚦",
|
75
|
-
"register": "⚙️",
|
76
|
-
"default": "❓",
|
77
|
-
}
|
78
|
-
|
79
|
-
TERTIARY_EMOJI: dict[str, str] = {
|
80
|
-
"success": "✅",
|
81
|
-
"failure": "❌",
|
82
|
-
"error": "🔥",
|
83
|
-
"warning": "⚠️",
|
84
|
-
"info": "ℹ️",
|
85
|
-
"debug": "🐞",
|
86
|
-
"trace": "👣",
|
87
|
-
"attempt": "⏳",
|
88
|
-
"retry": "🔁",
|
89
|
-
"skip": "⏭️",
|
90
|
-
"complete": "🏁",
|
91
|
-
"timeout": "⏱️",
|
92
|
-
"notfound": "❓",
|
93
|
-
"unauthorized": "🚫",
|
94
|
-
"invalid": "💢",
|
95
|
-
"cached": "🎯",
|
96
|
-
"ongoing": "🏃",
|
97
|
-
"idle": "💤",
|
98
|
-
"ready": "👍",
|
99
|
-
"default": "➡️",
|
100
|
-
}
|
101
|
-
|
102
|
-
|
103
|
-
def _format_emoji_set_for_display(emoji_set: EmojiSet) -> list[str]:
|
104
|
-
lines = [
|
105
|
-
f" Emoji Set: '{emoji_set.name}' (Default Key: '{emoji_set.default_emoji_key}')"
|
106
|
-
]
|
107
|
-
for key, emoji in sorted(emoji_set.emojis.items()):
|
108
|
-
lines.append(f" {emoji} -> {key.capitalize()}")
|
109
|
-
return lines
|
110
|
-
|
111
|
-
|
112
|
-
def _format_field_definition_for_display(field_def: FieldToEmojiMapping) -> str:
|
113
|
-
parts = [f" Log Key: '{field_def.log_key}'"]
|
114
|
-
if field_def.description:
|
115
|
-
parts.append(f" Desc: {field_def.description}")
|
116
|
-
if field_def.value_type:
|
117
|
-
parts.append(f" Type: {field_def.value_type}")
|
118
|
-
if field_def.emoji_set_name:
|
119
|
-
parts.append(f" Emoji Set: '{field_def.emoji_set_name}'")
|
120
|
-
if field_def.default_emoji_override_key:
|
121
|
-
parts.append(
|
122
|
-
f" Default Emoji Key (Override): '{field_def.default_emoji_override_key}'"
|
123
|
-
)
|
124
|
-
return "\n".join(parts)
|
125
|
-
|
126
|
-
|
127
|
-
def show_emoji_matrix() -> None: # pragma: no cover
|
128
|
-
"""
|
129
|
-
Prints the active Foundation emoji logging contract to the console.
|
130
|
-
If emoji sets are active, it displays their configuration.
|
131
|
-
Otherwise, it displays the core DAS emoji mappings.
|
132
|
-
Activated by `PROVIDE_SHOW_EMOJI_MATRIX` environment variable.
|
133
|
-
"""
|
134
|
-
# Ensure the logger is configured to access the config
|
135
|
-
foundation_logger_base.logger._ensure_configured()
|
136
|
-
|
137
|
-
# Get the show_emoji_matrix flag from the logging config
|
138
|
-
telemetry_config = getattr(foundation_logger_base.logger, "_active_config", None)
|
139
|
-
if not telemetry_config or not telemetry_config.logging.show_emoji_matrix:
|
140
|
-
return
|
141
|
-
|
142
|
-
matrix_logger = foundation_logger_base.logger.get_logger(
|
143
|
-
"provide.foundation.emoji_matrix_display"
|
144
|
-
)
|
145
|
-
|
146
|
-
# Access the resolved emoji config from the global logger instance
|
147
|
-
# This assumes the logger has been configured (explicitly or lazily)
|
148
|
-
foundation_logger_base.logger._ensure_configured() # Ensure config is loaded
|
149
|
-
resolved_config_tuple = getattr(
|
150
|
-
foundation_logger_base.logger, "_active_resolved_emoji_config", None
|
151
|
-
)
|
152
|
-
|
153
|
-
lines: list[str] = []
|
154
|
-
|
155
|
-
if resolved_config_tuple:
|
156
|
-
resolved_field_definitions, resolved_emoji_sets_lookup = resolved_config_tuple
|
157
|
-
|
158
|
-
if resolved_field_definitions: # New emoji sets are active
|
159
|
-
lines.append("Foundation Telemetry: Active Emoji Set Contract")
|
160
|
-
lines.append("=" * 70)
|
161
|
-
lines.append(
|
162
|
-
"Active Field-to-Emoji Mappings (Order determines prefix sequence):"
|
163
|
-
)
|
164
|
-
if not resolved_field_definitions:
|
165
|
-
lines.append(" (No field-to-emoji mappings are active)")
|
166
|
-
for i, field_def in enumerate(resolved_field_definitions):
|
167
|
-
lines.append(f"\nField {i + 1}:")
|
168
|
-
lines.append(_format_field_definition_for_display(field_def))
|
169
|
-
|
170
|
-
lines.append("\n" + "=" * 70)
|
171
|
-
lines.append(
|
172
|
-
"Available Emoji Sets (Referenced by Field-to-Emoji Mappings):"
|
173
|
-
)
|
174
|
-
if not resolved_emoji_sets_lookup:
|
175
|
-
lines.append(" (No emoji sets are defined/active)")
|
176
|
-
for set_name in sorted(resolved_emoji_sets_lookup.keys()):
|
177
|
-
emoji_set = resolved_emoji_sets_lookup[set_name]
|
178
|
-
lines.extend(_format_emoji_set_for_display(emoji_set))
|
179
|
-
lines.append("") # Spacer
|
180
|
-
|
181
|
-
else: # No custom fields resolved, means core DAS is active
|
182
|
-
lines.append("Foundation Telemetry: Core DAS Emoji Contract")
|
183
|
-
lines.append("=" * 70)
|
184
|
-
lines.append("Primary Emojis ('domain' key):")
|
185
|
-
lines.extend(
|
186
|
-
f" {e} -> {k.capitalize()}" for k, e in PRIMARY_EMOJI.items()
|
187
|
-
)
|
188
|
-
lines.append("\nSecondary Emojis ('action' key):")
|
189
|
-
lines.extend(
|
190
|
-
f" {e} -> {k.capitalize()}" for k, e in SECONDARY_EMOJI.items()
|
191
|
-
)
|
192
|
-
lines.append("\nTertiary Emojis ('status' key):")
|
193
|
-
lines.extend(
|
194
|
-
f" {e} -> {k.capitalize()}" for k, e in TERTIARY_EMOJI.items()
|
195
|
-
)
|
196
|
-
else:
|
197
|
-
lines.append(
|
198
|
-
"Foundation Telemetry: Emoji configuration not yet resolved or available."
|
199
|
-
)
|
200
|
-
|
201
|
-
if lines:
|
202
|
-
matrix_logger.info("\n".join(lines))
|
203
|
-
else: # Should not happen if _ensure_configured works
|
204
|
-
matrix_logger.warning(
|
205
|
-
"Could not determine active emoji configuration to display."
|
206
|
-
)
|
207
|
-
|
208
|
-
|
209
|
-
# 💡🧱
|