-
Notifications
You must be signed in to change notification settings - Fork 85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(ui): upload dataset from csv #3826
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
42e88dc
to
3e0fa0b
Compare
Preview this PR with FeatureBee: https://beta.wandb.ai/?betaVersion=d9e88ff0067d6c364676906baa36cb9efe97aaf6 |
2d19152
to
4bab296
Compare
d4bafbb
to
e8e1081
Compare
New dependencies detected. Learn more about Socket for GitHub ↗︎
|
4bab296
to
f6bf364
Compare
8f06e50
to
57969f5
Compare
@@ -44,6 +44,7 @@ interface CellViewingRendererProps { | |||
isNew?: boolean; | |||
isEditing?: boolean; | |||
serverValue?: any; | |||
disableNewRowHighlight?: boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought the green highlight for "added rows" ruined this view, so I added a prop to disable.
@@ -118,6 +118,7 @@ export const ResizableDrawer: React.FC<ResizableDrawerProps> = ({ | |||
}} | |||
onMouseDown={handleMouseDown} | |||
/> | |||
{headerContent} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
header not being rendered here is an uncaught regression that this pr fixes
57969f5
to
4682504
Compare
f6bf364
to
72ebfc6
Compare
4682504
to
611a6e8
Compare
611a6e8
to
2d09122
Compare
WalkthroughThis pull request adds new dependencies and extends dataset-related functionality. It introduces a CSV utility module with comprehensive parsing and type detection functions alongside its test suite. New components and context for dataset creation have been implemented, including a resizable drawer with extended header content. Additionally, enhancements to cell rendering, dataset view configuration, dataset name validation, and styling updates have been applied. The changes also refactor certain functions to simplify validation logic and improve UI interactions on the datasets page. Changes
Sequence Diagram(s)sequenceDiagram
participant U as User
participant DP as DatasetsPage
participant CD as CreateDatasetDrawer
participant CTX as CreateDatasetProvider
participant VN as validateDatasetName
participant CSV as csvUtils
U->>DP: Click "Create Dataset" button
DP->>CD: Open the CreateDatasetDrawer
CD->>CTX: Initialize dataset creation state
U->>CD: Input dataset name and upload CSV
CD->>VN: Validate dataset name
VN-->>CD: Return validation result
CD->>CSV: Parse the uploaded CSV file
CSV-->>CD: Return parsed data
CD->>CTX: Update state with dataset details
CTX->>DP: Notify dataset save success
DP->>U: Display confirmation toast
Suggested reviewers
Poem
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (7)
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/datasetNameValidation.ts (1)
26-39
: Consider adding a more explicit constraint message.The error message for invalid characters is informative, but consider including the full list of allowed characters in the message to provide clearer guidance to users.
- return { - isValid: false, - error: `Invalid characters found: ${invalidChars}`, - }; + return { + isValid: false, + error: `Invalid characters found: ${invalidChars}. Only letters, numbers, hyphens, and underscores are allowed.`, + };weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx (3)
117-133
: Consider adding file size validation.The file upload handling checks for CSV file type but doesn't validate file size. This could lead to performance issues or failures when processing very large CSV files.
const handleDrop = useCallback( async (e: React.DragEvent<HTMLDivElement>) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); const files = e.dataTransfer.files; if (files.length > 0) { const file = files[0]; + const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB limit if (file.type === 'text/csv' || file.name.endsWith('.csv')) { + if (file.size > MAX_FILE_SIZE) { + toast.error('File too large. Please upload a CSV file smaller than 10MB'); + return; + } await parseCSVFile(file); } else { toast.error('Please upload a CSV file'); } } }, [parseCSVFile] );
313-317
: Add file size validation to input element.Similar to the drag and drop handler, the file input should also have size validation.
<input accept=".csv" id="csv-upload" type="file" + data-max-size="10485760" style={{display: 'none'}} onChange={handleFileChange} ref={fileInputRef} />
And update the
handleFileChange
function:const handleFileChange = useCallback( async (event: React.ChangeEvent<HTMLInputElement>) => { const file = event.target.files?.[0]; if (file) { + const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB limit + if (file.size > MAX_FILE_SIZE) { + toast.error('File too large. Please upload a CSV file smaller than 10MB'); + return; + } await parseCSVFile(file); } }, [parseCSVFile] );
364-366
: Consider adding responsiveness for small screens.The footer with the publish button is set with a fixed layout. Consider improving the responsiveness for mobile or narrow drawer views.
<Box sx={{ py: 2, px: 0, borderTop: '1px solid', borderColor: 'divider', backgroundColor: 'background.paper', width: '100%', display: 'flex', flexShrink: 0, + flexDirection: {xs: 'column', sm: 'row'}, + gap: 2, }}>weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx (1)
131-205
: CSV parsing is well-handled, but consider streaming for large files.
TheparseCSVFile
function correctly sets and clears error/loading states, and usesparseCSV
fromcsvUtils
. For very large CSV files, you might consider a streaming approach to avoid memory spikes.weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx (1)
81-146
: Creation workflow is handled well, but remove debug logs in production.
ThehandleSaveDataset
function is robust, handling success and errors with toast notifications. Consider removing or guardingconsole.log
statements once debugging is complete.- console.log('Saving dataset:', dataset); + // console.log('Saving dataset:', dataset); // Remove or guard for productionweave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts (1)
230-275
: Parsing pipeline is straightforward, consider streaming for large files.
Reading the entire file into memory is simple and likely fine for moderate file sizes. Consider a streaming parse mode for extremely large files.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
weave-js/yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (12)
weave-js/package.json
(2 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CellRenderers.tsx
(7 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/DatasetPublishToast.tsx
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/EditableDatasetView.tsx
(8 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/SelectDatasetStep.tsx
(2 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/__tests__/csvUtils.test.ts
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/datasetNameValidation.ts
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx
(6 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/ResizableDrawer.tsx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
`**/*.{js,jsx,ts,tsx}`: Focus on architectural and logical i...
**/*.{js,jsx,ts,tsx}
: Focus on architectural and logical issues rather than style (assuming ESLint is in place).
Flag potential memory leaks and performance bottlenecks.
Check for proper error handling and async/await usage.
Avoid strict enforcement of try/catch blocks - accept Promise chains, early returns, and other clear error handling patterns. These are acceptable as long as they maintain clarity and predictability.
Ensure proper type usage in TypeScript files.
Look for security vulnerabilities in data handling.
Don't comment on formatting if prettier is configured.
Verify proper React hooks usage and component lifecycle.
Check for proper state management patterns.
weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/ResizableDrawer.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/DatasetPublishToast.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/SelectDatasetStep.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/__tests__/csvUtils.test.ts
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CellRenderers.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/datasetNameValidation.ts
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/EditableDatasetView.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx
`**/*.{yaml,yml,json,tf}`: Check for security best practices...
**/*.{yaml,yml,json,tf}
: Check for security best practices.
Verify environment-specific configurations.
Look for hardcoded credentials or sensitive data.
Ensure proper resource limits and requests.
Verify proper versioning of dependencies.
Check for infrastructure best practices.
weave-js/package.json
🪛 Biome (1.9.4)
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts
[error] 156-156: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 194-194: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 198-198: Useless case clause.
because the default clause is present:
Unsafe fix: Remove the useless case.
(lint/complexity/noUselessSwitchCase)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: publish-package
- GitHub Check: Socket Security: Pull Request Alerts
- GitHub Check: Build and Deploy to GitHub Pages
🔇 Additional comments (36)
weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/ResizableDrawer.tsx (1)
121-121
: Fixed header rendering issue.The change properly implements the rendering of the
headerContent
prop that was previously defined but not actually rendered in the component. This fixes the regression noted in the previous review.weave-js/package.json (1)
66-66
:✅ Verification successful
Added PapaParse library and its TypeScript types.
Adding the CSV parsing library and its TypeScript type definitions is appropriate for implementing the CSV upload functionality. The version constraints use caret ranges which allow for compatible updates.
Also applies to: 101-101
🏁 Script executed:
#!/bin/bash # Check for security advisories and latest versions of the papaparse library # Check NPM for latest versions echo "Latest papaparse version:" npm view papaparse version # Check for security advisories echo "Security advisories for papaparse:" npm audit --package=papaparse || echo "No vulnerabilities found or npm audit failed"Length of output: 654
Dependency Update Verified
The addition of the PapaParse library along with its TypeScript definitions (
@types/papaparse
at^5.3.15
) has been confirmed as appropriate for supporting the CSV upload functionality. Verification shows that:
- The latest papaparse version on NPM is 5.5.2.
- There are no reported security vulnerabilities (the npm audit error is expected due to the absence of a lockfile).
This update meets the expected compatibility and safety requirements.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/DatasetPublishToast.tsx (2)
24-31
: Improved toast layout with explicit sizing.The addition of
width: '100%'
andminWidth: '280px'
ensures the toast has a consistent and appropriate size regardless of content.
34-42
: Enhanced text overflow handling for better readability.Adding
whiteSpace: 'nowrap'
,overflow: 'hidden'
, andtextOverflow: 'ellipsis'
improves the visual presentation of potentially long dataset names by ensuring they don't wrap or overflow the container.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/__tests__/csvUtils.test.ts (3)
3-42
: Well-structured tests for detectDataType function.The tests thoroughly cover different data type detection scenarios including:
- Null values (null, undefined, empty string)
- Numbers (integers, decimals, zero)
- Booleans (various cases and capitalizations)
- Dates (different formats)
- Strings (including edge cases)
This comprehensive testing ensures the function will correctly identify column data types when parsing CSV files.
44-91
: Comprehensive column analysis tests with good edge case coverage.The
analyzeColumns
tests cover important scenarios:
- Empty data handling
- Simple column analysis with different data types
- Mixed type handling in columns
- Columns with all null values
- Date column detection
This thorough testing will help ensure reliable column type inference when processing CSV files.
93-166
: Thorough CSV parsing tests with diverse scenarios.The tests for
parseCSV
function cover a wide range of use cases:
- Basic CSV parsing with headers
- Mixed data type handling
- Empty CSV files
- Missing values in cells
- Different delimiters (comma, semicolon)
- Malformed CSV error handling
The helper function for creating File objects from strings is an elegant way to simulate file uploads in the test environment.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/SelectDatasetStep.tsx (2)
15-15
: Nice extraction of validation logic.Good refactoring to import and use the
validateDatasetName
function, which centralizes the validation logic and makes it more reusable across components.
201-206
: Clean simplification of handleNameChange.The refactoring greatly simplifies this function by delegating validation to the specialized
validateDatasetName
function. This approach makes the code more maintainable and consistent with other areas of the application.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CellRenderers.tsx (5)
47-47
: Good addition of configurable row highlighting.Adding the ability to disable new row highlighting provides better flexibility in different UI contexts.
103-105
: Properly implemented conditional highlighting.The conditional check for
disableNewRowHighlight
is correctly implemented in the background color logic.
641-641
: Consistent prop implementation across components.The
disableNewRowHighlight
prop is consistently implemented in both interface and component with proper default values.Also applies to: 652-652
667-670
: Correct implementation of conditional background styling.The ternary operator correctly handles the background color based on the
disableNewRowHighlight
prop.
685-687
: Proper condition chaining for background color logic.Good use of nested conditional to determine the appropriate background color based on row state and highlight preferences.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/datasetNameValidation.ts (2)
1-4
: Well-defined validation result interface.Clear and concise interface that properly represents the validation outcome with both a boolean flag and descriptive error message.
6-51
: Robust dataset name validation implementation.The validation function is well-structured with:
- Empty input checking
- Start character validation
- Character set validation
- Helpful error messages that identify specific invalid characters
- Proper error handling with try/catch
This implementation ensures consistent validation across the application.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx (2)
15-15
: Consistent validation approach.Good integration of the shared
validateDatasetName
function, ensuring consistent validation behavior across the application.Also applies to: 73-74
348-348
: Consistent feature usage.The component correctly passes the
disableNewRowHighlight
prop toEditableDatasetView
, ensuring consistent visual behavior with the green highlight disabled.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/EditableDatasetView.tsx (7)
49-49
: Interfaces look good.
No issues found with the definition ofDatasetObjectVal
. The fields are clearly labeled and match the dataset conceptual model.
63-64
: Optional props naming is consistent.
AddinghideIdColumn
anddisableNewRowHighlight
as optional props is logical. The naming is consistent with existing props likehideRemoveForAddedRows
.
73-79
: Default prop values are reasonable.
Providing default values forhideIdColumn
anddisableNewRowHighlight
ensures predictable behavior when these props are omitted.
341-345
: Base columns creation logic is straightforward.
This separation of base columns from field columns makes the implementation easier to maintain.
345-390
: Conditional ID column logic is clear.
Only rendering the ID column ifhideIdColumn
is false is an effective way to keep the component flexible. The code for highlighting and styling rows (deleted, new, etc.) is understandable and matches the expected UI behavior.
392-414
: Controls column logic is well-structured.
Conditionally rendering the controls column for editing scenarios is clean. PassingdisableNewRowHighlight
toControlCell
is a good approach for consistent styling control.
490-491
: Dependency array updated correctly.
IncludinghideIdColumn
anddisableNewRowHighlight
ensures the memoized columns re-render when these props change.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx (3)
1-16
: Context approach looks solid.
Defining a dedicated context for managing dataset creation state is clean and modular. The action constants and initial state are straightforward.
109-122
: Provider composition is intuitive.
The outerDatasetEditProvider
wrapping the innerCreateDatasetProviderInner
simplifies the logic flow. This layered context approach clearly separates responsibilities.
214-235
: Publish flow is functioning, but double-check error paths.
handlePublishDataset
dispatches a reset immediately after callingonPublishDataset
. IfonPublishDataset
can fail or is async, ensure that the state reset won’t obscure errors. If it’s always synchronous and guaranteed, this is fine.weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx (4)
10-16
: Imports for toast notifications and new dataset functionality are appropriate.
The file now integrates toast-based notifications with create/publish actions, indicating a well-structured user feedback mechanism.
34-45
: Local state management for dataset drawer is clear.
isCreateDrawerOpen
andisCreatingDataset
provide a straightforward approach to controlling the drawer’s visibility and the creation process.
73-79
: Drawer open/close actions.
Straightforward logic to open and close the create drawer. No issues found.
155-155
: Read-only logic is consistent.
Disabling dataset creation for users not inuserInfo?.teams.includes(entity)
is a valid approach. Confirm that admins can still override if needed.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts (4)
1-8
: Interfaces for parsed column data are helpful.
Defining explicit interfaces forParsedColumn
andParseResult
clarifies the CSV structure and reduces confusion in other modules.
21-64
: Type detection logic is comprehensive.
ThedetectDataType
function covers various edge cases, including Infinity and boolean-like strings.
66-134
: Column analysis is robust.
Checking up to 100 non-null values is a good strategy. Thorough approach for potential boolean columns.
137-203
: Type casting handles typical CSV conversions.
Covers null, boolean, numeric, date, and string conversions well. The switch approach is clear. The static analysis warnings about scoping are likely false positives (no fall-through).🧰 Tools
🪛 Biome (1.9.4)
[error] 156-156: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 194-194: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 198-198: Useless case clause.
because the default clause is present:
Unsafe fix: Remove the useless case.
(lint/complexity/noUselessSwitchCase)
2d09122
to
fae70f2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (7)
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/__tests__/csvUtils.test.ts (3)
3-42
: Comprehensive coverage of detectDataType
Good job ensuring coverage for various data types (null, number, boolean, date, string). As a nitpick, consider adding test cases for inputs that have leading/trailing whitespace (e.g.,' true '
,' 123 '
), to confirm they’re detected appropriately.
44-91
: Thorough analyzeColumns tests
The tests accurately verify handling of empty data, mixed types, and date columns. For completeness, you might add a scenario where numeric columns contain currency symbols or special characters (e.g.,'$100'
), ensuring the function degrades gracefully.
93-167
: parseCSV test suite looks robust
You’ve covered empty data, missing values, different delimiters, and malformed CSV. As an additional good-to-have, consider adding test cases for multiline fields or quoted fields that contain the delimiter to ensure the parser behaves correctly in these edge cases.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx (1)
147-389
: Consider splitting UI into smaller components
The main return statement is quite large, handling uploads, layout, and dataset editing. As a good-to-have refactor, extract the drag-and-drop section or the dataset editing area into separate components to enhance readability and maintainability.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx (1)
131-205
: CSV parsing logic handles errors appropriately.The
parseCSVFile
function includes proper error handling and state management during the CSV parsing process. However, there's an opportunity for optimization.The
state.datasetName
dependency in the useCallback's dependency array (line 204) could cause unnecessary re-renders if the dataset name changes frequently. Since you're only accessing this value within the function body and it's not used in any closure, you could remove it from the dependency array and access it from state directly:- }, [dispatch, state.datasetName, editorContext] + }, [dispatch, editorContext]weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx (1)
81-146
: Dataset saving logic could be extracted to improve maintainability.The
handleSaveDataset
function contains significant logic for parsing, creating, and handling errors for dataset operations.Consider extracting the dataset creation logic to a separate utility function to improve separation of concerns and testability:
// Extract to a separate utility function const createAndNotifyDataset = async (dataset: any, params: { entity: string; project: string; tableCreate: any; objCreate: any; router: any; }) => { const isPublish = dataset.publishNow === true; // Parse the rows from string back to array if provided as a string const rows = typeof dataset.rows === 'string' ? JSON.parse(dataset.rows) : dataset.rows; try { // Create the dataset using the actual API function const result = await createNewDataset({ projectId: `${params.entity}/${params.project}`, entity: params.entity, project: params.project, datasetName: dataset.name, rows, tableCreate: params.tableCreate, objCreate: params.objCreate, router: params.router, }); // Show success message with link to the new dataset toast( <DatasetPublishToast message={isPublish ? 'Dataset published successfully!' : 'Dataset created successfully!'} url={result.url} />, { position: 'top-right', autoClose: 5000, hideProgressBar: true, closeOnClick: true, pauseOnHover: true, } ); return result; } catch (error: any) { console.error(`Failed to ${isPublish ? 'publish' : 'create'} dataset:`, error); toast.error(`Failed to ${isPublish ? 'publish' : 'create'} dataset: ${error.message}`); throw error; } };This would simplify the component code and improve testability.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts (1)
197-201
: Redundant case clause.The 'null' case is followed by a 'string' case and default that both return String(value), making the string case redundant.
You can simplify by removing the redundant case:
case 'null': return null; -case 'string': default: return String(value);
🧰 Tools
🪛 Biome (1.9.4)
[error] 198-198: Useless case clause.
because the default clause is present:
Unsafe fix: Remove the useless case.
(lint/complexity/noUselessSwitchCase)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
weave-js/yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (12)
weave-js/package.json
(2 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CellRenderers.tsx
(7 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/DatasetPublishToast.tsx
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/EditableDatasetView.tsx
(8 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/SelectDatasetStep.tsx
(2 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/__tests__/csvUtils.test.ts
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/datasetNameValidation.ts
(1 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx
(6 hunks)weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/ResizableDrawer.tsx
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
- weave-js/src/components/PagePanelComponents/Home/Browse3/pages/common/ResizableDrawer.tsx
- weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/DatasetPublishToast.tsx
- weave-js/package.json
- weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/SelectDatasetStep.tsx
- weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/datasetNameValidation.ts
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.{js,jsx,ts,tsx}`: Focus on architectural and logical i...
**/*.{js,jsx,ts,tsx}
: Focus on architectural and logical issues rather than style (assuming ESLint is in place).
Flag potential memory leaks and performance bottlenecks.
Check for proper error handling and async/await usage.
Avoid strict enforcement of try/catch blocks - accept Promise chains, early returns, and other clear error handling patterns. These are acceptable as long as they maintain clarity and predictability.
Ensure proper type usage in TypeScript files.
Look for security vulnerabilities in data handling.
Don't comment on formatting if prettier is configured.
Verify proper React hooks usage and component lifecycle.
Check for proper state management patterns.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/__tests__/csvUtils.test.ts
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CellRenderers.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/EditableDatasetView.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts
🪛 Biome (1.9.4)
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts
[error] 156-156: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 194-194: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 198-198: Useless case clause.
because the default clause is present:
Unsafe fix: Remove the useless case.
(lint/complexity/noUselessSwitchCase)
⏰ Context from checks skipped due to timeout of 90000ms (887)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, scorers)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, langchain)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, google_ai_studio)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, dspy)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, bedrock)
- GitHub Check: Trace nox tests (3, 13, anthropic)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, langchain)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, google_ai_studio)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, dspy)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, bedrock)
- GitHub Check: Trace nox tests (3, 13, anthropic)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, google_ai_studio)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, dspy)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, bedrock)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: test-query-service-matrix-check
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, dspy)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: test-query-service-matrix-check
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
- GitHub Check: WeaveJS Lint and Compile
- GitHub Check: Trace nox tests (3, 13, pandas-test)
- GitHub Check: Trace nox tests (3, 13, vertexai)
- GitHub Check: Trace nox tests (3, 13, openai)
- GitHub Check: Trace nox tests (3, 13, notdiamond)
- GitHub Check: Trace nox tests (3, 13, mistral1)
- GitHub Check: Trace nox tests (3, 13, mistral0)
- GitHub Check: Trace nox tests (3, 13, llamaindex)
- GitHub Check: Trace nox tests (3, 13, instructor)
- GitHub Check: Trace nox tests (3, 13, huggingface)
- GitHub Check: Trace nox tests (3, 13, groq)
- GitHub Check: Trace nox tests (3, 13, cerebras)
- GitHub Check: Trace nox tests (3, 13, trace_server)
- GitHub Check: Trace nox tests (3, 13, trace)
- GitHub Check: Trace nox tests (3, 12, pandas-test)
- GitHub Check: Trace nox tests (3, 12, scorers)
- GitHub Check: Trace nox tests (3, 12, vertexai)
- GitHub Check: Trace nox tests (3, 12, openai)
- GitHub Check: Trace nox tests (3, 12, notdiamond)
- GitHub Check: Trace nox tests (3, 12, mistral1)
- GitHub Check: Trace nox tests (3, 12, mistral0)
- GitHub Check: Trace nox tests (3, 12, llamaindex)
- GitHub Check: Trace nox tests (3, 12, litellm)
- GitHub Check: Trace nox tests (3, 12, langchain)
- GitHub Check: Trace nox tests (3, 12, instructor)
- GitHub Check: Trace nox tests (3, 12, google_ai_studio)
- GitHub Check: Trace nox tests (3, 12, huggingface)
- GitHub Check: Trace nox tests (3, 12, groq)
- GitHub Check: Trace nox tests (3, 12, dspy)
- GitHub Check: Trace nox tests (3, 12, cohere)
- GitHub Check: Trace nox tests (3, 12, cerebras)
- GitHub Check: Trace nox tests (3, 12, bedrock)
- GitHub Check: Trace nox tests (3, 12, anthropic)
- GitHub Check: Trace nox tests (3, 12, trace_server)
- GitHub Check: Trace nox tests (3, 12, trace)
- GitHub Check: Trace nox tests (3, 11, pandas-test)
- GitHub Check: Trace nox tests (3, 11, scorers)
- GitHub Check: Trace nox tests (3, 11, vertexai)
- GitHub Check: Trace nox tests (3, 11, openai)
- GitHub Check: Trace nox tests (3, 11, notdiamond)
- GitHub Check: Trace nox tests (3, 11, mistral1)
- GitHub Check: Trace nox tests (3, 11, mistral0)
- GitHub Check: Trace nox tests (3, 11, llamaindex)
- GitHub Check: Trace nox tests (3, 11, litellm)
- GitHub Check: Trace nox tests (3, 11, langchain)
- GitHub Check: Trace nox tests (3, 11, instructor)
- GitHub Check: Trace nox tests (3, 11, google_ai_studio)
- GitHub Check: Trace nox tests (3, 11, huggingface)
- GitHub Check: Trace nox tests (3, 11, groq)
- GitHub Check: Trace nox tests (3, 11, dspy)
- GitHub Check: Trace nox tests (3, 11, cohere)
- GitHub Check: Trace nox tests (3, 11, cerebras)
- GitHub Check: Trace nox tests (3, 11, bedrock)
- GitHub Check: Trace nox tests (3, 11, anthropic)
- GitHub Check: Trace nox tests (3, 11, trace_server)
- GitHub Check: Trace nox tests (3, 11, trace)
- GitHub Check: Trace nox tests (3, 10, pandas-test)
- GitHub Check: Trace nox tests (3, 10, scorers)
- GitHub Check: Trace nox tests (3, 10, vertexai)
- GitHub Check: Trace nox tests (3, 10, openai)
- GitHub Check: Trace nox tests (3, 10, notdiamond)
- GitHub Check: Trace nox tests (3, 10, mistral1)
- GitHub Check: Trace nox tests (3, 10, mistral0)
- GitHub Check: Trace nox tests (3, 10, llamaindex)
- GitHub Check: Trace nox tests (3, 10, litellm)
- GitHub Check: Trace nox tests (3, 10, langchain)
- GitHub Check: Trace nox tests (3, 10, instructor)
- GitHub Check: Trace nox tests (3, 10, google_ai_studio)
- GitHub Check: Trace nox tests (3, 10, huggingface)
- GitHub Check: Trace nox tests (3, 10, groq)
- GitHub Check: Trace nox tests (3, 10, dspy)
- GitHub Check: Trace nox tests (3, 10, cohere)
- GitHub Check: Trace nox tests (3, 10, cerebras)
- GitHub Check: Trace nox tests (3, 10, bedrock)
- GitHub Check: Trace nox tests (3, 10, anthropic)
- GitHub Check: Trace nox tests (3, 10, trace_server)
- GitHub Check: Trace nox tests (3, 10, trace)
- GitHub Check: Trace nox tests (3, 9, pandas-test)
- GitHub Check: Trace nox tests (3, 9, scorers)
- GitHub Check: Trace nox tests (3, 9, vertexai)
- GitHub Check: Trace nox tests (3, 9, openai)
- GitHub Check: Trace nox tests (3, 9, notdiamond)
- GitHub Check: Trace nox tests (3, 9, mistral1)
- GitHub Check: Trace nox tests (3, 9, mistral0)
- GitHub Check: Trace nox tests (3, 9, llamaindex)
- GitHub Check: Trace nox tests (3, 9, litellm)
- GitHub Check: Trace nox tests (3, 9, langchain)
🔇 Additional comments (30)
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CellRenderers.tsx (7)
47-47
: New prop to disable highlighting
IntroducingdisableNewRowHighlight
inCellViewingRendererProps
is a clean approach to controlling style behavior for newly added rows.
62-62
: Default value alignment
SettingdisableNewRowHighlight = false
ensures the existing new-row highlight remains the default behavior, minimizing regressions.
103-103
: Conditional background color
The updated check(isNew && !disableNewRowHighlight)
neatly maintains highlight logic while allowing it to be turned off as needed.
641-641
: ControlCellProps extension
AddingdisableNewRowHighlight?: boolean;
toControlCellProps
ensures consistent styling controls between viewing and control cells.Also applies to: 642-642
652-652
: Default flag value
HavingdisableNewRowHighlight = false
here matches the same default across the codebase, keeping behavior consistent.
667-669
: Direct conditional styling
Using a ternary forbackgroundColor
provides clear, concise logic for toggling new-row highlight.
685-685
: Ternary with disable check
Nicely extends the existing ternary to skip highlighting ifdisableNewRowHighlight
is true.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawer.tsx (4)
21-26
: Readable prop definitions
TheCreateDatasetDrawerProps
interface clearly documents the required callback props and optional creation state, making the component’s usage self-explanatory.
28-43
: High-level drawer component
Wrapping logic inCreateDatasetProvider
is a clean architectural decision, isolating state management from the UI logic.
79-87
: File upload validation
The file comparison ensures a CSV file is selected. As a security measure, consider validating further (e.g., checking the first few bytes for CSV format) to guard against incorrect MIME types or disguised files.
125-131
: Drag-and-drop minimal type check
CSV injection vulnerabilities can occur if malicious formulas are embedded (e.g., starting with “=”). Ensure the parser or subsequent handling sanitizes or escapes these to prevent potential CSV macro exploits, especially if users might open exported data in spreadsheet software.weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/EditableDatasetView.tsx (5)
49-56
: Good change making the interface exportable.The
DatasetObjectVal
interface is now properly exported, which improves reusability and allows other files to reference this type directly.
63-64
: Props extension is well implemented.New optional props with sensible defaults are added correctly. This enhances the component's flexibility, allowing consumers to control ID column visibility and row highlighting behavior.
Also applies to: 77-78
341-390
: Good refactoring of columns conditionals.The refactoring of the column generation logic is well-structured, with clear separation between the ID column and control column conditions. This improves readability and maintainability.
392-414
: Control cell is properly independent of ID column visibility.Good decision to make the control column inclusion independent of the ID column visibility. This ensures editing functionality remains intact even when the ID column is hidden.
454-454
: Props are correctly passed down to child components and dependencies updated.The new props are properly passed to child components and correctly added to the dependencies array in the useMemo hook, preventing potential stale closure issues.
Also applies to: 490-491
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/CreateDatasetDrawerContext.tsx (6)
1-28
: Well-structured context setup with comprehensive action types.The context setup follows best practices with clearly defined action types as constants. This makes state management more maintainable and helps prevent typos in action types.
31-64
: State interface and initial state are well defined.The state interface is comprehensive and includes all necessary properties for the drawer functionality. The initial state provides sensible defaults.
67-91
: Clean reducer implementation with proper type safety.The reducer function is well-structured with proper type annotations and a comprehensive switch statement handling all possible actions.
110-121
: Provider component design follows best practices.The
CreateDatasetProvider
component follows the React context provider pattern correctly, wrapping the inner provider with the necessary dataset edit context.
207-242
: Handler functions are focused and maintain clean state.The drawer management functions are well-implemented, with clear separation of concerns and proper state cleanup on close.
259-268
: Context hook includes proper error handling.The custom hook includes proper error checking to ensure it's used within the provider context, following React best practices.
weave-js/src/components/PagePanelComponents/Home/Browse3/pages/DatasetsPage/DatasetsPage.tsx (4)
14-16
: State and imports are properly set up for the new functionality.The necessary imports and state variables are correctly added to support the dataset creation functionality.
Also applies to: 38-46
73-79
: Handler functions are concise and focused.The drawer open/close handlers are simple and follow best practices for state updates.
160-203
: Drawer integration is well-implemented.The CreateDatasetDrawer is correctly integrated with proper props and state management. The loading state is properly passed to provide user feedback during dataset creation.
250-258
: New Dataset button conditionally rendered based on permissions.The button is correctly hidden for users without write permissions, following proper security practices.
weave-js/src/components/PagePanelComponents/Home/Browse3/datasets/csvUtils.ts (4)
3-19
: Well-defined interfaces for CSV parsing.The interfaces for parsed columns and parsing results are clearly defined with appropriate types, making the code more maintainable and type-safe.
21-64
: Comprehensive type detection with edge case handling.The
detectDataType
function handles various edge cases well, including proper ordering of type checks (checking booleans before numbers) and special handling for values like 'Infinity'.
66-134
: Column analysis with robust type inference.The column analysis function samples up to 100 non-null values for better type inference and includes special handling for boolean-like values. This creates a more accurate representation of the data.
230-274
: CSV parsing with proper async handling and error management.The
parseCSV
function uses promises correctly for async file operations and includes proper error handling for both file reading and parsing errors. The TextDecoder usage ensures proper character encoding support.
switch (type) { | ||
case 'number': | ||
const num = Number(value); | ||
return isNaN(num) ? value : num; | ||
case 'boolean': | ||
// Already a boolean | ||
if (typeof value === 'boolean') { | ||
return value; | ||
} | ||
// String representation of boolean | ||
if (typeof value === 'string') { | ||
const lowered = value.toLowerCase().trim(); | ||
if ( | ||
lowered === 'true' || | ||
lowered === 'yes' || | ||
lowered === '1' || | ||
lowered === 'y' | ||
) { | ||
return true; | ||
} | ||
if ( | ||
lowered === 'false' || | ||
lowered === 'no' || | ||
lowered === '0' || | ||
lowered === 'n' | ||
) { | ||
return false; | ||
} | ||
} | ||
// Number 1 or 0 | ||
if (typeof value === 'number') { | ||
if (value === 1) { | ||
return true; | ||
} | ||
if (value === 0) { | ||
return false; | ||
} | ||
} | ||
return value; | ||
case 'date': | ||
const date = new Date(value); | ||
return isNaN(date.getTime()) ? value : date; | ||
case 'null': | ||
return null; | ||
case 'string': | ||
default: | ||
return String(value); | ||
} | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Switch case declarations can cause scope issues.
The variable declarations in the switch cases could lead to scope issues.
Wrap the variable declarations in blocks to prevent them from being accessible from other cases:
case 'number':
+ {
const num = Number(value);
return isNaN(num) ? value : num;
+ }
case 'date':
+ {
const date = new Date(value);
return isNaN(date.getTime()) ? value : date;
+ }
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
switch (type) { | |
case 'number': | |
const num = Number(value); | |
return isNaN(num) ? value : num; | |
case 'boolean': | |
// Already a boolean | |
if (typeof value === 'boolean') { | |
return value; | |
} | |
// String representation of boolean | |
if (typeof value === 'string') { | |
const lowered = value.toLowerCase().trim(); | |
if ( | |
lowered === 'true' || | |
lowered === 'yes' || | |
lowered === '1' || | |
lowered === 'y' | |
) { | |
return true; | |
} | |
if ( | |
lowered === 'false' || | |
lowered === 'no' || | |
lowered === '0' || | |
lowered === 'n' | |
) { | |
return false; | |
} | |
} | |
// Number 1 or 0 | |
if (typeof value === 'number') { | |
if (value === 1) { | |
return true; | |
} | |
if (value === 0) { | |
return false; | |
} | |
} | |
return value; | |
case 'date': | |
const date = new Date(value); | |
return isNaN(date.getTime()) ? value : date; | |
case 'null': | |
return null; | |
case 'string': | |
default: | |
return String(value); | |
} | |
}; | |
switch (type) { | |
case 'number': { | |
const num = Number(value); | |
return isNaN(num) ? value : num; | |
} | |
case 'boolean': | |
// Already a boolean | |
if (typeof value === 'boolean') { | |
return value; | |
} | |
// String representation of boolean | |
if (typeof value === 'string') { | |
const lowered = value.toLowerCase().trim(); | |
if ( | |
lowered === 'true' || | |
lowered === 'yes' || | |
lowered === '1' || | |
lowered === 'y' | |
) { | |
return true; | |
} | |
if ( | |
lowered === 'false' || | |
lowered === 'no' || | |
lowered === '0' || | |
lowered === 'n' | |
) { | |
return false; | |
} | |
} | |
// Number 1 or 0 | |
if (typeof value === 'number') { | |
if (value === 1) { | |
return true; | |
} | |
if (value === 0) { | |
return false; | |
} | |
} | |
return value; | |
case 'date': { | |
const date = new Date(value); | |
return isNaN(date.getTime()) ? value : date; | |
} | |
case 'null': | |
return null; | |
case 'string': | |
default: | |
return String(value); | |
} | |
}; |
🧰 Tools
🪛 Biome (1.9.4)
[error] 156-156: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 194-194: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
[error] 198-198: Useless case clause.
because the default clause is present:
Unsafe fix: Remove the useless case.
(lint/complexity/noUselessSwitchCase)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving. Lets merge this first thing Monday.
In my PR: #3876 i supported more file types and custom column selection. I suspect we will want to add this soon.
Description
Adds a "New dataset" button to the datasets page. Clicking the button opens a drawer which allows the user to upload a csv, make edits, and publish the result as a new dataset.
Screen.Recording.2025-03-04.at.1.42.18.PM.mov
This PR adds papaparse as a dependency for
weave-js
Summary by CodeRabbit
New Features
Style
Refactor
ResizableDrawer
component to include header content.