sovereign 0.19.3__py3-none-any.whl → 1.0.0a4__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.

Potentially problematic release.


This version of sovereign might be problematic. Click here for more details.

Files changed (99) hide show
  1. sovereign/__init__.py +13 -81
  2. sovereign/app.py +62 -48
  3. sovereign/cache/__init__.py +245 -0
  4. sovereign/cache/backends/__init__.py +110 -0
  5. sovereign/cache/backends/s3.py +161 -0
  6. sovereign/cache/filesystem.py +74 -0
  7. sovereign/cache/types.py +17 -0
  8. sovereign/configuration.py +607 -0
  9. sovereign/constants.py +1 -0
  10. sovereign/context.py +270 -104
  11. sovereign/dynamic_config/__init__.py +112 -0
  12. sovereign/dynamic_config/deser.py +78 -0
  13. sovereign/dynamic_config/loaders.py +120 -0
  14. sovereign/error_info.py +2 -3
  15. sovereign/events.py +49 -0
  16. sovereign/logging/access_logger.py +85 -0
  17. sovereign/logging/application_logger.py +54 -0
  18. sovereign/logging/base_logger.py +41 -0
  19. sovereign/logging/bootstrapper.py +36 -0
  20. sovereign/logging/types.py +10 -0
  21. sovereign/middlewares.py +8 -7
  22. sovereign/modifiers/lib.py +2 -1
  23. sovereign/rendering.py +124 -0
  24. sovereign/rendering_common.py +91 -0
  25. sovereign/response_class.py +18 -0
  26. sovereign/server.py +112 -35
  27. sovereign/statistics.py +19 -21
  28. sovereign/templates/base.html +59 -46
  29. sovereign/templates/resources.html +203 -102
  30. sovereign/testing/loaders.py +9 -0
  31. sovereign/{modifiers/test.py → testing/modifiers.py} +0 -2
  32. sovereign/tracing.py +103 -0
  33. sovereign/types.py +304 -0
  34. sovereign/utils/auth.py +27 -13
  35. sovereign/utils/crypto/__init__.py +0 -0
  36. sovereign/utils/crypto/crypto.py +135 -0
  37. sovereign/utils/crypto/suites/__init__.py +21 -0
  38. sovereign/utils/crypto/suites/aes_gcm_cipher.py +42 -0
  39. sovereign/utils/crypto/suites/base_cipher.py +21 -0
  40. sovereign/utils/crypto/suites/disabled_cipher.py +25 -0
  41. sovereign/utils/crypto/suites/fernet_cipher.py +29 -0
  42. sovereign/utils/dictupdate.py +3 -2
  43. sovereign/utils/eds.py +40 -22
  44. sovereign/utils/entry_point_loader.py +2 -2
  45. sovereign/utils/mock.py +56 -17
  46. sovereign/utils/resources.py +17 -0
  47. sovereign/utils/templates.py +4 -2
  48. sovereign/utils/timer.py +5 -3
  49. sovereign/utils/version_info.py +8 -0
  50. sovereign/utils/weighted_clusters.py +2 -1
  51. sovereign/v2/__init__.py +0 -0
  52. sovereign/v2/data/data_store.py +621 -0
  53. sovereign/v2/data/render_discovery_response.py +24 -0
  54. sovereign/v2/data/repositories.py +90 -0
  55. sovereign/v2/data/utils.py +33 -0
  56. sovereign/v2/data/worker_queue.py +273 -0
  57. sovereign/v2/jobs/refresh_context.py +117 -0
  58. sovereign/v2/jobs/render_discovery_job.py +145 -0
  59. sovereign/v2/logging.py +81 -0
  60. sovereign/v2/types.py +41 -0
  61. sovereign/v2/web.py +101 -0
  62. sovereign/v2/worker.py +199 -0
  63. sovereign/views/__init__.py +7 -0
  64. sovereign/views/api.py +82 -0
  65. sovereign/views/crypto.py +46 -15
  66. sovereign/views/discovery.py +55 -119
  67. sovereign/views/healthchecks.py +107 -20
  68. sovereign/views/interface.py +171 -111
  69. sovereign/worker.py +193 -0
  70. {sovereign-0.19.3.dist-info → sovereign-1.0.0a4.dist-info}/METADATA +80 -76
  71. sovereign-1.0.0a4.dist-info/RECORD +85 -0
  72. {sovereign-0.19.3.dist-info → sovereign-1.0.0a4.dist-info}/WHEEL +1 -1
  73. sovereign-1.0.0a4.dist-info/entry_points.txt +46 -0
  74. sovereign_files/__init__.py +0 -0
  75. sovereign_files/static/darkmode.js +51 -0
  76. sovereign_files/static/node_expression.js +42 -0
  77. sovereign_files/static/panel.js +76 -0
  78. sovereign_files/static/resources.css +246 -0
  79. sovereign_files/static/resources.js +642 -0
  80. sovereign_files/static/sass/style.scss +33 -0
  81. sovereign_files/static/style.css +16143 -0
  82. sovereign_files/static/style.css.map +1 -0
  83. sovereign/config_loader.py +0 -225
  84. sovereign/discovery.py +0 -175
  85. sovereign/logs.py +0 -131
  86. sovereign/schemas.py +0 -780
  87. sovereign/sources/__init__.py +0 -3
  88. sovereign/sources/file.py +0 -21
  89. sovereign/sources/inline.py +0 -38
  90. sovereign/sources/lib.py +0 -40
  91. sovereign/sources/poller.py +0 -294
  92. sovereign/static/sass/style.scss +0 -27
  93. sovereign/static/style.css +0 -13553
  94. sovereign/templates/ul_filter.html +0 -22
  95. sovereign/utils/crypto.py +0 -103
  96. sovereign/views/admin.py +0 -120
  97. sovereign-0.19.3.dist-info/LICENSE.txt +0 -13
  98. sovereign-0.19.3.dist-info/RECORD +0 -47
  99. sovereign-0.19.3.dist-info/entry_points.txt +0 -10
@@ -0,0 +1,246 @@
1
+ /* Resources page styles */
2
+ #filterInput {
3
+ font-family: monospace;
4
+ }
5
+
6
+ .filtered {
7
+ display: none;
8
+ }
9
+
10
+ .tooltip {
11
+ position: relative;
12
+ display: inline-block;
13
+ cursor: help;
14
+ }
15
+
16
+ .tooltip .tooltip-text {
17
+ visibility: hidden;
18
+ width: 220px;
19
+ background-color: #363636;
20
+ color: #fff;
21
+ text-align: left;
22
+ padding: 0.5rem;
23
+ border-radius: 6px;
24
+ position: absolute;
25
+ z-index: 1;
26
+ top: 125%;
27
+ left: 50%;
28
+ margin-left: -110px;
29
+ opacity: 0;
30
+ transition: opacity 0.3s;
31
+ font-size: 0.875rem;
32
+ }
33
+
34
+ .tooltip:hover .tooltip-text {
35
+ visibility: visible;
36
+ opacity: 1;
37
+ }
38
+
39
+ /* Side panel styles - using Bulma-compatible approach */
40
+ .side-panel {
41
+ position: fixed;
42
+ top: 0;
43
+ right: -100%;
44
+ width: 95%;
45
+ max-width: 1200px;
46
+ min-width: 400px;
47
+ height: 100vh;
48
+ z-index: 1000;
49
+ transition: right 0.3s ease-in-out;
50
+ overflow-y: auto;
51
+ }
52
+
53
+ .side-panel.is-active {
54
+ right: 0;
55
+ }
56
+
57
+ /* Responsive side panel sizing */
58
+ @media (min-width: 768px) {
59
+ .side-panel { width: 75%; right: -75%; }
60
+ }
61
+
62
+ @media (min-width: 1024px) {
63
+ .side-panel { width: 65%; right: -65%; }
64
+ }
65
+
66
+ @media (min-width: 1400px) {
67
+ .side-panel { width: 55%; right: -55%; }
68
+ }
69
+
70
+ @media (min-width: 1600px) {
71
+ .side-panel { width: 50%; right: -50%; }
72
+ }
73
+
74
+ @media (max-width: 480px) {
75
+ .side-panel { width: 95%; min-width: 300px; right: -95%; }
76
+ }
77
+
78
+ .json-container {
79
+ position: relative;
80
+ }
81
+
82
+ .json-header {
83
+ padding: 1rem;
84
+ border-bottom: 1px solid #555;
85
+ background-color: #2d2d2d;
86
+ display: flex;
87
+ justify-content: space-between;
88
+ align-items: center;
89
+ }
90
+
91
+ .json-content {
92
+ background-color: #1e1e1e;
93
+ border: none;
94
+ border-radius: 0;
95
+ padding: 1rem;
96
+ font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Source Code Pro', 'Menlo', 'Consolas', monospace;
97
+ font-size: 0.875rem;
98
+ line-height: 1.5;
99
+ white-space: pre-wrap;
100
+ word-wrap: break-word;
101
+ max-height: calc(100vh - 250px);
102
+ overflow-y: auto;
103
+ color: #d4d4d4;
104
+ margin: 0;
105
+ }
106
+
107
+ /* JSON Syntax Highlighting - VS Code Dark+ theme colors */
108
+ .json-key {
109
+ color: #9cdcfe;
110
+ font-weight: 400;
111
+ }
112
+
113
+ .json-string {
114
+ color: #ce9178;
115
+ }
116
+
117
+ .json-number {
118
+ color: #b5cea8;
119
+ }
120
+
121
+ .json-boolean {
122
+ color: #569cd6;
123
+ font-weight: 500;
124
+ }
125
+
126
+ .json-null {
127
+ color: #569cd6;
128
+ font-weight: 500;
129
+ font-style: italic;
130
+ }
131
+
132
+ .json-punctuation {
133
+ color: #d4d4d4;
134
+ }
135
+
136
+ /* Improve readability */
137
+ .json-content::-webkit-scrollbar {
138
+ width: 8px;
139
+ }
140
+
141
+ .json-content::-webkit-scrollbar-track {
142
+ background: #2d2d2d;
143
+ }
144
+
145
+ .json-content::-webkit-scrollbar-thumb {
146
+ background: #555;
147
+ border-radius: 4px;
148
+ }
149
+
150
+ .json-content::-webkit-scrollbar-thumb:hover {
151
+ background: #666;
152
+ }
153
+
154
+ /* Collapsible JSON */
155
+ .json-toggle {
156
+ cursor: pointer;
157
+ user-select: none;
158
+ color: #808080;
159
+ margin-right: 0.25rem;
160
+ font-family: monospace;
161
+ font-size: 0.875rem;
162
+ }
163
+
164
+ .json-toggle:hover {
165
+ color: #fff;
166
+ }
167
+
168
+ .json-collapsible {
169
+ margin-left: 1rem;
170
+ }
171
+
172
+ .json-collapsed {
173
+ display: none;
174
+ }
175
+
176
+ .loading-spinner {
177
+ display: inline-block;
178
+ width: 20px;
179
+ height: 20px;
180
+ border: 3px solid #f3f3f3;
181
+ border-top: 3px solid #433fca;
182
+ border-radius: 50%;
183
+ animation: spin 1s linear infinite;
184
+ }
185
+
186
+ @keyframes spin {
187
+ 0% { transform: rotate(0deg); }
188
+ 100% { transform: rotate(360deg); }
189
+ }
190
+
191
+ /* Prevent body scroll when side panel is open */
192
+ body.side-panel-open {
193
+ overflow: hidden;
194
+ }
195
+
196
+ /* Backdrop overlay for side panel */
197
+ .side-panel-backdrop {
198
+ position: fixed;
199
+ top: 0;
200
+ left: 0;
201
+ width: 100%;
202
+ height: 100%;
203
+ background-color: rgba(0, 0, 0, 0.5);
204
+ z-index: 999;
205
+ opacity: 0;
206
+ visibility: hidden;
207
+ transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
208
+ }
209
+
210
+ .side-panel-backdrop.is-active {
211
+ opacity: 1;
212
+ visibility: visible;
213
+ }
214
+
215
+ /* Show backdrop on smaller screens */
216
+ @media (max-width: 1024px) {
217
+ .side-panel-backdrop.is-active {
218
+ opacity: 1;
219
+ visibility: visible;
220
+ }
221
+ }
222
+
223
+ /* Minimal custom styles - using Bulma classes for most styling */
224
+ .json-chunk-controls {
225
+ background-color: #2d2d2d;
226
+ border-bottom: 1px solid #555;
227
+ }
228
+
229
+ /* Preferences details styling */
230
+ details summary {
231
+ list-style: none;
232
+ }
233
+
234
+ details summary::-webkit-details-marker {
235
+ display: none;
236
+ }
237
+
238
+ details summary::before {
239
+ content: "▶";
240
+ margin-right: 0.5rem;
241
+ transition: transform 0.2s;
242
+ }
243
+
244
+ details[open] summary::before {
245
+ transform: rotate(90deg);
246
+ }