kash-shell 0.3.20__py3-none-any.whl → 0.3.22__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.
- kash/actions/core/markdownify_html.py +11 -0
- kash/actions/core/tabbed_webpage_generate.py +2 -2
- kash/commands/help/assistant_commands.py +2 -4
- kash/commands/help/logo.py +12 -17
- kash/commands/help/welcome.py +5 -4
- kash/config/colors.py +8 -6
- kash/config/text_styles.py +2 -0
- kash/docs/markdown/topics/b1_kash_overview.md +34 -45
- kash/docs/markdown/warning.md +3 -3
- kash/docs/markdown/welcome.md +2 -1
- kash/exec/action_decorators.py +20 -5
- kash/exec/fetch_url_items.py +6 -4
- kash/exec/llm_transforms.py +1 -1
- kash/exec/preconditions.py +7 -2
- kash/exec/shell_callable_action.py +1 -1
- kash/llm_utils/llm_completion.py +1 -1
- kash/model/actions_model.py +6 -0
- kash/model/items_model.py +14 -11
- kash/shell/output/shell_output.py +20 -1
- kash/utils/api_utils/api_retries.py +305 -0
- kash/utils/api_utils/cache_requests_limited.py +84 -0
- kash/utils/api_utils/gather_limited.py +987 -0
- kash/utils/api_utils/progress_protocol.py +299 -0
- kash/utils/common/function_inspect.py +66 -1
- kash/utils/common/testing.py +10 -7
- kash/utils/rich_custom/multitask_status.py +631 -0
- kash/utils/text_handling/escape_html_tags.py +16 -11
- kash/utils/text_handling/markdown_render.py +1 -0
- kash/utils/text_handling/markdown_utils.py +158 -1
- kash/web_gen/tabbed_webpage.py +2 -2
- kash/web_gen/templates/base_styles.css.jinja +26 -20
- kash/web_gen/templates/components/toc_styles.css.jinja +1 -1
- kash/web_gen/templates/components/tooltip_scripts.js.jinja +171 -19
- kash/web_gen/templates/components/tooltip_styles.css.jinja +23 -8
- kash/xonsh_custom/load_into_xonsh.py +0 -3
- {kash_shell-0.3.20.dist-info → kash_shell-0.3.22.dist-info}/METADATA +3 -1
- {kash_shell-0.3.20.dist-info → kash_shell-0.3.22.dist-info}/RECORD +40 -35
- {kash_shell-0.3.20.dist-info → kash_shell-0.3.22.dist-info}/WHEEL +0 -0
- {kash_shell-0.3.20.dist-info → kash_shell-0.3.22.dist-info}/entry_points.txt +0 -0
- {kash_shell-0.3.20.dist-info → kash_shell-0.3.22.dist-info}/licenses/LICENSE +0 -0
|
@@ -7,8 +7,8 @@ const TOOLTIP_CONFIG = {
|
|
|
7
7
|
// Timing delays (in milliseconds)
|
|
8
8
|
delays: {
|
|
9
9
|
show: 500, // Delay before showing tooltip
|
|
10
|
-
hide:
|
|
11
|
-
hideWideRight:
|
|
10
|
+
hide: 2500, // Default delay before hiding tooltip
|
|
11
|
+
hideWideRight: 4000, // Delay for wide-right tooltips (farther away)
|
|
12
12
|
hideMovingToward: 500, // Shorter delay when mouse moving toward tooltip
|
|
13
13
|
hideLinkClick: 300, // Delay after clicking a link in tooltip
|
|
14
14
|
},
|
|
@@ -79,6 +79,14 @@ const TooltipUtils = {
|
|
|
79
79
|
return this.extractContent(element, true);
|
|
80
80
|
},
|
|
81
81
|
|
|
82
|
+
// Add footnote navigation button to tooltip content
|
|
83
|
+
addFootnoteNavigationButton(content, footnoteId) {
|
|
84
|
+
const navButton = `<span class="footnote-nav-container">
|
|
85
|
+
<a href="#${footnoteId}" class="footnote" data-footnote-id="${footnoteId}" title="Go to footnote"> ↓ </a>
|
|
86
|
+
</span>`;
|
|
87
|
+
return content + navButton;
|
|
88
|
+
},
|
|
89
|
+
|
|
82
90
|
// Determine optimal tooltip position based on element location and screen size
|
|
83
91
|
getOptimalPosition(element) {
|
|
84
92
|
const viewportWidth = window.innerWidth;
|
|
@@ -106,6 +114,69 @@ const TooltipUtils = {
|
|
|
106
114
|
}
|
|
107
115
|
};
|
|
108
116
|
|
|
117
|
+
/* -----------------------------------------------------------------------------
|
|
118
|
+
Mobile tap-outside-to-close functionality
|
|
119
|
+
----------------------------------------------------------------------------- */
|
|
120
|
+
|
|
121
|
+
// Mobile interaction manager
|
|
122
|
+
const MobileInteractionManager = {
|
|
123
|
+
isActive: false,
|
|
124
|
+
|
|
125
|
+
// Initialize mobile interaction handling
|
|
126
|
+
init() {
|
|
127
|
+
if (this.isActive) return;
|
|
128
|
+
|
|
129
|
+
// Only activate on mobile screens
|
|
130
|
+
if (window.innerWidth <= TOOLTIP_CONFIG.breakpoints.mobile) {
|
|
131
|
+
this.activate();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Listen for resize events to activate/deactivate
|
|
135
|
+
window.addEventListener('resize', () => {
|
|
136
|
+
if (window.innerWidth <= TOOLTIP_CONFIG.breakpoints.mobile) {
|
|
137
|
+
this.activate();
|
|
138
|
+
} else {
|
|
139
|
+
this.deactivate();
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// Activate mobile interaction handling
|
|
145
|
+
activate() {
|
|
146
|
+
if (this.isActive) return;
|
|
147
|
+
this.isActive = true;
|
|
148
|
+
document.addEventListener('touchstart', this.handleTouchStart.bind(this), { passive: true });
|
|
149
|
+
console.debug('Mobile interaction manager activated');
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
// Deactivate mobile interaction handling
|
|
153
|
+
deactivate() {
|
|
154
|
+
if (!this.isActive) return;
|
|
155
|
+
this.isActive = false;
|
|
156
|
+
document.removeEventListener('touchstart', this.handleTouchStart.bind(this));
|
|
157
|
+
console.debug('Mobile interaction manager deactivated');
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
// Handle touch start events
|
|
161
|
+
handleTouchStart(event) {
|
|
162
|
+
// Check if any tooltip is visible
|
|
163
|
+
const hasVisibleTooltips = Array.from(TooltipManager.activeTooltips.values())
|
|
164
|
+
.some(state => state.isVisible);
|
|
165
|
+
|
|
166
|
+
if (!hasVisibleTooltips) return;
|
|
167
|
+
|
|
168
|
+
// Check if touch is outside all tooltips
|
|
169
|
+
const touchedElement = event.target;
|
|
170
|
+
const isInsideTooltip = touchedElement.closest('.tooltip-element');
|
|
171
|
+
const isTooltipTrigger = touchedElement.closest('[data-tooltip-trigger]');
|
|
172
|
+
|
|
173
|
+
if (!isInsideTooltip && !isTooltipTrigger) {
|
|
174
|
+
// Close all tooltips
|
|
175
|
+
TooltipManager.closeAllTooltips();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
|
|
109
180
|
/* -----------------------------------------------------------------------------
|
|
110
181
|
Generic tooltip creation and management functions
|
|
111
182
|
----------------------------------------------------------------------------- */
|
|
@@ -115,7 +186,7 @@ const TooltipManager = {
|
|
|
115
186
|
activeTooltips: new Map(), // Track active tooltip states
|
|
116
187
|
|
|
117
188
|
// Add tooltip to any element with HTML content
|
|
118
|
-
addTooltip(element, htmlContent, position = 'auto') {
|
|
189
|
+
addTooltip(element, htmlContent, position = 'auto', options = {}) {
|
|
119
190
|
if (!element || !htmlContent) return;
|
|
120
191
|
|
|
121
192
|
// Check if tooltip already exists for this element
|
|
@@ -128,7 +199,7 @@ const TooltipManager = {
|
|
|
128
199
|
TooltipUtils.getOptimalPosition(element) : position;
|
|
129
200
|
|
|
130
201
|
// Create real DOM tooltip element
|
|
131
|
-
const tooltipElement = this.createTooltipElement(htmlContent, actualPosition);
|
|
202
|
+
const tooltipElement = this.createTooltipElement(htmlContent, actualPosition, options);
|
|
132
203
|
|
|
133
204
|
// Mark the trigger element
|
|
134
205
|
element.setAttribute('data-tooltip-trigger', 'true');
|
|
@@ -147,29 +218,62 @@ const TooltipManager = {
|
|
|
147
218
|
}
|
|
148
219
|
|
|
149
220
|
// Set up enhanced hover behavior
|
|
150
|
-
this.setupAdvancedHover(element, tooltipElement, actualPosition);
|
|
221
|
+
this.setupAdvancedHover(element, tooltipElement, actualPosition, options);
|
|
151
222
|
},
|
|
152
223
|
|
|
153
224
|
// Create a real DOM tooltip element
|
|
154
|
-
createTooltipElement(htmlContent, position) {
|
|
225
|
+
createTooltipElement(htmlContent, position, options = {}) {
|
|
155
226
|
const tooltip = document.createElement('div');
|
|
156
227
|
tooltip.className = `tooltip-element tooltip-${position}`;
|
|
157
228
|
|
|
158
229
|
// Add footnote-specific class if content contains footnote or links
|
|
159
|
-
if (htmlContent.includes('footnote') || htmlContent.includes('<a')) {
|
|
230
|
+
if (htmlContent.includes('footnote') || htmlContent.includes('<a') || options.isFootnote) {
|
|
160
231
|
tooltip.classList.add('footnote-element');
|
|
161
232
|
}
|
|
162
233
|
|
|
163
234
|
tooltip.innerHTML = htmlContent;
|
|
235
|
+
|
|
236
|
+
// Set up footnote navigation button if present
|
|
237
|
+
if (options.isFootnote) {
|
|
238
|
+
this.setupFootnoteNavigation(tooltip, options.footnoteId);
|
|
239
|
+
}
|
|
240
|
+
|
|
164
241
|
return tooltip;
|
|
165
242
|
},
|
|
166
243
|
|
|
244
|
+
// Set up footnote navigation link functionality
|
|
245
|
+
setupFootnoteNavigation(tooltipElement, footnoteId) {
|
|
246
|
+
const navLink = tooltipElement.querySelector('.footnote-nav-container .footnote');
|
|
247
|
+
if (navLink) {
|
|
248
|
+
navLink.addEventListener('click', (e) => {
|
|
249
|
+
e.preventDefault();
|
|
250
|
+
e.stopPropagation();
|
|
251
|
+
|
|
252
|
+
// Navigate to the footnote
|
|
253
|
+
const footnoteElement = document.getElementById(footnoteId);
|
|
254
|
+
if (footnoteElement) {
|
|
255
|
+
footnoteElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
256
|
+
|
|
257
|
+
// Close tooltip after navigation
|
|
258
|
+
setTimeout(() => {
|
|
259
|
+
const tooltipState = Array.from(this.activeTooltips.values())
|
|
260
|
+
.find(state => state.tooltipElement === tooltipElement);
|
|
261
|
+
if (tooltipState) {
|
|
262
|
+
this.hideTooltip(tooltipState);
|
|
263
|
+
}
|
|
264
|
+
}, TOOLTIP_CONFIG.delays.hideLinkClick);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
|
|
167
270
|
// Set up advanced hover behavior with delays and mouse tracking
|
|
168
|
-
setupAdvancedHover(triggerElement, tooltipElement, position) {
|
|
271
|
+
setupAdvancedHover(triggerElement, tooltipElement, position, options = {}) {
|
|
169
272
|
const tooltipState = {
|
|
170
273
|
triggerElement,
|
|
171
274
|
tooltipElement,
|
|
172
275
|
position,
|
|
276
|
+
options,
|
|
173
277
|
showTimeout: null,
|
|
174
278
|
hideTimeout: null,
|
|
175
279
|
isVisible: false
|
|
@@ -181,6 +285,7 @@ const TooltipManager = {
|
|
|
181
285
|
const handlers = {
|
|
182
286
|
triggerEnter: (e) => this.handleTriggerEnter(tooltipState, e),
|
|
183
287
|
triggerLeave: (e) => this.handleTriggerLeave(tooltipState, e),
|
|
288
|
+
triggerTouch: (e) => this.handleTriggerTouch(tooltipState, e),
|
|
184
289
|
tooltipEnter: () => this.handleTooltipEnter(tooltipState),
|
|
185
290
|
tooltipLeave: () => this.handleTooltipLeave(tooltipState),
|
|
186
291
|
tooltipClick: (e) => this.handleTooltipClick(tooltipState, e)
|
|
@@ -189,6 +294,7 @@ const TooltipManager = {
|
|
|
189
294
|
// Add event listeners
|
|
190
295
|
triggerElement.addEventListener('mouseenter', handlers.triggerEnter);
|
|
191
296
|
triggerElement.addEventListener('mouseleave', handlers.triggerLeave);
|
|
297
|
+
triggerElement.addEventListener('touchstart', handlers.triggerTouch, { passive: false });
|
|
192
298
|
tooltipElement.addEventListener('mouseenter', handlers.tooltipEnter);
|
|
193
299
|
tooltipElement.addEventListener('mouseleave', handlers.tooltipLeave);
|
|
194
300
|
tooltipElement.addEventListener('click', handlers.tooltipClick);
|
|
@@ -197,6 +303,7 @@ const TooltipManager = {
|
|
|
197
303
|
tooltipState.cleanupListeners = () => {
|
|
198
304
|
triggerElement.removeEventListener('mouseenter', handlers.triggerEnter);
|
|
199
305
|
triggerElement.removeEventListener('mouseleave', handlers.triggerLeave);
|
|
306
|
+
triggerElement.removeEventListener('touchstart', handlers.triggerTouch);
|
|
200
307
|
tooltipElement.removeEventListener('mouseenter', handlers.tooltipEnter);
|
|
201
308
|
tooltipElement.removeEventListener('mouseleave', handlers.tooltipLeave);
|
|
202
309
|
tooltipElement.removeEventListener('click', handlers.tooltipClick);
|
|
@@ -228,6 +335,26 @@ const TooltipManager = {
|
|
|
228
335
|
}
|
|
229
336
|
},
|
|
230
337
|
|
|
338
|
+
// Handle touch events on trigger elements (mobile)
|
|
339
|
+
handleTriggerTouch(tooltipState, event) {
|
|
340
|
+
// Prevent default to avoid triggering mouse events and navigation
|
|
341
|
+
event.preventDefault();
|
|
342
|
+
event.stopPropagation();
|
|
343
|
+
|
|
344
|
+
// If tooltip is already visible, hide it
|
|
345
|
+
if (tooltipState.isVisible) {
|
|
346
|
+
this.hideTooltip(tooltipState);
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Cancel any pending timers
|
|
351
|
+
this.clearTimeout(tooltipState, 'hideTimeout');
|
|
352
|
+
this.clearTimeout(tooltipState, 'showTimeout');
|
|
353
|
+
|
|
354
|
+
// Show tooltip immediately on touch (no delay like hover)
|
|
355
|
+
this.showTooltip(tooltipState, event);
|
|
356
|
+
},
|
|
357
|
+
|
|
231
358
|
// Handle tooltip mouse enter
|
|
232
359
|
handleTooltipEnter(tooltipState) {
|
|
233
360
|
this.clearTimeout(tooltipState, 'hideTimeout');
|
|
@@ -242,14 +369,17 @@ const TooltipManager = {
|
|
|
242
369
|
|
|
243
370
|
// Handle clicks within tooltip
|
|
244
371
|
handleTooltipClick(tooltipState, event) {
|
|
245
|
-
// Allow clicks on links within tooltips
|
|
246
|
-
if (event.target.tagName === 'A'
|
|
372
|
+
// Allow clicks on all links and buttons within tooltips
|
|
373
|
+
if (event.target.tagName === 'A' || event.target.tagName === 'BUTTON' ||
|
|
374
|
+
event.target.closest('a') || event.target.closest('button')) {
|
|
247
375
|
event.stopPropagation();
|
|
248
|
-
// Keep tooltip open briefly after clicking a link
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
376
|
+
// Keep tooltip open briefly after clicking a link (except footnote nav link)
|
|
377
|
+
if (!event.target.closest('.footnote-nav-container')) {
|
|
378
|
+
this.clearTimeout(tooltipState, 'hideTimeout');
|
|
379
|
+
tooltipState.hideTimeout = setTimeout(() => {
|
|
380
|
+
this.hideTooltip(tooltipState);
|
|
381
|
+
}, TOOLTIP_CONFIG.delays.hideLinkClick);
|
|
382
|
+
}
|
|
253
383
|
}
|
|
254
384
|
},
|
|
255
385
|
|
|
@@ -632,8 +762,9 @@ const TooltipManager = {
|
|
|
632
762
|
|
|
633
763
|
if (shouldBeWideRight !== isWideRight) {
|
|
634
764
|
const htmlContent = tooltipState.tooltipElement.innerHTML;
|
|
765
|
+
const options = tooltipState.options;
|
|
635
766
|
this.removeTooltip(element);
|
|
636
|
-
this.addTooltip(element, htmlContent, 'auto');
|
|
767
|
+
this.addTooltip(element, htmlContent, 'auto', options);
|
|
637
768
|
}
|
|
638
769
|
});
|
|
639
770
|
}
|
|
@@ -667,6 +798,18 @@ function initFootnoteTooltips() {
|
|
|
667
798
|
return;
|
|
668
799
|
}
|
|
669
800
|
|
|
801
|
+
// Prevent default action immediately for all footnote reference links
|
|
802
|
+
refLink.addEventListener('click', (e) => {
|
|
803
|
+
e.preventDefault();
|
|
804
|
+
return false;
|
|
805
|
+
});
|
|
806
|
+
|
|
807
|
+
// Also prevent default on touch events for mobile
|
|
808
|
+
refLink.addEventListener('touchend', (e) => {
|
|
809
|
+
e.preventDefault();
|
|
810
|
+
return false;
|
|
811
|
+
});
|
|
812
|
+
|
|
670
813
|
// Extract and validate content
|
|
671
814
|
const footnoteHtml = TooltipUtils.extractHtmlContent(footnoteElement);
|
|
672
815
|
const footnoteText = TooltipUtils.extractTextContent(footnoteElement);
|
|
@@ -677,10 +820,16 @@ function initFootnoteTooltips() {
|
|
|
677
820
|
}
|
|
678
821
|
|
|
679
822
|
// Truncate if needed
|
|
680
|
-
|
|
823
|
+
let displayContent = truncateFootnoteContent(footnoteHtml, footnoteText);
|
|
681
824
|
|
|
682
|
-
// Add
|
|
683
|
-
|
|
825
|
+
// Add footnote navigation button
|
|
826
|
+
displayContent = TooltipUtils.addFootnoteNavigationButton(displayContent, footnoteId);
|
|
827
|
+
|
|
828
|
+
// Add tooltip with footnote options
|
|
829
|
+
TooltipManager.addTooltip(refLink, displayContent, 'auto', {
|
|
830
|
+
isFootnote: true,
|
|
831
|
+
footnoteId: footnoteId
|
|
832
|
+
});
|
|
684
833
|
tooltipsAdded++;
|
|
685
834
|
|
|
686
835
|
console.debug(`Added tooltip for footnote ${footnoteId}: "${footnoteText.substring(0, 50)}..."`);
|
|
@@ -715,6 +864,9 @@ function initTooltips() {
|
|
|
715
864
|
console.debug('Starting tooltip initialization...');
|
|
716
865
|
|
|
717
866
|
try {
|
|
867
|
+
// Initialize mobile interaction manager
|
|
868
|
+
MobileInteractionManager.init();
|
|
869
|
+
|
|
718
870
|
const footnoteCount = initFootnoteTooltips();
|
|
719
871
|
console.debug(`Tooltip initialization complete. Total footnote tooltips: ${footnoteCount}`);
|
|
720
872
|
} catch (error) {
|
|
@@ -62,10 +62,10 @@
|
|
|
62
62
|
z-index: 1000;
|
|
63
63
|
|
|
64
64
|
/* Tooltip styling - matching TOC active item */
|
|
65
|
-
background: var(--color-bg-
|
|
65
|
+
background: var(--color-bg-meta-solid);
|
|
66
66
|
border: 1px solid var(--color-border-hint);
|
|
67
67
|
border-left: 2px solid var(--color-primary);
|
|
68
|
-
color: var(--color-
|
|
68
|
+
color: var(--color-text);
|
|
69
69
|
font-family: var(--font-sans);
|
|
70
70
|
font-size: var(--font-size-small);
|
|
71
71
|
line-height: 1.4;
|
|
@@ -104,11 +104,6 @@
|
|
|
104
104
|
pointer-events: auto;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
/* Tooltip hover state */
|
|
108
|
-
.tooltip-element:hover {
|
|
109
|
-
background: var(--color-hover-bg);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
107
|
/* -----------------------------------------------------------------------------
|
|
113
108
|
General Tooltip Positioning - Using margin variables
|
|
114
109
|
----------------------------------------------------------------------------- */
|
|
@@ -323,7 +318,7 @@
|
|
|
323
318
|
|
|
324
319
|
/* Footnote reference styling */
|
|
325
320
|
.footnote-ref a[data-tooltip-trigger] {
|
|
326
|
-
transition: color 0.
|
|
321
|
+
transition: color 0.2s ease-in-out;
|
|
327
322
|
}
|
|
328
323
|
|
|
329
324
|
.footnote-ref a[data-tooltip-trigger]:hover {
|
|
@@ -367,6 +362,16 @@
|
|
|
367
362
|
display: none;
|
|
368
363
|
}
|
|
369
364
|
|
|
365
|
+
/* But show our navigation footnote link */
|
|
366
|
+
.footnote-element .footnote-nav-container .footnote {
|
|
367
|
+
display: inline;
|
|
368
|
+
text-decoration: none !important;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.footnote-element .footnote-nav-container .footnote:hover {
|
|
372
|
+
text-decoration: none !important;
|
|
373
|
+
}
|
|
374
|
+
|
|
370
375
|
/* Text breaking rules for all tooltips */
|
|
371
376
|
.tooltip-element .force-break,
|
|
372
377
|
.tooltip-element code,
|
|
@@ -479,4 +484,14 @@
|
|
|
479
484
|
.tooltip-element:not(.tooltip-mobile-bottom) {
|
|
480
485
|
max-width: min(var(--tooltip-max-width), calc(100vw - 2rem)) !important;
|
|
481
486
|
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/* -----------------------------------------------------------------------------
|
|
490
|
+
Footnote Navigation Button Styles
|
|
491
|
+
----------------------------------------------------------------------------- */
|
|
492
|
+
|
|
493
|
+
/* Container for footnote navigation link */
|
|
494
|
+
.footnote-nav-container {
|
|
495
|
+
float: right;
|
|
496
|
+
margin-left: 0.5rem;
|
|
482
497
|
}
|
|
@@ -15,7 +15,6 @@ from kash.config.settings import RECOMMENDED_PKGS, check_kerm_code_support
|
|
|
15
15
|
from kash.config.text_styles import LOGO_NAME, STYLE_HINT
|
|
16
16
|
from kash.mcp.mcp_server_commands import start_mcp_server
|
|
17
17
|
from kash.shell.output.shell_output import PrintHooks, cprint
|
|
18
|
-
from kash.shell.version import get_version_tag
|
|
19
18
|
from kash.workspaces import current_ws
|
|
20
19
|
from kash.xonsh_custom.customize_prompt import get_prompt_info, kash_xonsh_prompt
|
|
21
20
|
from kash.xonsh_custom.shell_load_commands import (
|
|
@@ -109,5 +108,3 @@ def load_into_xonsh():
|
|
|
109
108
|
|
|
110
109
|
else:
|
|
111
110
|
reload_shell_commands_and_actions()
|
|
112
|
-
|
|
113
|
-
log.info("kash %s loaded", get_version_tag())
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kash-shell
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.22
|
|
4
4
|
Summary: The knowledge agent shell (core)
|
|
5
5
|
Project-URL: Repository, https://github.com/jlevy/kash-shell
|
|
6
6
|
Author-email: Joshua Levy <joshua@cal.berkeley.edu>
|
|
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
17
|
Classifier: Typing :: Typed
|
|
18
18
|
Requires-Python: <4.0,>=3.11
|
|
19
|
+
Requires-Dist: aiolimiter>=1.2.1
|
|
19
20
|
Requires-Dist: anyio>=4.8.0
|
|
20
21
|
Requires-Dist: audioop-lts>=0.2.1; python_version >= '3.13'
|
|
21
22
|
Requires-Dist: cachetools>=5.5.2
|
|
@@ -50,6 +51,7 @@ Requires-Dist: pydantic>=2.10.6
|
|
|
50
51
|
Requires-Dist: pydub>=0.25.1
|
|
51
52
|
Requires-Dist: pygments>=2.19.1
|
|
52
53
|
Requires-Dist: pyperclip>=1.9.0
|
|
54
|
+
Requires-Dist: pyrate-limiter>=3.7.0
|
|
53
55
|
Requires-Dist: python-dotenv>=1.0.1
|
|
54
56
|
Requires-Dist: python-magic-bin>=0.4.14; platform_system == 'Windows'
|
|
55
57
|
Requires-Dist: python-magic>=0.4.27; platform_system == 'Linux' or platform_system == 'Darwin'
|
|
@@ -4,7 +4,7 @@ kash/actions/__init__.py,sha256=a4pQw8O-Y3q5N4Qg2jUV0xEZLX6d164FQhZ6zizY9fE,1357
|
|
|
4
4
|
kash/actions/core/assistant_chat.py,sha256=28G20cSr7Z94cltouTPve5TXY3km0lACrRvpLE27fK8,1837
|
|
5
5
|
kash/actions/core/chat.py,sha256=yCannBFa0cSpR_in-XSSuMm1x2ZZQUCKmlqzhsUfpOo,2696
|
|
6
6
|
kash/actions/core/format_markdown_template.py,sha256=ZJbtyTSypPo2ewLiGRSyIpVf711vQMhI_-Ng-FgCs80,2991
|
|
7
|
-
kash/actions/core/markdownify_html.py,sha256=
|
|
7
|
+
kash/actions/core/markdownify_html.py,sha256=luMXwwaY6E8oidgdrwV6KSgzdG0iX2JKS5aTNYDdZpA,1810
|
|
8
8
|
kash/actions/core/minify_html.py,sha256=99r3SjpI2NQP7e5MnMixAiT5lxPx7t2nyJvJi6Yps6w,1365
|
|
9
9
|
kash/actions/core/readability.py,sha256=ljdB2rOpzfKU2FpEJ2UELIzcdOAWvdUjFsxoHRTE3xo,989
|
|
10
10
|
kash/actions/core/render_as_html.py,sha256=CIPGKCjUEVNsnXmpqHCUnjGwTfEfOyCXxlYFUN8mahY,1870
|
|
@@ -12,7 +12,7 @@ kash/actions/core/show_webpage.py,sha256=Ggba9jkx9U-FZOcuL0lkS-SwtPNUyxVsGdeQrqw
|
|
|
12
12
|
kash/actions/core/strip_html.py,sha256=FDLN_4CKB11q5cU4NixTf7PGrAq92AjQNbKAdvQDwCY,849
|
|
13
13
|
kash/actions/core/summarize_as_bullets.py,sha256=Zwr8lNzL77pwpnW_289LQjNBijNDpTPANfFdOJA-PZ4,2070
|
|
14
14
|
kash/actions/core/tabbed_webpage_config.py,sha256=rIbzEhBTmnkbSiRZC-Rj46T1J6c0jOztiKE9Usa4nsc,980
|
|
15
|
-
kash/actions/core/tabbed_webpage_generate.py,sha256=
|
|
15
|
+
kash/actions/core/tabbed_webpage_generate.py,sha256=935HkDSuP4eZ1e0xf-LhjPOdicU3wI5Kuh79r61QCl8,988
|
|
16
16
|
kash/actions/meta/write_instructions.py,sha256=zeKKX-Yi8jSyjvZ4Ii_4MNBRtM2MENuHyrD0Vxsaos8,1277
|
|
17
17
|
kash/actions/meta/write_new_action.py,sha256=w7SJZ2FjzRbKwqKX9PeozUrh8cNJAumX7F80wW7dQts,6356
|
|
18
18
|
kash/commands/__init__.py,sha256=MhdPSluWGE3XVQ7LSv2L8_aAxaey8CLjQBjGC9B4nRM,191
|
|
@@ -29,16 +29,16 @@ kash/commands/base/search_command.py,sha256=FXtP09HmmfHRrjenvmU4j0Lcw34piIzdI3UF
|
|
|
29
29
|
kash/commands/base/show_command.py,sha256=rFyIW_5oZArRSTpe71PaX87Hq30WE-t6RAJKeCwJ3lM,3299
|
|
30
30
|
kash/commands/extras/parse_uv_lock.py,sha256=HVqmGhJAd3ZCTTTaXe_nzzTMFKhwjLLP7hx4NTM224U,5696
|
|
31
31
|
kash/commands/extras/utils_commands.py,sha256=rz3N7VxoUHvCxksRt-sLubkvyW-VH9OTltLEMEnjRfU,769
|
|
32
|
-
kash/commands/help/assistant_commands.py,sha256=
|
|
32
|
+
kash/commands/help/assistant_commands.py,sha256=TR5HtKEoWWyK1VRfqm-SdSVHX0F3RUWrSMqAD78WXqs,3039
|
|
33
33
|
kash/commands/help/doc_commands.py,sha256=7lKR7mzue2N7pSkNqblpFJy892fS5N6jWVOHqeXziHw,2466
|
|
34
34
|
kash/commands/help/help_commands.py,sha256=eJTpIhXck123PAUq2k-D3Q6UL6IQ8atOVYurLi2GD0A,4229
|
|
35
|
-
kash/commands/help/logo.py,sha256=
|
|
36
|
-
kash/commands/help/welcome.py,sha256=
|
|
35
|
+
kash/commands/help/logo.py,sha256=4K3pPIiNlPIgdNeOgdIGbJQCKmqCEsDOhuWPH51msWo,3377
|
|
36
|
+
kash/commands/help/welcome.py,sha256=uM2UMtHG4oXTxU8IFlFbTOTmR5_XTCUtT828V_tKMsk,920
|
|
37
37
|
kash/commands/workspace/selection_commands.py,sha256=nZzA-H7Pk8kqSJVRlX7j1m6cZX-e0X8isOryDU41vqU,8156
|
|
38
38
|
kash/commands/workspace/workspace_commands.py,sha256=_2TcthGOu-nU9E_-jjf4kba9ldLRA6qe6Do6zV06EKc,21960
|
|
39
39
|
kash/config/__init__.py,sha256=ytly9Typ1mWV4CXfV9G3CIPtPQ02u2rpZ304L3GlFro,148
|
|
40
40
|
kash/config/capture_output.py,sha256=ud3uUVNuDicHj3mI_nBUBO-VmOrxtBdA3z-I3D1lSCU,2398
|
|
41
|
-
kash/config/colors.py,sha256=
|
|
41
|
+
kash/config/colors.py,sha256=osHrR1rLrFV5j2kTdN4z-DDM-HmbnBfMaOj4NiBdFzg,13527
|
|
42
42
|
kash/config/env_settings.py,sha256=uhCdfs9-TzJ15SzbuIQP1yIORaLUqYXCxh9qq_Z8cJc,996
|
|
43
43
|
kash/config/init.py,sha256=aE4sZ6DggBmmoZEx9C5mQKrEbcDiswX--HF7pfCFKzc,526
|
|
44
44
|
kash/config/lazy_imports.py,sha256=MCZXLnKvNyfHi0k7MU5rNwcdJtUF28naCixuogsAOAA,805
|
|
@@ -49,7 +49,7 @@ kash/config/server_config.py,sha256=eQ1yxDk031QI0Efp0I1VetqQd9wG7MrLVBCHFm4gp2g,
|
|
|
49
49
|
kash/config/settings.py,sha256=P3g0RSR6vrvfovDDYOIx6Hxafrg1mYTAxrTiVgH2Tm4,8889
|
|
50
50
|
kash/config/setup.py,sha256=zFxfTPG1cbsozuwUkIyAYebxuHhpYCiaexHnYnYJG1c,3524
|
|
51
51
|
kash/config/suppress_warnings.py,sha256=yty5ZodMLIpmjphRtcVmRamXfiWbyfga9annve6qxb0,1475
|
|
52
|
-
kash/config/text_styles.py,sha256=
|
|
52
|
+
kash/config/text_styles.py,sha256=QCidaUPRbelZjBnI6Q_Dtw-g_4VHdr99g4KHvDyQAo4,13810
|
|
53
53
|
kash/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
54
|
kash/docs/all_docs.py,sha256=NutfgU8VOA7_K2HX18FoOHVvvLL14dALoCxK9qDbQ04,3157
|
|
55
55
|
kash/docs/load_actions_info.py,sha256=D9uv8gdBtkBmdbFZeyIigsupPF9_WfidHVwWQrlggI0,937
|
|
@@ -59,15 +59,15 @@ kash/docs/load_source_code.py,sha256=CtMBUXrRetSO81HYW-DgJZ0bL_9Nn4GNidGKg-U11LU
|
|
|
59
59
|
kash/docs/markdown/api_docs_template.md,sha256=nUjrV5FhDql8odjjPiwOK8roCUiauy31G2ARiS_OGiQ,1457
|
|
60
60
|
kash/docs/markdown/assistant_instructions_template.md,sha256=Fzeledd_nr3bKhvQ1qZfMqyNtA7-_e05J5Jx5ecerBA,4758
|
|
61
61
|
kash/docs/markdown/readme_template.md,sha256=iGx9IjSni1t_9BuYD5d2GgkxkNIkqvE3k78IufHF6Yg,409
|
|
62
|
-
kash/docs/markdown/warning.md,sha256=
|
|
63
|
-
kash/docs/markdown/welcome.md,sha256=
|
|
62
|
+
kash/docs/markdown/warning.md,sha256=ipTFWQc1F0cPGrIG0epX5RqQH6PmshyZOoCQDz0zDos,88
|
|
63
|
+
kash/docs/markdown/welcome.md,sha256=uNI6CyZOuPUe6FZgKd9MpO_pumHxlGN7Lfhb52XJRa0,611
|
|
64
64
|
kash/docs/markdown/topics/a1_what_is_kash.md,sha256=rgVrv6tRXEwdqQ54DAfHP3BSAuq8Ux4wCNeluTwpkhU,6758
|
|
65
65
|
kash/docs/markdown/topics/a2_installation.md,sha256=DSzaniHjOYPC3soGLPTGOGDVvbiPTROtb3S8zYUCPEs,5736
|
|
66
66
|
kash/docs/markdown/topics/a3_getting_started.md,sha256=xOMevEXMIpVJvTGuuwI9Cc9sun3tQM3OqCgynSgMpeM,9376
|
|
67
67
|
kash/docs/markdown/topics/a4_elements.md,sha256=XNJRw-iqnytiIHOAshp1YnUpHM5KBgFAhuOdp_fekxQ,4615
|
|
68
68
|
kash/docs/markdown/topics/a5_tips_for_use_with_other_tools.md,sha256=VGUdq8dm78E8PFbNR9BmV8Gj-r8zP-vOQz8TibQmGw0,3259
|
|
69
69
|
kash/docs/markdown/topics/b0_philosophy_of_kash.md,sha256=ADtgbvv756vKrJPhdvNGVzJVedOgo6ak7_vGEEFi8Sc,8749
|
|
70
|
-
kash/docs/markdown/topics/b1_kash_overview.md,sha256=
|
|
70
|
+
kash/docs/markdown/topics/b1_kash_overview.md,sha256=W-ctjXpLdhZhkW9Qnl5PpnbUbL_pLDQ9GN-KyHvhAdo,9255
|
|
71
71
|
kash/docs/markdown/topics/b2_workspace_and_file_formats.md,sha256=DsiDjAe8FSIf18OjkPq-ttbhkpQO4c1UBVjcK2iy-BM,2845
|
|
72
72
|
kash/docs/markdown/topics/b3_modern_shell_tool_recommendations.md,sha256=F-0mhSl7sm6mpTx17N4OaGn8DobTY6d9P0TjTsPqluI,2258
|
|
73
73
|
kash/docs/markdown/topics/b4_faq.md,sha256=ofLMC1JxdWAMZkiUzyhJTewBhEti8ULEF8yOTViZZLA,7093
|
|
@@ -82,22 +82,22 @@ kash/embeddings/cosine.py,sha256=QTWPWUHivXjxCM6APSqij_-4mywM2BVVm0xb0hu7FHA,158
|
|
|
82
82
|
kash/embeddings/embeddings.py,sha256=v6RmrEHsx5PuE3fPrY15RK4fgW0K_VlNWDTjCVr11zY,4451
|
|
83
83
|
kash/embeddings/text_similarity.py,sha256=BOo9Vcs5oi2Zs5La56uTkPMHo65XSd4qz_yr6GTfUA4,1924
|
|
84
84
|
kash/exec/__init__.py,sha256=Najls8No143yoj_KAaOQgo8ufC2LWCB_DwwEQ-8nDM0,1277
|
|
85
|
-
kash/exec/action_decorators.py,sha256=
|
|
85
|
+
kash/exec/action_decorators.py,sha256=kCEqQFN1MIhRbFeIEGux956LzsiwonhyIIrJ8Pq9zPk,16765
|
|
86
86
|
kash/exec/action_exec.py,sha256=O_4UB_Vt7QRxltviMeBwNIfw9ten06n4fQ39MregacE,19017
|
|
87
87
|
kash/exec/action_registry.py,sha256=numU9pH_W5RgIrYmfi0iYMYy_kLJl6vup8PMrhxAfdc,2627
|
|
88
88
|
kash/exec/combiners.py,sha256=AJ6wgPUHsmwanObsUw64B83XzU26yuh5t4l7igLn82I,4291
|
|
89
89
|
kash/exec/command_exec.py,sha256=zc-gWm7kyB5J5Kp8xhULQ9Jj9AL927KkDPXXk-Yr1Bw,1292
|
|
90
90
|
kash/exec/command_registry.py,sha256=1s2ogU8b8nqK_AEtslbr1eYrXCGDkeT30UrB7L0BRoM,2027
|
|
91
|
-
kash/exec/fetch_url_items.py,sha256=
|
|
91
|
+
kash/exec/fetch_url_items.py,sha256=egTnrYaPHWRIXwO-Mgaxh1GINPtoy4VQXJlzGgQBj6Y,4441
|
|
92
92
|
kash/exec/history.py,sha256=l2XwHGBR1UgTGSFPSBE9mltmxvjR_5qFFO6d-Z008nc,1208
|
|
93
93
|
kash/exec/importing.py,sha256=xunmBapeUMNc6Zox7y6e_DZkidyWeouiFZpphajwSzc,1843
|
|
94
|
-
kash/exec/llm_transforms.py,sha256=
|
|
94
|
+
kash/exec/llm_transforms.py,sha256=n7S-Dew8z_BoAwp-14lY4LueFeUtG117eK_8msbn02c,4375
|
|
95
95
|
kash/exec/precondition_checks.py,sha256=HymxL7qm4Yz8V76Um5pKdIRnQ2N-p9rpQQi1fI38bNA,2139
|
|
96
96
|
kash/exec/precondition_registry.py,sha256=9O-01d2OrsYLuhqodVuWjouLR2ABJbUotAmfJNBCRzs,1439
|
|
97
|
-
kash/exec/preconditions.py,sha256=
|
|
97
|
+
kash/exec/preconditions.py,sha256=fuK_tfI7FiJ5F36MXOgopFtD5O_gf8yLvQ-xjowNKSw,5221
|
|
98
98
|
kash/exec/resolve_args.py,sha256=gu65epzVrwWHdHA-KwAwYssncJIB84oHOJeoXXrQ2mM,4428
|
|
99
99
|
kash/exec/runtime_settings.py,sha256=aK6nGbZhKSIDVmV6AqV68hQkiaIGWnCiNzHtwwZ5V0w,3960
|
|
100
|
-
kash/exec/shell_callable_action.py,sha256=
|
|
100
|
+
kash/exec/shell_callable_action.py,sha256=iSv3w33oJbIenOI6s9v5cHU4gX2U9w7MIWc8jHgk6HE,4377
|
|
101
101
|
kash/exec_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
102
|
kash/exec_model/args_model.py,sha256=gquOD0msFA-5xhNU-3R5l8wlwyAMefpMHltpxrDlYGQ,2662
|
|
103
103
|
kash/exec_model/commands_model.py,sha256=iM8QhzA0tAas5OwF5liUfHtm45XIH1LcvCviuh3As7s,4923
|
|
@@ -128,7 +128,7 @@ kash/llm_utils/custom_sliding_transforms.py,sha256=z07WCdBoiywBIGk2EXK3xY4t_6g8I
|
|
|
128
128
|
kash/llm_utils/fuzzy_parsing.py,sha256=bbG2Y7i5w6kxAVPAixyluv3MDS2hW_pkhnJpVOLHZQc,3278
|
|
129
129
|
kash/llm_utils/init_litellm.py,sha256=5Fn9uW4P7lfEO8Rk1EJJUzDEGNjw-PDvxFgHlKDf-Ok,409
|
|
130
130
|
kash/llm_utils/llm_api_keys.py,sha256=nTB9wSFfHTOXvqshSQCQGCPxUwOW1U7oslngya8nHkw,1168
|
|
131
|
-
kash/llm_utils/llm_completion.py,sha256=
|
|
131
|
+
kash/llm_utils/llm_completion.py,sha256=HPgxFys8RZsenfKq2S2dkUrpu-A88xXb-xK578zNd2g,5439
|
|
132
132
|
kash/llm_utils/llm_features.py,sha256=tgcz8qQByZ80noybXS2144K9eCw1iOFxPYkCK2kJJOw,1861
|
|
133
133
|
kash/llm_utils/llm_messages.py,sha256=70QwIIvdwo-h4Jfn_6MbEHb3LTUjUmzg_v_dU_Ey__g,1174
|
|
134
134
|
kash/llm_utils/llm_names.py,sha256=VZbdKnoeBx_luB5YQ-Rz37gMt3_FcueJdp40ZaQbpUA,3620
|
|
@@ -158,13 +158,13 @@ kash/media_base/transcription_format.py,sha256=rOVPTpwvW22c27BRwYF-Tc_xzqK_wOtUZ
|
|
|
158
158
|
kash/media_base/transcription_whisper.py,sha256=GqvroW9kBAH4-gcbYkMgNCfs2MpMIgm1ip3NMWtJ0IE,1169
|
|
159
159
|
kash/media_base/services/local_file_media.py,sha256=_NV-T90rShJ8ucUjQXMPCKKJ50GSFE9PyyVzhXp5z9w,5624
|
|
160
160
|
kash/model/__init__.py,sha256=kFfBKb5N70NWYUfpRRxn_Sb9p_vXlB6BBaTCqWmSReo,2978
|
|
161
|
-
kash/model/actions_model.py,sha256=
|
|
161
|
+
kash/model/actions_model.py,sha256=nYvQNr2M8ooFRL2YZ3_yPxFuqYdxO__6fFTgx5mxwbQ,22269
|
|
162
162
|
kash/model/assistant_response_model.py,sha256=6eDfC27nyuBDFjv5nCYMa_Qb2mPbKwDzZy7uLOIyskI,2653
|
|
163
163
|
kash/model/compound_actions_model.py,sha256=HiDK5wwCu3WwZYHATZoLEguiqwR9V6V296wiKtGIX8s,6926
|
|
164
164
|
kash/model/concept_model.py,sha256=we2qOcy9Mv1q7XPfkDLp_CyO_-8DwAUfUYlpgy_jrFs,1011
|
|
165
165
|
kash/model/exec_model.py,sha256=IlfvtQyoFRRWhWju7vdXp9J-w_NGcGtL5DhDLy9gRd8,2250
|
|
166
166
|
kash/model/graph_model.py,sha256=jnctrPiBZ0xwAR8D54JMAJPanA1yZdaxSFQoIpe8anA,2662
|
|
167
|
-
kash/model/items_model.py,sha256=
|
|
167
|
+
kash/model/items_model.py,sha256=d95duvrAvi7LjMQF6urUuwGiizo1K1QCnRfyAa7tcbA,35827
|
|
168
168
|
kash/model/language_list.py,sha256=I3RIbxTseVmPdhExQimimEv18Gmy2ImMbpXe0-_t1Qw,450
|
|
169
169
|
kash/model/llm_actions_model.py,sha256=a29uXVNfS2CiqvM7HPdC6H9A23rSQQihAideuBLMH8g,2110
|
|
170
170
|
kash/model/media_model.py,sha256=ZnlZ-FkswbAIGpUAuNqLce1WDZK-WbnwHn2ipg8x7-0,3511
|
|
@@ -190,7 +190,7 @@ kash/shell/output/kerm_code_utils.py,sha256=92A4AV-IFKKZMWLNZnd_zksNFMBgE_VNXySy
|
|
|
190
190
|
kash/shell/output/kerm_codes.py,sha256=KLVdTM_dL_NeYmGbllzsQoW4IHXJjEsgqqIp1s7P1yI,18877
|
|
191
191
|
kash/shell/output/kmarkdown.py,sha256=RRB5b0Ip0KZ71vnJKFfvxerYkeDFTCVTlHqHfmMy80Y,3675
|
|
192
192
|
kash/shell/output/shell_formatting.py,sha256=oxmAeJ2j0ANYSUsL15CUv--KcGlQ6Wa_rywXSDlsZM4,3331
|
|
193
|
-
kash/shell/output/shell_output.py,sha256=
|
|
193
|
+
kash/shell/output/shell_output.py,sha256=A4XcEo2P3CVVOuJHFHut3Wd4I2DBnim-NiYEsdokb9s,11831
|
|
194
194
|
kash/shell/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
195
195
|
kash/shell/ui/shell_results.py,sha256=mvFHxK_oz3bNfF5_Twt6VqDO44TA1b256Bjf5oco804,4130
|
|
196
196
|
kash/shell/ui/shell_syntax.py,sha256=1fuDqcCV16AAWwWS4w4iT-tlSnl-Ywdrf68Ge8XIfmQ,751
|
|
@@ -199,9 +199,13 @@ kash/shell/utils/native_utils.py,sha256=pAiuqqrjfNTesdArSya6CVavKVsuAXOcX3_XAIQr
|
|
|
199
199
|
kash/shell/utils/shell_function_wrapper.py,sha256=fgUuVhocYMKLkGJJQJOER5nFMAvM0ZVpfGu7iJPJI9s,7385
|
|
200
200
|
kash/utils/__init__.py,sha256=4Jl_AtgRADdGORimWhYZwbSfQSpQ6SiexNIZzmbcngI,111
|
|
201
201
|
kash/utils/errors.py,sha256=2lPL0fxI8pPOiDvjl0j-rvwY8uhmWetsrYYIc2-x1WY,3906
|
|
202
|
+
kash/utils/api_utils/api_retries.py,sha256=0actlvQSP2puSvM7DwzC7eifDLAFYSRirNuo1Tp1Xvg,9040
|
|
203
|
+
kash/utils/api_utils/cache_requests_limited.py,sha256=TA5buZ9Dgbj4I1zHhwerTXre018i0TCACGsezsjX9Uc,3140
|
|
204
|
+
kash/utils/api_utils/gather_limited.py,sha256=nnaR2jdvDz5ut95K7ZJltfTGCVigo0Y1828iLKd4pVA,35781
|
|
205
|
+
kash/utils/api_utils/progress_protocol.py,sha256=Z_umf2DVmyTlfjiW57juN3wwlruU0camvVAHJKPHjtk,9041
|
|
202
206
|
kash/utils/common/__init__.py,sha256=ggeWw1xmbl1mgCQD3c4CNN2h5WXFCsN2wXlCWurEUEI,161
|
|
203
207
|
kash/utils/common/format_utils.py,sha256=83FhAwbMnOQIFudpnOGMuCqCiyoAlWGS6cc8q6xgZus,2072
|
|
204
|
-
kash/utils/common/function_inspect.py,sha256=
|
|
208
|
+
kash/utils/common/function_inspect.py,sha256=KE5QgIPx16iupCZrMlcvU6MuA5fUFboPEkqmltpFw3E,19824
|
|
205
209
|
kash/utils/common/import_utils.py,sha256=zyCa5sG_vTxzgIgjOS98xAwqkSeCQzN-8UkM6k9ZZOI,4615
|
|
206
210
|
kash/utils/common/lazyobject.py,sha256=9dmOfSheblOXgo2RRakMwgfPIKdTgtyrlm6dCKAze04,5157
|
|
207
211
|
kash/utils/common/obj_replace.py,sha256=AuiXptUOnuDNcWDgAJ3jEHkLh89XIqCP_SOkgaVyFIQ,2075
|
|
@@ -210,7 +214,7 @@ kash/utils/common/parse_key_vals.py,sha256=yZRZIa5GD9SlnBSn2YNZm8PRVKoSJMY8DCmdG
|
|
|
210
214
|
kash/utils/common/parse_shell_args.py,sha256=UZXTZDbV5m5Jy39jdAQ6W8uilr1TNa0__RqnE8UmQ_M,10604
|
|
211
215
|
kash/utils/common/stack_traces.py,sha256=a2NwlK_0xxnjMCDC4LrQu7ueFylF-OImFG3bAAHpPwY,1392
|
|
212
216
|
kash/utils/common/task_stack.py,sha256=XkeBz3BwYY1HxxTqd3f7CulV0s61PePAKw1Irrtvf5o,4536
|
|
213
|
-
kash/utils/common/testing.py,sha256=
|
|
217
|
+
kash/utils/common/testing.py,sha256=9at6m_2YwRYitQoo-KeGsd2aoA59YUPs-x7cKcmy1C4,1802
|
|
214
218
|
kash/utils/common/type_utils.py,sha256=SJirXhPilQom_-OKkFToDLm_82ZwpjcNjRy8U1HaQ0Q,3829
|
|
215
219
|
kash/utils/common/uniquifier.py,sha256=75OY4KIVF8u1eoO0FCPbEGTyVpPOtM-0ctoG_s_jahM,3082
|
|
216
220
|
kash/utils/common/url.py,sha256=R_P-CkOUiFxVdo9COcaL7YFvFIoAULj5-XxvmlFLvzo,9416
|
|
@@ -231,13 +235,14 @@ kash/utils/lang_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
231
235
|
kash/utils/lang_utils/capitalization.py,sha256=5XbqBvjkzlxsm1Ue5AQP3P1J1IG0PubMVmGnoKVTF-c,3903
|
|
232
236
|
kash/utils/rich_custom/__init__.py,sha256=_g2F3Bqc1UnLTdAdCwkvzXmW7OvmqXrA8DpfT1dKy6w,75
|
|
233
237
|
kash/utils/rich_custom/ansi_cell_len.py,sha256=oQlNrqWB0f6pmigkbRRyeK6oWlGHMPbV_YLO_qmDH5E,2356
|
|
238
|
+
kash/utils/rich_custom/multitask_status.py,sha256=9K8jA_WCskb2-S3WZOgGQo19qkWYpX4WqB2RF1p1apE,21540
|
|
234
239
|
kash/utils/rich_custom/rich_char_transform.py,sha256=3M89tViKM0y31VHsDoHi5eHFWlv5ME7F4p35IdDxnrw,2616
|
|
235
240
|
kash/utils/rich_custom/rich_indent.py,sha256=nz72yNpUuYjOsaPNVmxM81oEQm-GKEfQkNsuWmv16G0,2286
|
|
236
241
|
kash/utils/rich_custom/rich_markdown_fork.py,sha256=M_JRaSAyHrSg-wuLv9C9P7SkehSim3lwkqQPuMIFkVw,26551
|
|
237
242
|
kash/utils/text_handling/doc_normalization.py,sha256=C211eSof8PUDVCqQtShuC4AMJpTZeBK8GHlGATp3c9E,2976
|
|
238
|
-
kash/utils/text_handling/escape_html_tags.py,sha256=
|
|
239
|
-
kash/utils/text_handling/markdown_render.py,sha256=
|
|
240
|
-
kash/utils/text_handling/markdown_utils.py,sha256=
|
|
243
|
+
kash/utils/text_handling/escape_html_tags.py,sha256=8pC3JgoKRtdnbnOu8DiWrlvNR6GAqjwhGbQgl3jiFG4,6441
|
|
244
|
+
kash/utils/text_handling/markdown_render.py,sha256=LHPdJc__2ejBx7iwkp_P9wIePNmiVSgwu4-uhamVjms,3791
|
|
245
|
+
kash/utils/text_handling/markdown_utils.py,sha256=4RGIK9weadZ1UYTk7eVmCIFX9yktMyLSFsMLNTCnmoY,31681
|
|
241
246
|
kash/utils/text_handling/markdownify_utils.py,sha256=xNMlBX36BJ5VK5kxY2Ofo-Q84R2kBSM91u1grkQ-5As,2925
|
|
242
247
|
kash/utils/text_handling/unified_diffs.py,sha256=JfHSakISkT_GuBPBI4fTooHrp2aenWzDKiVvDewVfMk,2655
|
|
243
248
|
kash/web_content/canon_url.py,sha256=Zv2q7xQdIHBFkxxwyJn3_ME-qqMFRi_fKxE_IgV2Z50,742
|
|
@@ -252,9 +257,9 @@ kash/web_content/web_fetch.py,sha256=J8DLFP1vzp7aScanFq0Bd7xCP6AVL4JgMMBqyRPtZjQ
|
|
|
252
257
|
kash/web_content/web_page_model.py,sha256=aPpgC1fH2z2LTzGJhEDvZgq_mYwgsQIZaDS3UE7v98w,1147
|
|
253
258
|
kash/web_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
254
259
|
kash/web_gen/simple_webpage.py,sha256=ks_0ljxCeS2-gAAEaUc1JEnzY3JY0nzqGFiyyqyRuZs,1537
|
|
255
|
-
kash/web_gen/tabbed_webpage.py,sha256=
|
|
260
|
+
kash/web_gen/tabbed_webpage.py,sha256=e0GGG1bQ4CQegpJgOIT2KpyM6cmwN_BQ9eJSsi4BjgY,4945
|
|
256
261
|
kash/web_gen/template_render.py,sha256=aypo6UanouftV4RpxgNm6JdquelI52fV0IlihdA3yjE,1908
|
|
257
|
-
kash/web_gen/templates/base_styles.css.jinja,sha256=
|
|
262
|
+
kash/web_gen/templates/base_styles.css.jinja,sha256=kLFEntQ7SHkbG9BEJTLtsiJCP5ldflILMXHAZGKjaF0,14942
|
|
258
263
|
kash/web_gen/templates/base_webpage.html.jinja,sha256=gwxXMSC_eY-stu8uT5AVyQJ-Ppy2GyWwq9vEdTEbVi0,12887
|
|
259
264
|
kash/web_gen/templates/content_styles.css.jinja,sha256=qwMKnjDRdjXxNfUgSrZEAkliHSLZ9OMsWGulonp-1Zs,3764
|
|
260
265
|
kash/web_gen/templates/explain_view.html.jinja,sha256=DNw5Iw5SrhIUFRGB4qNvfcKXsBHVbEJVURGdhvyC75Q,949
|
|
@@ -262,9 +267,9 @@ kash/web_gen/templates/item_view.html.jinja,sha256=cYGyGKFcX8-5L2SM7-BC5oK6GLuH6
|
|
|
262
267
|
kash/web_gen/templates/simple_webpage.html.jinja,sha256=I5O_z3BLo0p1HTghK2S1kUJBtvY-nSAIbJiapUns408,2576
|
|
263
268
|
kash/web_gen/templates/tabbed_webpage.html.jinja,sha256=umkipUXW-lDGnbV-tlDroCfCx_385PFnpbzsvwmityo,1843
|
|
264
269
|
kash/web_gen/templates/components/toc_scripts.js.jinja,sha256=9AanLJaVormGi52h-k2tKJTRT4BiBGGNnw3Kmrnr40Q,10481
|
|
265
|
-
kash/web_gen/templates/components/toc_styles.css.jinja,sha256=
|
|
266
|
-
kash/web_gen/templates/components/tooltip_scripts.js.jinja,sha256=
|
|
267
|
-
kash/web_gen/templates/components/tooltip_styles.css.jinja,sha256=
|
|
270
|
+
kash/web_gen/templates/components/toc_styles.css.jinja,sha256=Rd8P7nFTscex8iYrZbYRogxA9Yl4w0iI9_7q--3NyqY,6991
|
|
271
|
+
kash/web_gen/templates/components/tooltip_scripts.js.jinja,sha256=iz_5L5X4D4D1guotJjGVxMh5LcyOpjepw1R3nQd1NLE,32084
|
|
272
|
+
kash/web_gen/templates/components/tooltip_styles.css.jinja,sha256=o0qUwpe6--TyFjkfOZDMcL-ytk3jy3fob-mn6uQQOlw,14144
|
|
268
273
|
kash/workspaces/__init__.py,sha256=q1gFERRZLJMA9-XSUKvB1ulauHDKqyzzc86GFLbxAuk,700
|
|
269
274
|
kash/workspaces/param_state.py,sha256=vT_eGWqg2SRviIM5jqEAauznX2B5Xt2nHHu2oRxTcIU,746
|
|
270
275
|
kash/workspaces/selections.py,sha256=rEUuQlrQ3C_54bzBSKDTTptgX8oZPqN0Ao4uaXSWA-Q,12003
|
|
@@ -276,7 +281,7 @@ kash/workspaces/workspaces.py,sha256=ypxlX2K64QOhNsta69arlvKbiVpUW_4CDeX_sEcIQbg
|
|
|
276
281
|
kash/xonsh_custom/command_nl_utils.py,sha256=6Xcx98HXL5HywziHi0XskwFx6kfvz7oCmMX-siJib1A,3392
|
|
277
282
|
kash/xonsh_custom/custom_shell.py,sha256=jydWwHR0-RslioaHHY1sHnM6H6fG3cwOw1XO__sG_b0,19026
|
|
278
283
|
kash/xonsh_custom/customize_prompt.py,sha256=u-jRY-ftXYflBkbJVetEg6GYelPUvqZEpjrPRUTfy8w,6896
|
|
279
|
-
kash/xonsh_custom/load_into_xonsh.py,sha256=
|
|
284
|
+
kash/xonsh_custom/load_into_xonsh.py,sha256=Z_PAaW_Uv-PDRKdw9E_7dC1eMe6FbwwIUioxyS1Sp_g,3596
|
|
280
285
|
kash/xonsh_custom/shell_load_commands.py,sha256=bndmVEecIhuzQBI3OUDpH4ac7DXGkAMUVqXXcbrmEqI,4719
|
|
281
286
|
kash/xonsh_custom/shell_which.py,sha256=zRaLhFVg9HEDFXo4dqWKwX07YpfPh25kopeG_fgctOE,1926
|
|
282
287
|
kash/xonsh_custom/xonsh_completers.py,sha256=jxsc279DwZUHm0-iCnCtvbzqJBtq8zu0FUls5J1BA8o,17959
|
|
@@ -286,8 +291,8 @@ kash/xonsh_custom/xonsh_modern_tools.py,sha256=mj_b34LZXfE8MJe9EpDmp5JZ0tDM1biYN
|
|
|
286
291
|
kash/xonsh_custom/xonsh_ranking_completer.py,sha256=ZRGiAfoEgqgnlq2-ReUVEaX5oOgW1DQ9WxIv2OJLuTo,5620
|
|
287
292
|
kash/xontrib/fnm.py,sha256=V2tsOdmIDgbFbZSfMLpsvDIwwJJqiYnOkOySD1cXNXw,3700
|
|
288
293
|
kash/xontrib/kash_extension.py,sha256=FLIMlgR3C_6A1fwKE-Ul0nmmpJSszVPbAriinUyQ8Zg,1896
|
|
289
|
-
kash_shell-0.3.
|
|
290
|
-
kash_shell-0.3.
|
|
291
|
-
kash_shell-0.3.
|
|
292
|
-
kash_shell-0.3.
|
|
293
|
-
kash_shell-0.3.
|
|
294
|
+
kash_shell-0.3.22.dist-info/METADATA,sha256=IySaDz82xNb4v9ukcdw_kzOGEJxNWUBG4_fltjOfB90,32656
|
|
295
|
+
kash_shell-0.3.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
296
|
+
kash_shell-0.3.22.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
|
|
297
|
+
kash_shell-0.3.22.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
|
|
298
|
+
kash_shell-0.3.22.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|