├── .github └── ISSUE_TEMPLATE │ └── bug_report.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md └── SECURITY.md /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | 12 | ## Environment data 13 | 14 | - VS Code version: XXX 15 | - Data Wrangler Extension version (available under the Extensions sidebar): XXX 16 | - Jupyter Extension version (available under the Extensions sidebar): XXX 17 | - Python Extension version (available under the Extensions sidebar): XXX 18 | - OS (Windows | Mac | Linux distro) and version: XXX 19 | - Pandas version: XXX 20 | - Python and/or Anaconda version: XXX 21 | - Type of virtual environment used (N/A | venv | virtualenv | conda | ...): XXX 22 | 23 | ## Expected behaviour 24 | 25 | XXX 26 | 27 | ## Actual behaviour 28 | 29 | XXX 30 | 31 | ## Steps to reproduce: 32 | 33 | [**NOTE**: Self-contained, minimal reproducing code samples are **extremely** helpful and will expedite addressing your issue] 34 | 35 | 1. XXX 36 | 37 | 40 | 41 | ## Logs 42 | 43 |
44 | 45 | Output for Jupyter in the Output panel (ViewOutput, change the drop-down the upper-right of the Output panel to Jupyter) 46 | 47 | 48 |

49 | 50 | ``` 51 | XXX 52 | ``` 53 | 54 |

55 |
56 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## Version 1.22.0 4 | ### Updates 5 | - Added opt-in setting `dataWrangler.outputRenderer.enabledTypes` to enable the Data Wrangler output renderer for additional supported data types in the Jupyter notebook, including Polars, Numpy, and more. 6 | - Added a data slicing control to improve viewing scenarios when working with multi-dimensional data (previously, it was only possible to view multidimensional data as nested lists within table cells which was not very useful). For more information on the supported types and usage, see the following [wiki](https://github.com/microsoft/vscode-data-wrangler/wiki/Slicing-data-using-the-slice-control). 7 | - File exports now use less memory and make fewer calls to the runtime. 8 | - The sum of values in numeric columns can now be seen via the statistics panel. 9 | - Added additional Python version metadata to the runtime selection dropdown to help clarify Python environments when loading local files. 10 | 11 | ### Bugfixes 12 | - Fixed an issue where FlashFill operation type metadata was not being preserved, which led to certain non-string columns being treated as strings. 13 | - Fixed an issue where certain variable names were being clobbered, which led to some variables with specific names being unable to be launched while debugging. 14 | - Fixed an issue where exporting data when editing an output created with `display()` would fail. 15 | 16 | ## Version 1.20.1 17 | ### Bugfixes 18 | - Fixed an issue where output references were not being properly disposed. 19 | 20 | ## Version 1.20.0 21 | ### Updates 22 | - Improved the display of error messages shown before the data is loaded. 23 | - Added an indicator next to required fields for improved clarity. 24 | 25 | ### Accessibility improvements 26 | - Added screen reader announcement when searching for operations and there are no results 27 | - Improved labeling of form fields and buttons in filter operations. 28 | 29 | ### Bugfixes 30 | - Fixed an issue where an error message appeared in the output above DataFrames that subclass Pandas DataFrames (e.g., GeoDataFrame). 31 | - Fixed an issue where a KeyError would sometimes be thrown when launching Data Wrangler while debugging with Python 3.12. 32 | - Fixed an issue where changing kernels could fail if the currently selected kernel had also failed to load the data, such as due to missing dependencies. 33 | - Fixed a few minor styling issues. 34 | 35 | ## Version 1.18.2 36 | - General bugfixes and improvements. 37 | 38 | ## Version 1.18.1 39 | ### Bugfixes 40 | - Fixed an issue where the output renderer was not rendering correctly in vscode.dev. 41 | 42 | ## Version 1.18.0 43 | ### Updates 44 | - Data Wrangler is now supported in Jupyter notebook outputs! 🎉 The new output renderer provides a compact viewer for quick explorations within the notebook and can be invoked by producing a Pandas DataFrame expression in the last line of a cell or by displaying it with `display()`. 45 | - The Copilot prompt widget for Edit mode is now shown by default to help users discover GitHub Copilot Free. This can be disabled by setting `dataWrangler.experiments.copilot.enabled` to false. 46 | - CSV file export now preserves the initial delimiter if opened from a CSV file. 47 | 48 | ### Bugfixes 49 | - Fixed an issue where changing a kernel would still use the old cached kernel until VS Code was reloaded. 50 | - Fixed a few minor styling issues. 51 | 52 | ## Version 1.16.0 53 | ### Updates 54 | - Optimized loading performance when viewing datasets that present specific cases like memory fragmentation, or low kernel performance. 55 | - Improvements to the loading view with an updated shimmer. 56 | - Reduced jitteriness when applying operations while scrolled down in the grid. 57 | - Added new quick filter mode to search for values by string. This should help address the need for simple faster filtering. The original filter menu can be accessed by showing advanced options or shown by default using the `dataWrangler.defaultViewingFilterOptions` setting. 58 | - Updated the column width default to be a fixed width of 200px. This value is configurable with the `dataWrangler.grid.defaultColumnWidth` setting. 59 | - Improved the display of columns at smaller widths by condensing column insights and header buttons. 60 | 61 | ### Bugfixes 62 | - Fixed an issue where a named index would not be included in CSV exports if it was a MultiIndex. 63 | - Fixed a styling issue causing panels to use the wrong background color. 64 | - Fixed an issue causing performance issues when loading DataFrames using the interchange protocol API. 65 | - Fixed an issue where the Ctrl+Tab VS Code shortcut would not work when the data grid was focused. 66 | - Fixed an error that could occur when previewing changes to nested arrays. 67 | 68 | ## Version 1.14.0 69 | ### Updates 70 | - Added new setting `config.dataWrangler.panels.displayOnTabFocus` which can optionally disable Data Wrangler's bottom and side panels from being automatically re-opened when a user starts Data Wrangler or clicks on one of its windows. 71 | - Sorting and filtering by the index column is now supported. The index can also be renamed when in editing mode. 72 | - Removed the header text label for default (unmodified) index columns. 73 | - Column insights and summary stats are now shown for user-set index columns. 74 | - Added support for copying cell contents using keyboard shortcuts (ctrl+C or cmd+C). 75 | - Added optimizations for variable import to support different viewing strategies, which should generally improve the layout of the data on import (e.g., support for list of dictionaries, using index orientation for flat dictionaries). 76 | - Added support for PySpark Connect DataFrames. 77 | - Derivative DataFrame classes are now supported when Pandas converters exist (e.g., toPandas(), to_pandas(), interchange API). 78 | - Added ability to edit the initial code when importing a variable, similar to how it is possible to edit for file imports. 79 | - Improvements to automatically generated diffs when previewing custom operations. 80 | - Removed the "Use Jupyter Proposed API" setting. The API is stable and now used by default. 81 | - Show a more descriptive error message when access has not been granted to the Jupyter kernel. 82 | - Added a warning message for users with invalid `extensions.experimental.affinity` setting. Namely, when the affinity value doesn't match the one set in all the extensions that Data Wrangler depends on. 83 | - Small context menu style tweaks. 84 | 85 | ### Bugfixes 86 | - Fixed an issue where the "missing value" label would sometimes not be visible in the grid. 87 | - Fixed an issue where the second click on a sort/filter view tag would not close the context menu. 88 | - Fixed an issue where filtering for isMissing or isNotMissing in compatibility mode would no-op as values are always casted to strings. 89 | 90 | ## Version 1.12.0 91 | ### Updates 92 | - Added a new Copilot-powered prompt widget above the code editor to generate data-aware code using natural language. This feature can be enabled from the VS Code extension settings page for Data Wrangler, and requires both the [GitHub Copilot Chat VS Code extension](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat) and having an active [Copilot Subscription](https://github.com/features/copilot). 93 | 94 | ## Version 1.10.0 95 | ### Updates 96 | - Improved error messaging for unsupported variable types. 97 | - Added experimental support for loading PySpark DataFrame variables. This can be enabled using the `dataWrangler.experiments.datatypes.pyspark` setting. 98 | - Added experimental support for JSONL files. This can be enabled using the `dataWrangler.enabledFileTypes.jsonl` setting. 99 | 100 | ### Bugfixes 101 | - Fixed an issue where the order of copied rows was sorted incorrectly. 102 | - Fixed an issue where overridden built-ins could cause launch to fail. 103 | 104 | ## Version 1.8.1 105 | ## Bugfixes 106 | - Fixed an issue causing the extension to crash on older VS Code versions. 107 | - Fixed an issue preventing subsequent debug data viewer launches when multiple debug sessions have the same ID. 108 | 109 | ## Version 1.8.0 110 | ### Updates 111 | - Added extra fallback for debug launch scenario to help increase reliability. 112 | - Added an option to disable showing column header stats on initialization. This can be useful in some workflows where column stats are not needed. 113 | - New operation parameters 114 | - (Drop missing values) specify how many values must be missing from the selected columns for a row to be dropped. 115 | - (Split text) specify a maximum number of splits allowed. 116 | 117 | ### Bugfixes 118 | - Fixed a launch issue affecting interactive window Python debugging using older IPython versions. 119 | - Fixed an issue that could cause datasets with extremely long string values to get stuck loading indefinitely. 120 | 121 | ## Version 1.6.0 122 | ### Updates 123 | - Raised the minimum required version of Pandas from 0.25.4 to 1.2.0. 124 | - Added support for the "View data" toolbar menu in interactive window notebook. 125 | - Shortened tab length and swapped editor icon to use color. 126 | - Updated overflow logic for numeric fields to hide from the right side instead of the left. 127 | - Small theming improvements. 128 | 129 | ### Bugfixes 130 | - Fixed an issue where numeric data could be incorrectly formatted under certain circumstances such as when there is a column of complex values elsewhere. 131 | - Fixed an issue where the notebook kernel for IPYNB files was not always automatically reconnecting after a debug session terminated. 132 | - Fixed an issue where the datetime picker would render incorrectly when using the "Find and replace" operation on a datetime field. 133 | - Fixed an issue where missing dependencies were not being prompted for install. 134 | - Fixed an issue where package dependencies may not be correctly detected in some Python configurations. 135 | - Fixed an issue where opening Data Wrangler from a long file path with the "Debug" setting enabled would cause stability issues. 136 | 137 | ## Version 1.4.2 138 | ### Bugfixes 139 | - Fixed an issue where the filter menu would sometimes disappear when working with certain datasets. 140 | 141 | ## Version 1.4.1 142 | ### Bugfixes 143 | - Fixed an issue causing data export (ie. to CSV or Parquet) to fail when debugging a Python file. 144 | 145 | ## Version 1.4.0 146 | ### Updates 147 | - Added basic support for displaying nested DataFrames and Series in the grid as text. 148 | - Added support for GPU-backed and sparse PyTorch tensors. 149 | - When exporting to CSV, the data index will now be included if it has been changed from the default index (for example if `set_index` has been used). 150 | - Custom operations now use isolated scoping. This means that variables declared in operations are now fully isolated from one another and can be easily undone when the operation is removed. 151 | - Data Wrangler is now supported on local VS Code servers started with `code serve-web`. 152 | - Removed dependency on setuptools. This will remove an extra install step needed for environments that do not have it. 153 | 154 | ### Bugfixes 155 | - Fixed an issue where backslashes were double-escaped in the code to load data from a file. 156 | 157 | ## Version 1.2.1 158 | ### Bugfixes 159 | - Fixed an issue causing spurious error messages when the new Jupyter extension API is enabled. 160 | 161 | ## Version 1.2.0 162 | ### Updates 163 | - Improved performance of column statistics calculations when working with non-hashable data, especially numpy arrays. 164 | - Added handling for Python `bytes` data with invalid UTF-8 sequences. 165 | - “By Example” operations no longer fail after a timeout and can now be cancelled if it is taking too long. This allows the user to have more flexibility to decide if they want to wait for more complex generations. 166 | - Added support for launching Data Wrangler from the "View Value in Data Viewer" debugger variables context menu for both `.py` and `.ipynb` files. Please ensure that you are using VS Code version 1.90.0 or higher (Insiders only as of May 31 2024) and using the latest `prerelease` version of the Jupyter extension. 167 | 168 | ### Bugfixes 169 | - Fixed an issue affecting Mac machines where certain input events such as copy pasting and selecting all text were not working in the Viewing mode filter context menu form. 170 | - Fixed an issue that could prevent Data Wrangler from opening on systems with improperly configured locales. 171 | - Fixed an issue where Data Wrangler launch would hang when opening from an interactive notebook with an active debug session. 172 | 173 | ## Version 1.0.2 174 | ### Updates 175 | - Added support for additional DataFrame types. 176 | 177 | ## Version 1.0.0 178 | ### Updates 179 | - **Web support added! 🎉** Data Wrangler is now supported in the browser for notebook entry points. You can try installing the extension in vscode.dev. 180 | - Added support for viewing data from a notebook while in debugging mode. 181 | - Data Wrangler has a vibrant new icon! 182 | - Data Wrangler is now available in 14 display languages supported by Visual Studio Code. 183 | - The “preview” label in the extension name and marketplace entry have been removed. 184 | - Changed .NET to be an optional dependency. When attempting to use "by example" operations for the first time, a prompt will be shown to ask users if they want to install .NET. This should lead to a smoother experience for users who are unable to install .NET in certain environments. 185 | - Added the functionality to delete the most recently committed history step, even when a preview is active on it, which can save time by not requiring discarding the step before deletion. 186 | - One-hot encode now generates code to create columns next to the targets instead of at the end. This makes it easier to verify by not having to scroll to the end of the grid to see the new results. 187 | - Updated the cell status bar entrypoint label to: "Open in Data Wrangler". This makes it easier for new users to discover. 188 | - Statistics are now displayed with greater precision in the summary panel. 189 | - Added a documentation link in input box for setting up JupyterLab kernels. This will help users who are unfamiliar with Jupyter to set up their environment. 190 | - Several experimental features have been upgraded to a stable state and their associated flags in VS Code settings have been removed. These had previously been enabled by default and so should result in no change for most users. 191 | - Error stack traces are now displayed using a VS Code terminal instead of a text editor. This improves color contrast and enables line highlights to be displayed in some cases. 192 | - Added support for Jupyter extension version 2024.3.2024030101 and above. 193 | - Updated the “Auto Detect Csv Delimiter” experimental setting to be disabled by default. 194 | 195 | ### Accessibility improvements 196 | - Automatically move keyboard focus to the operations panel when an operation is triggered using the grid context menu. 197 | - Improved ARIA role for the "truncate the data" button when loading large files. 198 | - Enable resizing columns in the grid via keyboard by pressing Ctrl + Alt + Left/Right. 199 | - Ensure that focus outlines are visible on disabled toolbar items. 200 | - Improved titles in extension webviews for a clearer experience when using a screen reader. 201 | - Use the application role within webviews for improved accessibility when using a screen reader. 202 | 203 | ### Bugfixes 204 | - Fixed a typo in the settings description for "Start in edit mode for notebook entrypoints" that referred to viewing mode instead of editing. 205 | - Fixed an issue where the Data Viewer would launch in viewing mode even if set to open in editing mode by default. 206 | - Fixed an issue where the "View data" notebook toolbar item was accessible when a non-notebook editor window was focused, but would be unable to load Data Wrangler. 207 | - Fixed an issue where the "View data" notebook toolbar item would disappear when focusing dialog windows. 208 | - Fixed an issue where data loading with nested numpy arrays would crash on load. 209 | - Fixed an issue where an error notification could appear after closing Data Wrangler before it has finished connecting to the runtime. 210 | - Fixed an issue where very large numeric values could lose precision when displayed in the grid or statistics. 211 | - Fixed an issue where the sort and filter commands were available in the command palette even when they should be disabled. 212 | - Fixed an issue where the variable name displayed in the "custom operation" help text could sometimes be incorrect. 213 | - Fixed an issue where one-hot encoding more than one column would not delete all of the original columns. 214 | - Fixed an issue where PyTorch Tensor objects would fail to open in Data Wrangler when opened from a notebook. 215 | - Fixed an issue where notebooks created via export would be unable to open the data viewer without reloading. 216 | - Fixed an issue where the Data Wrangler extension was not being activated for interactive notebooks. 217 | 218 | 219 | ## Version 0.28.0 220 | ### Updates 221 | - Progress messages while previewing, undoing, discarding and committing operations now only appear after a short delay. This reduces flickering of notifications when several actions happen in a short time span. 222 | - Added a delayed progress message for the View data toolbar menu item when the kernel is busy to make it clear that there is a pending background task. 223 | 224 | ### Accessibility improvements 225 | - Improved color contrast of various UI controls in some VS Code themes. 226 | - Improved visibility of keyboard focus outlines across the UI. 227 | - The code preview panel will now display the text cursor even when the code is not editable. This enables users to select code more easily using only the keyboard. 228 | - Improved keyboard navigation order for some controls. 229 | 230 | ### Bugfixes 231 | - Fixed an issue where filter was being re-executed when switching from Editing to Viewing mode with the filters panel open. 232 | 233 | ## Version 0.26.0 234 | ### Updates 235 | - Introducing a data viewing mode for Data Wrangler, which integrates into the Jupyter Notebooks data viewer. The new data viewing mode provides a lightweight and faster experience for quickly viewing, sorting and filtering data. This mode is now the default Data Wrangler entrypoint from the notebook, which can be disabled from setting to default back to the original editing mode. To manually enter this mode, select “Viewing” in the mode toggle in the toolbar. 236 | - The data import step can now be edited like any other step when data has been loaded from a file. Some basic arguments have been added including file path, delimiter, and page # for Excel files. 237 | - Added a confirmation dialog when clicking "Back to all operations" for custom operations to warn potential loss of code. 238 | - Improvements to list and dict variable loading support. 239 | - Clicking on the data shape now also reveals the summary panel. 240 | 241 | ### Accessibility Improvements 242 | - Improved keyboard accessibility for several links and buttons across the UI. 243 | - Improved screen reader announcements after loading data, accepting/rejecting/undoing operations, and more. 244 | - Improved contrast of various UI elements in some themes. 245 | - Added or fixed ARIA labels, roles, and attributes in several places, including: 246 | - Tree view in the summary panel 247 | - Sortable lists in sort, filter, and group by operation arguments 248 | - Argument fields in sort and filter operations 249 | - Sort and filter buttons in the grid cells and toolbar 250 | - And more... 251 | 252 | ### Bugfixes 253 | - No longer shows the "Open source file in basic editor" button for sessions entered from the notebook as it was always disabled. 254 | - Fixed issue where operations found in the search bar required a double click to select. 255 | - Minor theming fixes. 256 | 257 | ## Version 0.24.1 258 | ### Updates 259 | - Added support for Jupyter extension versions `v2024.2.2024020201` and higher. 260 | 261 | ## Version 0.24.0 262 | ### Updates 263 | #### Files 264 | - Added support for opening Data Wrangler from XLSX, XLS, and TSV files. 265 | - When opening a file in Data Wrangler, a prompt will now offer to configure Data Wrangler as the default editor for all files with that extension. 266 | - When opening a CSV file in Data Wrangler, the column delimiter is now automatically detected. This enables users to easily open CSV data separated by tabs, semicolons, spaces, etc. This behavior can be disabled from the extension settings. 267 | 268 | #### Notebooks 269 | - The old cell output launch button has been deprecated and removed. It is now replaced with a cell status bar entrypoint using the same launch criteria. 270 | - The following data types are now also supported: Pandas Series, Lists, Dicts, Tensors. 271 | - It is now possible to also launch using display(variable_name), print(variable_name) at the end of a cell. 272 | - Added a new launch entrypoint from the notebook toolbar which displays a list of all variables that can be opened in Data Wrangler. 273 | - Entering from the notebook now displays a shimmer and missing dependencies are installed using popups. This should make it faster to get started. 274 | - Add experimental setting to enable use of newly proposed Jupyter extension APIs for code execution. 275 | 276 | #### Operations 277 | - Added compatibility mode for the Sort and Filter operations to cast unknown data types into the string type. This will allow all columns to be filterable and sortable regardless of the contents. 278 | - Filter operation now supports a shorthand way to specify additional conditions on the same column. 279 | - Small performance optimizations for sort, filter and group by and aggregate to skip code execution when adding and deleting groups. 280 | 281 | #### Statistics 282 | - Improved the appearance of visualizations on columns with mixed data. 283 | - Improve histogram binning for float columns with only integer values. 284 | - Avoid recalculating column statistics if rows are simply reordered by a custom operation. 285 | 286 | #### UX 287 | - Updates to statistics in the summary panel are now visually smoother and have less flickering. 288 | - Added minimum width to dropdown UI to improve visibility of controls when panels are small. 289 | - Improvements to notification of kernel reload. It now shows progress per cleaning step. 290 | - Minor improvements to error stack traces. 291 | - The executed code and stack trace can now be inspected when an error occurs while loading data. 292 | - Parquet export is now enabled by default. If pyarrow is not installed, then a prompt will appear to install it. 293 | 294 | ### Bugfixes 295 | - Fixed an issue where column visualizations could sometimes fail to update when the data changes. 296 | - Fixed an issue where multi-selecting columns would also select the column text. 297 | - Fixed an issue where the launch entrypoints would not work if pandas and numpy are not installed. 298 | - Fixed an issue where the column visualizations would not be displayed if the “View Past Code Steps” setting was set to “Enabled”. 299 | - Fixed an issue where the example code snippet in the Code Preview panel could refer to a non-existent column name. 300 | 301 | 302 | ## Version 0.22.3 303 | ### Updates 304 | * Support for Pandas 2.2.0 305 | 306 | ## Version 0.22.2 307 | ### Bugfixes 308 | * Fixed an issue where "Sort Descending" was setting the sort order to ascending when invoked from the context menu. 309 | 310 | ## Version 0.22.1 311 | ### Bugfixes 312 | * Fixed an issue where column visualizations could sometimes fail to update when the data changes 313 | 314 | ## Version 0.22.0 315 | ### Updates 316 | * Updates to the Filter, Sort, and Group By and Aggregate operations 317 | * UX made more compact with fewer dropdowns 318 | * Groups can now be reordered using drag handle or menu 319 | * Missing parameters will no longer break the preview 320 | * It is now possible to perform a group by without aggregations 321 | * Miscellaneous styling updates to make operations more compact 322 | 323 | ### Bugfixes 324 | * Fixed an issue where, in certain scenarios, some loading failures would occur without generating an error message. This fix will facilitate the identification of issues during the startup process. 325 | * For Python packages where the imported name differs from the package name (e.g., import sklearn vs. package name scikit-learn), Data Wrangler now uses the correct package name when suggesting installation. It does this by keeping an internal mapping of import name to package name for the most commonly used Python packages. 326 | 327 | ## Version 0.20.0 328 | ### Updates 329 | * Missing values are now displayed with a different style in the grid. 330 | * Percentages in column statistics now show "<1%" instead of "0%" when the ratio is below 1% but non-zero. Similar behavior applies to ratios between 99% and 100%. 331 | * It is now possible to export code and data without having to first perform operations. This will allow users additional flexibility with generating import code and with exporting into different file formats. Note: when entering Data Wrangler from a notebook, it will still be required to do operations before exporting the code. 332 | * When an operation fails due to a missing package (such as when importing in a custom operation), Data Wrangler will now display a button to quickly install the missing package based on the imported name. 333 | * Removed the requirement to install `regex` package when loading Data Wrangler. 334 | 335 | ### Accessibility improvements 336 | * Ensure that all content within the operations and code preview panels remains accessible even at high zoom level. 337 | * Added the ability to select operations using a keyboard. 338 | * Operation preview status is now announced when using a screen reader. 339 | * Added or fixed ARIA labels, roles, and attributes in several places, including: 340 | * Tree views in the operations and summary panels 341 | * Operation argument fields 342 | * Column type and status icons 343 | * Icon-only buttons in the grid and operations panel 344 | 345 | ### Bugfixes 346 | * Fixed an issue where the most frequent value was not shown in the summary panel for DateTime or Boolean columns. 347 | * Fixed an issue in numeric histograms where values lying very close to bucket boundaries could sometimes be placed in the wrong bucket. 348 | * Fixed an issue where the code preview panel would not have a title if moved to a different location in the VS Code UI. 349 | * Fixed issue where overriding definitions from the builtins namespace could cause runtime errors. 350 | * Fixed issue where toolbar overflow behaviour was broken. Menu items now move into an overflow menu when there is not enough space. 351 | * Fixed an issue where the placeholder text in the code preview panel could overflow with no available scrollbar. 352 | * Resize the icon for the "Open in Data Wrangler" button, as it was getting cut off in recent versions of VS Code. 353 | 354 | ## Version 0.18.0 355 | ### Updates 356 | * Added new "Go to column" button to reveal and smoothly scroll to a target column in the grid. 357 | * Issue report button now also includes relevant Python package information in the report. 358 | * Launching Data Wrangler from a Jupyter notebook now opens multiple tabs when the same variable name is launched. 359 | * To maximize screen real estate, users can now show or hide the column statistics that appear on the column headers. 360 | * When using a Filter operation, users can now invert the filter conditions by choosing between “Keep matching rows” and “Delete matching rows”. 361 | * Enabled keyboard-accessible tooltips on cleaning steps for improved accessibility. 362 | 363 | ### Bugfixes 364 | * Double clicking on a column now correctly expands to the full width of the column. 365 | * Fixed issue where the launch button would sometimes not appear after running a cell. 366 | 367 | ## Version 0.16.0 368 | **Deprecation notice** 369 | * The `mad` (Mean Absolute Deviation) aggregation type has been removed from the Group By and Aggregate operation as it is no longer available in pandas. 370 | 371 | ### Updates 372 | * Improved support for detecting conditional formulas in the "by example" operations. 373 | * Improved keyboard accessibility by enabling keyboard focus on elements in the Cleaning Steps panel. 374 | * Improved keyboard accessibility in the Grid view by reducing the number of tab stops. Once focused, the grid can be navigated using the arrow keys, page up / down, home, etc. 375 | 376 | ### Bugfixes 377 | * Fixed issue where data frames with duplicate index keys could not be properly viewed or wrangled. Please note for this scenario that there are some limitations with generating the diff previews, these are outlined [here](https://github.com/microsoft/vscode-data-wrangler/wiki/Known-Issues#pandas-dataframes-with-duplicate-index-keys). 378 | 379 | ## Version 0.14.0 380 | ### Updates 381 | * Added support for exporting data in the Parquet format. The users can enable this option in the settings, and the feature will be enabled by default on a future version. 382 | * Improvements to column visualizations including adjustments to accessibility labels and improved formatting of tooltip contents. 383 | 384 | ### Bugfixes 385 | * Fixed an issue where Data Wrangler was expanding all VS Code panels (bottom panel and sidebars) even when the Data Wrangler tab was being unfocused. 386 | * Fixed an issue where the wrong column would sometimes be selected for operations when columns are dynamically disabled (e.g., Fill NA). 387 | 388 | ## Version 0.12.0 389 | ### Updates 390 | * Added the ability to copy one or more selected data rows via the grid cell context menu. 391 | * Added command "Reveal Source File in Explorer View" which reveals the original source dataset file in the file explorer pane. 392 | * The operation list expansion state now persists across operations, and is unique to each Data Wrangler tab. 393 | * Enabled additional code editor features in the code preview panel, such as copy/pasting via the context menu, and dragging-and-dropping text content into the editor. 394 | * Column insights are now rendered using a library with much better accessibility support, including keyboard navigation, screen reader feedback, and more. 395 | * Added options "Match full string", "Match case", and "Use regular expression" to operation "Find and replace". 396 | * Added new numerical operations "Round", "Round down (floor)", and "Round up (ceiling)". 397 | 398 | ## Version 0.10.0 399 | ### Updates 400 | * Exports to CSV can now be cancelled before completing, via the VS Code toast notification. 401 | 402 | ### Bugfixes 403 | * Fixed an issue where errors may not be caught in some cases when using IPython version 8.12.1 or above. 404 | 405 | ## Version 0.8.0 406 | ### Updates: 407 | * In "Find and replace" operation, surface a form field error if the "Old value" field is left empty. 408 | * Improve readability of code example in code editor placeholder text by showing `df = df.drop(columns=['ColumnName'])` instead of `df = drop('ColumnName', axis=1)`. 409 | * Removed the `inplace=True` and `copy=False` parameters from generated pandas code, as those aren't considered best practice and [are being considered for deprecation](https://github.com/pandas-dev/pandas/pull/51466) in Pandas. 410 | * Improved support for all VS Code themes. 411 | 412 | ### Bugfixes: 413 | * In "Find and replace" operation, preserve the contents of fields "Old value" and "New value" when "Target columns" is changed. 414 | * Fixed an issue where timestamps ignored time zone information when displayed in the grid. 415 | * Fixed an issue for the context menu to disable the context menu operations when required. 416 | * Fixed issue where the operation panel collapses when clicking on the grid. 417 | * Fixed an issue where errors may not be caught in some cases when using IPython version 8.12.1 or above. 418 | 419 | ## Version 0.6.0 420 | ### Updates: 421 | * Jupyter extension installer now installs the stable version instead of pre-release to improve stability for the first install experience. 422 | * The Data Wrangler software requires Python 3.8 or a later version to run as older versions of Python are losing support from several open-source libraries used by Data Wrangler. 423 | * When exporting code to a new Jupyter notebook, Data Wrangler will now carry over the compute selection. This way, a user will no longer need to manually choose the same compute a second time after exporting. Note: This change only applies to the “Local Python Interpreter” connection method and is currently only available when using the preview version of the Jupyter extension for VS Code. 424 | * Updated the example Titanic dataset to add a column that was missing. 425 | 426 | ### Bugfixes: 427 | * Fixed an issue where the tooltip for unsupported data types was pointing to the wrong element. 428 | * Fixed an issue where an error would be thrown for the "Calculate Text Length" operation when changing targets with a custom column name set. 429 | 430 | ## Version 0.4.0 431 | * General bug fixes and improvements 432 | 433 | ## Version 0.2.1 434 | 435 | ### Bugfixes: 436 | * Fixed an issue where the grid would sometimes experience problems after performing an operation that involved editing it. 437 | 438 | ## Version 0.2.0 439 | * _First release of Data Wrangler! 🎉_ 440 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | All VS Marketplace extensions, including this Data Wrangler Extension for Visual Studio Code, must also be used consistent with the VS Marketplace Terms of Use at http://aka.ms/VSMarketplace-TOU 2 | MICROSOFT PRE-RELEASE LICENSE TERMS 3 | MICROSOFT DATA WRANGLER EXTENSION FOR VISUAL STUDIO CODE 4 | 5 | These license terms are an agreement between you and Microsoft Corporation (or one of its affiliates). They apply to the pre-release software named above and any Microsoft services or software updates (except to the extent such services or updates are accompanied by new or additional terms, in which case those different terms apply prospectively and do not alter your or Microsoft’s rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. 6 | 1. INSTALLATION AND USE RIGHTS. 7 | a) General. You may install and use any number of copies of the software only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Codespaces, Azure DevOps, Team Foundation Server, and successor Microsoft products and services (collectively, the “Visual Studio Products and Services”) to develop and test your applications. 8 | b) Third Party Components. The software may include third party components with separate legal notices or governed by other agreements, as may be described in the notices file(s) accompanying the software. Use of services from OpenAI is governed by separate terms between you and OpenAI, and Microsoft is not a party to such agreements. 9 | 2. PRE-RELEASE SOFTWARE. This software is a pre-release version. It may not operate correctly or work the way a final version will. Microsoft may change it for the final, commercial version. Microsoft is not obligated to provide maintenance, technical support or updates to you for the software. 10 | 3. FEEDBACK. If you give feedback about the software to Microsoft, you give to Microsoft, without charge, the right to use, share and commercialize your feedback in any way and for any purpose. You will not give feedback that is subject to a license that requires Microsoft to license its software or documentation to third parties because we include your feedback in them. These rights survive this agreement. 11 | 4. TIME-SENSITIVE SOFTWARE. 12 | • Period. This agreement is effective on your acceptance and terminates on the earlier of (i) 30 days following first availability of a commercial release of the software or (ii) upon termination by Microsoft. Microsoft may extend this agreement in its discretion. 13 | • Notice. You may receive periodic reminder notices of this date through the software. 14 | • Access to data. You may not be able to access data used in the software when it stops running. 15 | 5. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. For clarification Microsoft, or its licensors, retains ownership of all aspects of the software. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. For example, if Microsoft technically limits or disables extensibility for the software, you may not extend the software by, among other things, loading or injecting into the software any non-Microsoft add-ins, macros, or packages; modifying the software registry settings; or adding features or functionality equivalent to that found in Microsoft products and services. You may not: 16 | a) work around any technical limitations in the software that only allow you to use it in certain ways; 17 | b) reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software, except and to the extent required by third party licensing terms governing use of certain open source components that may be included in the software; 18 | c) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software; 19 | d) use the software in any way that is against the law or to create or propagate malware; 20 | e) share, publish, distribute, or lease the software; or 21 | f) provide the software as a stand-alone offering or combine it with any of your applications for others to use, or transfer the software or this agreement to any third party. 22 | 6. DATA. 23 | a) Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the software documentation. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft’s privacy statement. Our privacy statement is located at https://aka.ms/privacy. You can learn more about data collection and its use from the software documentation and our privacy statement. Your use of the software operates as your consent to these practices. 24 | b) Processing of Personal Data. To the extent Microsoft is a processor or subprocessor of personal data in connection with the software, Microsoft makes the commitments in the European Union General Data Protection Regulation Terms of the Microsoft Products and Services Data Protection Addendum to all customers effective May 25, 2018, at https://docs.microsoft.com/legal/gdpr. 25 | 7. EXPORT RESTRICTIONS. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting. 26 | 8. SUPPORT SERVICES. Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind. 27 | 9. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software. 28 | 10. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles. If you acquired the software in any other country, its laws apply. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court. If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court. 29 | 11. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: 30 | a) Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. 31 | b) Canada. If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. 32 | c) Germany and Austria. 33 | i. Warranty. The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. 34 | ii. Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law. 35 | Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence. 36 | 12. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 37 | 13. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. 38 | This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law. 39 | It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages. 40 | 41 | Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French. 42 | Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. 43 | EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. 44 | LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. 45 | Cette limitation concerne: 46 | • tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et 47 | • les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. 48 | Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. 49 | EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Data Wrangler Extension for Visual Studio Code 2 | 3 | [Data Wrangler](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.datawrangler) is a code-centric data viewing and cleaning tool that is integrated into VS Code and VS Code Jupyter Notebooks. It provides a rich user interface to view and analyze your data, show insightful column statistics and visualizations, and automatically generate Pandas code as you clean and transform the data. 4 | 5 | The following is an example of opening Data Wrangler from the notebook to analyze and clean the data with the built-in operations. Then the automatically generated code is exported back into the notebook. 6 | 7 | ![a gif of opening Data Wrangler from a notebook, looking through the data, switching from Viewing to Editing mode, applying data transformations, and exporting the generated Python code back into the notebook](https://github.com/microsoft/vscode-docs/assets/15910920/1a6d8fd1-6454-4289-b8c4-fe84050ae981) 8 | 9 | The goal of this page is to help you quickly get up and running with Data Wrangler. 10 | 11 | ## Set up your environment 12 | 13 | 1. If you have not already done so, install [Python](https://www.python.org/downloads/) 14 | (**Note:** Data Wrangler only supports Python version 3.8 or higher). 15 | 2. Install the Data Wrangler extension 16 | 17 | When you launch Data Wrangler for the first time, it asks you which Python kernel you would like to connect to. It also checks your machine and environment to see if the required Python packages are installed, such as Pandas. 18 | 19 | Note: to use a local Python interpreter as a runtime, you will need to first install both the [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) and [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) extensions. 20 | 21 | ## Open Data Wrangler 22 | 23 | Anytime you are in Data Wrangler, you are in a _sandboxed_ environment, meaning you are able to safely explore and transform the data. The original dataset is not modified until you explicitly export your changes. 24 | 25 | ### Launch Data Wrangler from a Jupyter Notebook 26 | 27 | If you have a Pandas data frame in your notebook, you’ll now see an **Open 'df' in Data Wrangler** button (where `df` is the variable name of your data frame) appear in bottom of the cell after running any of `df.head()`, `df.tail()`, `display(df)`, `print(df)`, and `df`. 28 | 29 | ![a screenshot showing the entry point into Data Wrangler from a notebook](https://github.com/microsoft/vscode-docs/assets/15910920/3d971723-d57a-4dd6-8bb9-6200777b3573) 30 | 31 | ### Launch Data Wrangler directly from a file 32 | 33 | You can also launch Data Wrangler directly from a local file (such as a `.csv`). To do so, open any folder in VS Code that contains the file you’d like to open. In the File Explorer view, right click the file and click **Open in Data Wrangler**. 34 | 35 | ![a screenshot showing the entry point into Data Wrangler from a file](https://github.com/microsoft/vscode-docs/assets/15910920/517e1e29-ba45-4e24-87fb-adb53a6207f1) 36 | 37 | ## UI tour 38 | 39 | Data Wrangler has two modes when working with your data. The details for each mode are explained in the subsequent sections below. 40 | 41 | 1. **Viewing mode:** The viewing mode optimizes the interface for you to quickly view, filter and sort your data. This mode is great for doing initial exploration on the dataset. 42 | 2. **Editing mode:** The Editing mode optimizes the interface for you to apply transformations, cleaning, or modifications to your dataset. As you apply these transformations in the interface, Data Wrangler automatically generates the relevant Pandas code, and this can be exported back into your notebook for reuse. 43 | 44 | Note: For notebook files, Data Wrangler opens by default in the Viewing mode. You can change this behavior in the Settings editor `kb(workbench.settings.dataWrangler.startInEditModeForNotebookEntrypoints)`. For other file types, the current default is Editing mode only. 45 | 46 | ### Viewing mode interface 47 | 48 | ![a screenshot showing the different components in the UI for Data Wrangler in Viewing mode](https://github.com/microsoft/vscode-docs/assets/15910920/16d7d4d9-63e8-459f-9b7c-5bb1908b245d) 49 | 50 | 1. The **Data Summary** panel shows detailed summary statistics for your overall dataset or a specific column, if one is selected. 51 | 52 | 2. You can apply any **Data Filters/Sorts** on the column from the header menu of the column. 53 | 54 | 3. Toggle between the **Viewing** or **Editing** mode of Data Wrangler to access the built-in data operations. 55 | 56 | 4. The **Quick Insights** header is where you can quickly see valuable information about each column. Depending on the datatype of the column, quick insights shows the distribution of the data or the frequency of datapoints, as well as missing and distinct values. 57 | 58 | 5. The **Data Grid** gives you a scrollable pane where you can view your entire dataset. 59 | 60 | --- 61 | 62 | ### Editing mode interface 63 | 64 | Switching to Editing mode enables additional functionality and user interface elements in Data Wrangler. In the following screenshot, we use Data Wrangler to replace the missing values in the last column with the median of that column. 65 | 66 | ![a screenshot showing the different components in the UI for Data Wrangler in Editing mode](https://github.com/microsoft/vscode-docs/assets/15910920/8ec458aa-556d-4f03-beda-c86898d97112) 67 | 68 | 1. The **Operations** panel is where you can search through all of Data Wrangler’s built-in data operations. The operations are organized by category. 69 | 70 | 2. The **Cleaning Steps** panel shows a list of all the operations that have been previously applied. It enables the user to undo specific operations or edit the _most recent_ operation. Selecting a step will highlight the changes in the data grid and will show the generated code associated with that operation. 71 | 72 | 3. The **Export Menu** lets you export the code back into a Jupyter Notebook or export the data into a new file. 73 | 74 | 4. When you have an operation selected and are previewing its effects on the data, the grid is overlayed with a **data diff** view of the changes you made to the data. 75 | 76 | 5. The **Code Preview** section shows the Python and Pandas code that Data Wrangler has generated when an operation is selected. It remains empty when no operation is selected. You can edit the generated code, which results in the data grid highlighting the effects on the data. 77 | 78 | ## Example: Replace missing values in your dataset 79 | 80 | Given a dataset, one of the common data cleaning tasks is to handle any missing values that lie within the data. The example below shows how Data Wrangler can be used to replace the missing values in a column with the median value of that column. While the transformation is done through the interface, Data Wrangler also automatically generates the Python and Pandas code required for the replacement of missing values. 81 | 82 | ![an example of using Data Wrangler to replace missing values in your dataset](https://github.com/microsoft/vscode-docs/assets/15910920/2235a291-e26f-4741-b5fc-bd570c8f66d1) 83 | 84 | 1. In the **Operations Panel**, search for the **Fill Missing Values** operation. 85 | 2. Specify in the parameters what you would like to replace the missing values with. In this case, we will be replacing the missing values with the median value for the column. 86 | 3. Validate that the data grid is showing you the correct changes in the data diff. 87 | 4. Validate that the code generated by Data Wrangler is what you intended. 88 | 5. Apply the operation and it will be added to your cleaning steps history. 89 | 90 | # Next steps 91 | 92 | This page covered how to quickly get started with Data Wrangler. For the full documentation and tutorial of Data Wrangler, including all the built-in operations that Data Wrangler currently supports, please see the following page. 93 | 94 | [Working with Data Wrangler](https://code.visualstudio.com/docs/datascience/data-wrangler) 95 | 96 | ## Questions and feedback 97 | 98 | If you have problems, have feature requests, or any other feedback, please submit an Issue on our GitHub repository: [https://github.com/microsoft/vscode-data-wrangler/issues/new/choose](https://github.com/microsoft/vscode-data-wrangler/issues/new/choose) 99 | 100 | ## Data and telemetry 101 | 102 | The Microsoft Data Wrangler Extension for Visual Studio Code collects usage data and sends it to Microsoft to help improve our products and services. Read our [privacy statement](https://go.microsoft.com/fwlink/?LinkId=521839) to learn more. This extension respects the `telemetry.telemetryLevel` setting which you can learn more about at https://code.visualstudio.com/docs/getstarted/telemetry. 103 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). 40 | 41 | 42 | --------------------------------------------------------------------------------